Skip to main content

Gofer - Dependencies

Executive Summary

Gofer has three dependency categories:

  1. Production Dependencies (npm packages) - 8 core packages
  2. Development Dependencies - packages for build, test, lint, and release
  3. External Service Dependencies - optional AI assistant CLIs and hosted services

All dependencies are managed via npm with lock files for reproducible builds. External services are optional and user-configured.

Upstream Dependencies (Services This Repo Calls)

External Services (Optional)

ServicePurposeAuthenticationRate LimitCriticality
Claude Code CLIClaude routes from the Gofer model policyProvider CLI login/sessionProvider/account dependentOptional
Gemini CLIGemini routes from the Gofer model policyProvider CLI login/sessionProvider/account dependentOptional
OpenAI Codex CLICodex/OpenAI routes from the Gofer model policyProvider CLI login/sessionProvider/account dependentOptional
GitHub APIAuto-update checkingNo auth (public API)60 req/hour (unauthenticated)Optional

VS Code Platform

ServicePurposeVersionCriticality
VS Code Extension APIExtension host, commands, views, LSP1.93.0+Required
VS Code Language Server ProtocolCommunication with language server9.0.1Required
VS Code MCP BridgeMCP tool exposure to AI assistants1.102+ (experimental)Core

Downstream Dependents (Services That Call This Repo)

AI Assistant CLIs

AssistantIntegration MethodTool AccessStatus
Claude Code CLIMCP via LSP22+ tools (direct invocation)Primary
GitHub Copilot ChatPrompt files (.github/prompts/)Indirect (files only)Core
OpenAI Codex CLISkill files (.agents/skills/)Indirect (files only)Core
Gemini CLICommand files (.gemini/commands/gofer/)Indirect (files only)Core

VS Code Extension Consumers

ConsumerIntegrationPurpose
VS Code UserDirect installationPrimary user interface
GitHub CodespacesAuto-installationCloud development environment

Production npm Dependencies

Core Runtime Dependencies

PackageVersionPurposeLicense
chokidar4.0.3File system watching for spec changesMIT
dotenv16.6.1Environment variable loadingBSD-2-Clause
gray-matter4.0.3YAML frontmatter parsing for specsMIT
reflect-metadata0.2.2TypeScript decorator metadataApache-2.0
tsyringe4.10.0Dependency injection containerMIT
winston3.19.0Logging frameworkMIT
ws8.21.0WebSocket supportMIT
zod3.25.76Schema validation for MCP toolsMIT

Total Production Dependencies: 8 packages

Extension-Specific Dependencies

Additional dependencies in extension/package.json:

PackageVersionPurposeLicense
@lydell/node-pty1.2.0-beta.3Pseudo-terminal integrationMIT
ajv8.18.0JSON schema validationMIT
body-parser2.2.2Local HTTP request parsingMIT
chokidar3.6.0Extension-side file watchingMIT
express5.2.1Local service endpointsMIT
fast-glob3.3.3Resource discoveryMIT
fix-path4.0.0macOS PATH normalizationMIT
graphlib2.1.8Task dependency graph resolutionMIT
jszip3.10.1ZIP/resource packagingMIT/GPL
node-pty-prebuilt-multiarch0.10.1-pre.5Terminal fallback supportMIT
reflect-metadata0.2.2TypeScript decorator metadataApache-2.0
tsyringe4.10.0Dependency injection containerMIT
uuid11.1.1Observation ID generationMIT
vscode-languageclient9.0.1Language server clientMIT
ws8.21.0WebSocket supportMIT

Development Dependencies

Build & Compilation

PackageVersionPurpose
typescript5.9.3TypeScript compiler
tsx4.21.0TypeScript execution for scripts
@types/node22.19.15Node.js type definitions

Testing

PackageVersionPurpose
vitest3.2.4Test runner (unit & integration)
@vitest/ui3.2.4Vitest UI for test visualization
@vitest/coverage-v83.2.4Coverage reporting
@playwright/test1.58.2E2E testing framework
@vscode/test-cli0.0.12VS Code extension testing CLI
@vscode/test-electron2.5.2VS Code extension test runner

Linting & Formatting

PackageVersionPurpose
eslint9.39.4JavaScript/TypeScript linter
@eslint/js9.39.4ESLint JavaScript rules
typescript-eslint8.56.1TypeScript ESLint plugin
@typescript-eslint/parser8.56.1TypeScript parser for ESLint
@typescript-eslint/eslint-plugin8.56.1TypeScript ESLint rules
prettier3.8.1Code formatter
lint-staged16.3.2Run linters on staged files
husky9.1.7Git hooks

Optional Development APIs

Gofer no longer keeps direct provider SDKs as development dependencies. Tests that exercise provider behavior use CLI-provider seams and local fixtures.

Development dependency counts are tracked by the npm manifests and lock files.

Dependency Diagram

graph LR
subgraph "Gofer Extension"
Ext["Extension<br/>(extension/)"]
LS["Language Server<br/>(language-server/)"]
Orch["Orchestrator<br/>(src/)"]
end

subgraph "AI Assistants"
Claude["Claude Code CLI"]
Copilot["GitHub Copilot"]
Codex["OpenAI Codex"]
Gemini["Gemini CLI"]
end

subgraph "External Services"
ClaudeCLI["Claude Code CLI"]
GeminiCLI["Gemini CLI"]
CodexCLI["OpenAI Codex CLI"]
GitHubAPI["GitHub API"]
end

subgraph "VS Code Platform"
VSCodeAPI["VS Code Extension API"]
LSPAPI["Language Server Protocol"]
end

subgraph "npm Packages"
tsyringe["tsyringe<br/>(DI)"]
winston["winston<br/>(logging)"]
zod["zod<br/>(validation)"]
chokidar["chokidar<br/>(file watch)"]
graphlib["graphlib<br/>(task graph)"]
end

Ext --> VSCodeAPI
Ext --> LSPAPI
Ext --> tsyringe
Ext --> winston
Ext --> graphlib

LS --> LSPAPI
LS --> zod
LS --> chokidar

Claude -->|MCP Tools| LS
Copilot -->|Prompt Files| Ext
Codex -->|Skill Files| Ext
Gemini -->|Command Files| Ext

Ext -.->|Optional| GitHubAPI
Claude -.->|Provider account| ClaudeCLI
Codex -.->|Provider account| CodexCLI
Gemini -.->|Provider account| GeminiCLI

Dependency Update Strategy

Automated Updates

  • Renovate Bot: Configured for automated dependency PRs
  • Frequency: Weekly scans
  • Auto-Merge: Patch updates only (after CI passes)
  • Major Updates: Manual review required

Security Updates

  • npm audit: Run during CI pipeline
  • GitHub Dependabot: Security alerts enabled
  • Response Time: < 48 hours for critical vulnerabilities

Version Constraints

  • Production: Pin to specific versions (zod@3.25.76)
  • Development: Allow minor updates (vitest@^3.2.4)
  • VS Code API: Minimum version (^1.93.0)

Dependency Overrides

Security and compatibility overrides in package.json:

{
"overrides": {
"diff": "^8.0.3", // Security fix for CVE
"postcss": "^8.5.10", // Security fix
"serialize-javascript": "^7.0.0" // Security fix
}
}

Critical Dependency Risks

AI Assistant CLIs

  • Risk: CLI output, auth flows, or model availability can change
  • Mitigation: Keep provider routing behind CLI adapters and validate through integration tests
  • Fallback: Surface clear install/login guidance and let users choose a different configured CLI

VS Code Extension API

  • Risk: Minimum version compatibility
  • Mitigation: Test against VS Code 1.93.0+ in CI
  • Fallback: Document minimum required version

tsyringe (Dependency Injection)

  • Risk: Core service lifecycle management
  • Mitigation: Extensive unit tests, DI abstraction layer
  • Fallback: Manual service initialization (deprecated)

chokidar (File Watching)

  • Risk: File system event reliability
  • Mitigation: Debounce events, cache with TTL
  • Fallback: Manual refresh commands

License Compliance

All production and development dependencies use permissive licenses:

  • MIT: 90% of dependencies
  • Apache-2.0: reflect-metadata
  • BSD-2-Clause: dotenv

No copyleft licenses (GPL, AGPL) are used.

Dependency Size Analysis

Production Bundle Size

  • Extension: ~10MB (VSIX package)
  • Agent Plugin: ~500KB (ZIP)
  • Language Server: ~2MB (bundled in extension)

node_modules Size

  • Production: ~50MB
  • Development: ~300MB

Removal & Deprecation

Recently Removed

  • node-pty-prebuilt-multiarch (v3.0) - Removed due to native dependency issues, replaced with WebSocket terminal

Deprecated

  • .specify/memory/memories.jsonl (flat memory) - Replaced by layered memory system (opt-in migration)

Planned Removal

  • src/orchestrator/ (CLI-based orchestrator) - Replaced by extension-based ACCOrchestrator

Installation Requirements

Minimum Node.js Version

  • Node.js: 24.x (LTS)
  • npm: 9.x or 10.x

VS Code Version

  • Minimum: 1.93.0
  • Recommended: Latest stable

Operating System

  • Windows: 10/11 (x64, arm64)
  • macOS: 11+ (x64, arm64)
  • Linux: Ubuntu 20.04+, Debian 11+, RHEL 8+

Troubleshooting

Issue: npm install fails

  • Cause: Node.js version mismatch or npm cache corruption
  • Fix:
    rm -rf node_modules package-lock.json
    nvm use 24
    npm install

Issue: Extension fails to activate

  • Cause: Missing reflect-metadata import
  • Fix: Ensure import 'reflect-metadata'; is first import in extension.ts

Issue: MCP tools not working

  • Cause: Language server not starting or Zod validation failure
  • Fix: Check VS Code Output → "Gofer" for errors, verify params match schema