feat(2.0)!: split voice into @open-gitagent/voice, drop unused deps#56
Merged
Conversation
A hosted dev sandbox blocks every published version (1.5.0–1.5.2 and the
predecessor gitclaw 0.5.0–1.4.1) with HTTP 403 on the tarball fetch. The
trigger is inside the bundle, not the dep tree. Two contributors plus a
user directive to make voice opt-in point to one fix: split the package
so voice is a separate optional install, drop unused deps, and shrink
the surface scanners actually see.
What's in the core (this commit):
- Bump 1.5.2 -> 2.0.0 (semver-major because gitagent --voice no longer
works on a fresh install of just core)
- Drop baileys (declared but never imported), ws (voice-only),
@googleworkspace/cli (unused) from dependencies. Drop @types/ws too.
- Tighten the 'files' allowlist to exclude dist/voice/ and dist/composio/
- Move shared types/utilities from src/voice/ into the core surface:
src/voice/adapter.ts -> src/adapter.ts
src/voice/chat-history.ts -> src/chat-history.ts
- Remove src/voice/* and src/composio/* (all voice-only).
- Re-export the symbols the voice package needs (context, skills,
workflows, schedules, schedule-runner, chat history, adapter types,
DEFAULT_VOICE_INSTRUCTIONS) from src/exports.ts.
- --voice in src/index.ts now dynamic-imports @open-gitagent/voice and
prints an install hint if missing.
install.sh defaults to installing both packages (curl-bash UX is
unchanged); GITAGENT_SLIM=1 opts into a core-only install for sandboxed
or CI environments.
README + Documentation updated with the migration note and the new
two-line install.
Results:
- Tarball 179.5 kB -> 85.7 kB packed (-52%), 752 kB -> 343 kB unpacked
(-54%), 124 files -> 109. Zero dist/voice/* or dist/composio/* in the
tarball. node_modules dep count 310 -> 211.
- tsc clean; 27/27 tests pass.
The matching voice package (@open-gitagent/voice) ships separately.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A hosted dev sandbox blocks every published version of
@open-gitagent/gitagent(1.5.0–1.5.2 and the predecessorgitclaw0.5.0–1.4.1) with HTTP 403 on the tarball fetch — the supply-chain scanner between sandbox and registry refuses the bundle. Metadata for the ~710-package dep tree resolves fine; only the.tgzis refused. The trigger is inside the published contents.Audit surfaced two pure wins regardless of the scanner, plus the user-requested directive:
baileysis declared independenciesbut never imported from source — dead weight pulling in ~100 transitive packages.dist/voice/ui.html(~3,860 LOC of mixed HTML/JS/CSS, ~200 kB) ships in every tarball — exactly the shape supply-chain scanners flag.These three point to one fix: split the package so voice is a separate optional install, drop the dead deps, and shrink the surface scanners see.
What changed in core (this PR)
1.5.2→2.0.0(semver-major:gitagent --voiceno longer works on a fresh core-only install).baileys(unused),ws(voice-only),@googleworkspace/cli(unused),@types/wsfrom devDeps.filesallowlist to excludedist/voice/anddist/composio/.src/voice/so non-voice modules can still use them:src/voice/adapter.ts→src/adapter.ts(pure types +DEFAULT_VOICE_INSTRUCTIONS)src/voice/chat-history.ts→src/chat-history.ts(persistence; used bycontext.tsfor recent-chat context)src/voice/*andsrc/composio/*(all voice-only).src/exports.tsthe symbols@open-gitagent/voiceneeds as a peer: context helpers, skills, workflows, schedules, schedule-runner, chat history, adapter types.--voiceinsrc/index.tsnowawait import("@open-gitagent/voice")dynamically and prints a clear install hint if missing.install.sh + docs
install.shinstalls both packages by default (curl-bash UX unchanged).GITAGENT_SLIM=1opts into a core-only install for sandboxed/CI environments.Documentation.mdinstall snippet updated.Results
dist/voice/*entriesdist/composio/*entriestscclean.npm test— 27/27 pass.Follow-up
The matching
@open-gitagent/voice@1.0.0package ships from a separate repo (next PR / new repo). Once it's published,npm install -g @open-gitagent/voiceadds voice back. The--voiceinstall hint in core points users straight there.🤖 Generated with Claude Code