@anthropic-field/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.last_build +0 -0
- package/dist/docs/architecture.md +80 -0
- package/dist/docs/assets/connected_devtools.png +0 -0
- package/dist/docs/assets/gemini-screenshot.png +0 -0
- package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
- package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
- package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
- package/dist/docs/assets/release_patch.png +0 -0
- package/dist/docs/assets/theme-ansi-light.png +0 -0
- package/dist/docs/assets/theme-ansi.png +0 -0
- package/dist/docs/assets/theme-atom-one.png +0 -0
- package/dist/docs/assets/theme-ayu-light.png +0 -0
- package/dist/docs/assets/theme-ayu.png +0 -0
- package/dist/docs/assets/theme-custom.png +0 -0
- package/dist/docs/assets/theme-default-light.png +0 -0
- package/dist/docs/assets/theme-default.png +0 -0
- package/dist/docs/assets/theme-dracula.png +0 -0
- package/dist/docs/assets/theme-github-light.png +0 -0
- package/dist/docs/assets/theme-github.png +0 -0
- package/dist/docs/assets/theme-google-light.png +0 -0
- package/dist/docs/assets/theme-xcode-light.png +0 -0
- package/dist/docs/changelogs/index.md +743 -0
- package/dist/docs/changelogs/latest.md +338 -0
- package/dist/docs/changelogs/preview.md +437 -0
- package/dist/docs/cli/authentication.md +3 -0
- package/dist/docs/cli/checkpointing.md +94 -0
- package/dist/docs/cli/cli-reference.md +101 -0
- package/dist/docs/cli/commands.md +430 -0
- package/dist/docs/cli/creating-skills.md +80 -0
- package/dist/docs/cli/custom-commands.md +315 -0
- package/dist/docs/cli/enterprise.md +565 -0
- package/dist/docs/cli/gemini-ignore.md +71 -0
- package/dist/docs/cli/gemini-md.md +108 -0
- package/dist/docs/cli/generation-settings.md +210 -0
- package/dist/docs/cli/headless.md +388 -0
- package/dist/docs/cli/index.md +65 -0
- package/dist/docs/cli/keyboard-shortcuts.md +140 -0
- package/dist/docs/cli/model-routing.md +42 -0
- package/dist/docs/cli/model.md +62 -0
- package/dist/docs/cli/rewind.md +51 -0
- package/dist/docs/cli/sandbox.md +171 -0
- package/dist/docs/cli/session-management.md +158 -0
- package/dist/docs/cli/settings.md +139 -0
- package/dist/docs/cli/skills.md +112 -0
- package/dist/docs/cli/system-prompt.md +125 -0
- package/dist/docs/cli/telemetry.md +826 -0
- package/dist/docs/cli/themes.md +235 -0
- package/dist/docs/cli/token-caching.md +20 -0
- package/dist/docs/cli/trusted-folders.md +95 -0
- package/dist/docs/cli/tutorials/skills-getting-started.md +97 -0
- package/dist/docs/cli/tutorials.md +87 -0
- package/dist/docs/cli/uninstall.md +65 -0
- package/dist/docs/core/index.md +107 -0
- package/dist/docs/core/memport.md +246 -0
- package/dist/docs/core/policy-engine.md +305 -0
- package/dist/docs/core/remote-agents.md +84 -0
- package/dist/docs/core/subagents.md +191 -0
- package/dist/docs/core/tools-api.md +131 -0
- package/dist/docs/examples/proxy-script.md +83 -0
- package/dist/docs/extensions/best-practices.md +139 -0
- package/dist/docs/extensions/index.md +45 -0
- package/dist/docs/extensions/reference.md +336 -0
- package/dist/docs/extensions/releasing.md +183 -0
- package/dist/docs/extensions/writing-extensions.md +281 -0
- package/dist/docs/faq.md +154 -0
- package/dist/docs/get-started/authentication.md +321 -0
- package/dist/docs/get-started/configuration-v1.md +888 -0
- package/dist/docs/get-started/configuration.md +1585 -0
- package/dist/docs/get-started/examples.md +219 -0
- package/dist/docs/get-started/gemini-3.md +101 -0
- package/dist/docs/get-started/index.md +71 -0
- package/dist/docs/get-started/installation.md +141 -0
- package/dist/docs/hooks/best-practices.md +677 -0
- package/dist/docs/hooks/index.md +164 -0
- package/dist/docs/hooks/reference.md +322 -0
- package/dist/docs/hooks/writing-hooks.md +450 -0
- package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
- package/dist/docs/ide-integration/index.md +202 -0
- package/dist/docs/index.md +149 -0
- package/dist/docs/integration-tests.md +211 -0
- package/dist/docs/issue-and-pr-automation.md +134 -0
- package/dist/docs/local-development.md +128 -0
- package/dist/docs/mermaid/context.mmd +103 -0
- package/dist/docs/mermaid/render-path.mmd +64 -0
- package/dist/docs/npm.md +62 -0
- package/dist/docs/quota-and-pricing.md +158 -0
- package/dist/docs/release-confidence.md +164 -0
- package/dist/docs/releases.md +540 -0
- package/dist/docs/sidebar.json +152 -0
- package/dist/docs/tools/file-system.md +217 -0
- package/dist/docs/tools/index.md +98 -0
- package/dist/docs/tools/mcp-server.md +1079 -0
- package/dist/docs/tools/memory.md +54 -0
- package/dist/docs/tools/shell.md +260 -0
- package/dist/docs/tools/todos.md +57 -0
- package/dist/docs/tools/web-fetch.md +59 -0
- package/dist/docs/tools/web-search.md +42 -0
- package/dist/docs/tos-privacy.md +96 -0
- package/dist/docs/troubleshooting.md +173 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/src/__mocks__/fs/promises.d.ts +11 -0
- package/dist/src/__mocks__/fs/promises.js +17 -0
- package/dist/src/__mocks__/fs/promises.js.map +1 -0
- package/dist/src/agents/a2a-client-manager.d.ts +77 -0
- package/dist/src/agents/a2a-client-manager.js +173 -0
- package/dist/src/agents/a2a-client-manager.js.map +1 -0
- package/dist/src/agents/a2aUtils.d.ts +29 -0
- package/dist/src/agents/a2aUtils.js +113 -0
- package/dist/src/agents/a2aUtils.js.map +1 -0
- package/dist/src/agents/acknowledgedAgents.d.ts +18 -0
- package/dist/src/agents/acknowledgedAgents.js +58 -0
- package/dist/src/agents/acknowledgedAgents.js.map +1 -0
- package/dist/src/agents/agent-scheduler.d.ts +33 -0
- package/dist/src/agents/agent-scheduler.js +29 -0
- package/dist/src/agents/agent-scheduler.js.map +1 -0
- package/dist/src/agents/agentLoader.d.ts +73 -0
- package/dist/src/agents/agentLoader.js +268 -0
- package/dist/src/agents/agentLoader.js.map +1 -0
- package/dist/src/agents/cli-help-agent.d.ts +24 -0
- package/dist/src/agents/cli-help-agent.js +80 -0
- package/dist/src/agents/cli-help-agent.js.map +1 -0
- package/dist/src/agents/codebase-investigator.d.ts +47 -0
- package/dist/src/agents/codebase-investigator.js +159 -0
- package/dist/src/agents/codebase-investigator.js.map +1 -0
- package/dist/src/agents/generalist-agent.d.ts +21 -0
- package/dist/src/agents/generalist-agent.js +60 -0
- package/dist/src/agents/generalist-agent.js.map +1 -0
- package/dist/src/agents/local-executor.d.ts +110 -0
- package/dist/src/agents/local-executor.js +879 -0
- package/dist/src/agents/local-executor.js.map +1 -0
- package/dist/src/agents/local-invocation.d.ts +45 -0
- package/dist/src/agents/local-invocation.js +101 -0
- package/dist/src/agents/local-invocation.js.map +1 -0
- package/dist/src/agents/registry.d.ts +85 -0
- package/dist/src/agents/registry.js +374 -0
- package/dist/src/agents/registry.js.map +1 -0
- package/dist/src/agents/remote-invocation.d.ts +35 -0
- package/dist/src/agents/remote-invocation.js +127 -0
- package/dist/src/agents/remote-invocation.js.map +1 -0
- package/dist/src/agents/subagent-tool-wrapper.d.ts +38 -0
- package/dist/src/agents/subagent-tool-wrapper.js +51 -0
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
- package/dist/src/agents/subagent-tool.d.ts +15 -0
- package/dist/src/agents/subagent-tool.js +61 -0
- package/dist/src/agents/subagent-tool.js.map +1 -0
- package/dist/src/agents/types.d.ts +154 -0
- package/dist/src/agents/types.js +23 -0
- package/dist/src/agents/types.js.map +1 -0
- package/dist/src/agents/utils.d.ts +15 -0
- package/dist/src/agents/utils.js +29 -0
- package/dist/src/agents/utils.js.map +1 -0
- package/dist/src/availability/errorClassification.d.ts +7 -0
- package/dist/src/availability/errorClassification.js +20 -0
- package/dist/src/availability/errorClassification.js.map +1 -0
- package/dist/src/availability/modelAvailabilityService.d.ts +36 -0
- package/dist/src/availability/modelAvailabilityService.js +87 -0
- package/dist/src/availability/modelAvailabilityService.js.map +1 -0
- package/dist/src/availability/modelPolicy.d.ts +49 -0
- package/dist/src/availability/modelPolicy.js +7 -0
- package/dist/src/availability/modelPolicy.js.map +1 -0
- package/dist/src/availability/policyCatalog.d.ts +24 -0
- package/dist/src/availability/policyCatalog.js +106 -0
- package/dist/src/availability/policyCatalog.js.map +1 -0
- package/dist/src/availability/policyHelpers.d.ts +52 -0
- package/dist/src/availability/policyHelpers.js +143 -0
- package/dist/src/availability/policyHelpers.js.map +1 -0
- package/dist/src/availability/testUtils.d.ts +10 -0
- package/dist/src/availability/testUtils.js +22 -0
- package/dist/src/availability/testUtils.js.map +1 -0
- package/dist/src/code_assist/admin/admin_controls.d.ts +32 -0
- package/dist/src/code_assist/admin/admin_controls.js +120 -0
- package/dist/src/code_assist/admin/admin_controls.js.map +1 -0
- package/dist/src/code_assist/codeAssist.d.ts +12 -0
- package/dist/src/code_assist/codeAssist.js +31 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -0
- package/dist/src/code_assist/converter.d.ts +75 -0
- package/dist/src/code_assist/converter.js +161 -0
- package/dist/src/code_assist/converter.js.map +1 -0
- package/dist/src/code_assist/experiments/client_metadata.d.ts +12 -0
- package/dist/src/code_assist/experiments/client_metadata.js +51 -0
- package/dist/src/code_assist/experiments/client_metadata.js.map +1 -0
- package/dist/src/code_assist/experiments/experiments.d.ts +17 -0
- package/dist/src/code_assist/experiments/experiments.js +57 -0
- package/dist/src/code_assist/experiments/experiments.js.map +1 -0
- package/dist/src/code_assist/experiments/flagNames.d.ts +16 -0
- package/dist/src/code_assist/experiments/flagNames.js +16 -0
- package/dist/src/code_assist/experiments/flagNames.js.map +1 -0
- package/dist/src/code_assist/experiments/types.d.ts +35 -0
- package/dist/src/code_assist/experiments/types.js +7 -0
- package/dist/src/code_assist/experiments/types.js.map +1 -0
- package/dist/src/code_assist/oauth-credential-storage.d.ts +25 -0
- package/dist/src/code_assist/oauth-credential-storage.js +109 -0
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -0
- package/dist/src/code_assist/oauth2.d.ts +25 -0
- package/dist/src/code_assist/oauth2.js +579 -0
- package/dist/src/code_assist/oauth2.js.map +1 -0
- package/dist/src/code_assist/server.d.ts +50 -0
- package/dist/src/code_assist/server.js +228 -0
- package/dist/src/code_assist/server.js.map +1 -0
- package/dist/src/code_assist/setup.d.ts +46 -0
- package/dist/src/code_assist/setup.js +179 -0
- package/dist/src/code_assist/setup.js.map +1 -0
- package/dist/src/code_assist/telemetry.d.ts +14 -0
- package/dist/src/code_assist/telemetry.js +157 -0
- package/dist/src/code_assist/telemetry.js.map +1 -0
- package/dist/src/code_assist/types.d.ts +306 -0
- package/dist/src/code_assist/types.js +94 -0
- package/dist/src/code_assist/types.js.map +1 -0
- package/dist/src/cognitive/gemini-adapter.d.ts +29 -0
- package/dist/src/cognitive/gemini-adapter.js +109 -0
- package/dist/src/cognitive/gemini-adapter.js.map +1 -0
- package/dist/src/cognitive/index.d.ts +22 -0
- package/dist/src/cognitive/index.js +50 -0
- package/dist/src/cognitive/index.js.map +1 -0
- package/dist/src/cognitive/integration.d.ts +57 -0
- package/dist/src/cognitive/integration.js +103 -0
- package/dist/src/cognitive/integration.js.map +1 -0
- package/dist/src/cognitive/loader/index.d.ts +8 -0
- package/dist/src/cognitive/loader/index.js +9 -0
- package/dist/src/cognitive/loader/index.js.map +1 -0
- package/dist/src/cognitive/loader/module-loader.d.ts +67 -0
- package/dist/src/cognitive/loader/module-loader.js +369 -0
- package/dist/src/cognitive/loader/module-loader.js.map +1 -0
- package/dist/src/cognitive/runtime/envelope.d.ts +31 -0
- package/dist/src/cognitive/runtime/envelope.js +167 -0
- package/dist/src/cognitive/runtime/envelope.js.map +1 -0
- package/dist/src/cognitive/runtime/executor.d.ts +65 -0
- package/dist/src/cognitive/runtime/executor.js +245 -0
- package/dist/src/cognitive/runtime/executor.js.map +1 -0
- package/dist/src/cognitive/runtime/index.d.ts +12 -0
- package/dist/src/cognitive/runtime/index.js +18 -0
- package/dist/src/cognitive/runtime/index.js.map +1 -0
- package/dist/src/cognitive/runtime/prompt-builder.d.ts +34 -0
- package/dist/src/cognitive/runtime/prompt-builder.js +216 -0
- package/dist/src/cognitive/runtime/prompt-builder.js.map +1 -0
- package/dist/src/cognitive/runtime/repair-pass.d.ts +43 -0
- package/dist/src/cognitive/runtime/repair-pass.js +170 -0
- package/dist/src/cognitive/runtime/repair-pass.js.map +1 -0
- package/dist/src/cognitive/runtime/risk-aggregator.d.ts +39 -0
- package/dist/src/cognitive/runtime/risk-aggregator.js +90 -0
- package/dist/src/cognitive/runtime/risk-aggregator.js.map +1 -0
- package/dist/src/cognitive/tool/cognitive-registry.d.ts +99 -0
- package/dist/src/cognitive/tool/cognitive-registry.js +192 -0
- package/dist/src/cognitive/tool/cognitive-registry.js.map +1 -0
- package/dist/src/cognitive/tool/cognitive-tool.d.ts +56 -0
- package/dist/src/cognitive/tool/cognitive-tool.js +217 -0
- package/dist/src/cognitive/tool/cognitive-tool.js.map +1 -0
- package/dist/src/cognitive/tool/index.d.ts +9 -0
- package/dist/src/cognitive/tool/index.js +10 -0
- package/dist/src/cognitive/tool/index.js.map +1 -0
- package/dist/src/cognitive/types.d.ts +234 -0
- package/dist/src/cognitive/types.js +10 -0
- package/dist/src/cognitive/types.js.map +1 -0
- package/dist/src/cognitive/validator/envelope-validator.d.ts +45 -0
- package/dist/src/cognitive/validator/envelope-validator.js +214 -0
- package/dist/src/cognitive/validator/envelope-validator.js.map +1 -0
- package/dist/src/cognitive/validator/index.d.ts +9 -0
- package/dist/src/cognitive/validator/index.js +10 -0
- package/dist/src/cognitive/validator/index.js.map +1 -0
- package/dist/src/cognitive/validator/schema-validator.d.ts +46 -0
- package/dist/src/cognitive/validator/schema-validator.js +202 -0
- package/dist/src/cognitive/validator/schema-validator.js.map +1 -0
- package/dist/src/commands/cognitive.d.ts +39 -0
- package/dist/src/commands/cognitive.js +335 -0
- package/dist/src/commands/cognitive.js.map +1 -0
- package/dist/src/commands/extensions.d.ts +7 -0
- package/dist/src/commands/extensions.js +9 -0
- package/dist/src/commands/extensions.js.map +1 -0
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.js +53 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/memory.d.ts +11 -0
- package/dist/src/commands/memory.js +80 -0
- package/dist/src/commands/memory.js.map +1 -0
- package/dist/src/commands/restore.d.ts +9 -0
- package/dist/src/commands/restore.js +46 -0
- package/dist/src/commands/restore.js.map +1 -0
- package/dist/src/commands/types.d.ts +41 -0
- package/dist/src/commands/types.js +7 -0
- package/dist/src/commands/types.js.map +1 -0
- package/dist/src/config/config.d.ts +766 -0
- package/dist/src/config/config.js +1625 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/constants.d.ts +15 -0
- package/dist/src/config/constants.js +24 -0
- package/dist/src/config/constants.js.map +1 -0
- package/dist/src/config/defaultModelConfigs.d.ts +7 -0
- package/dist/src/config/defaultModelConfigs.js +231 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -0
- package/dist/src/config/models.d.ts +67 -0
- package/dist/src/config/models.js +144 -0
- package/dist/src/config/models.js.map +1 -0
- package/dist/src/config/storage.d.ts +44 -0
- package/dist/src/config/storage.js +139 -0
- package/dist/src/config/storage.js.map +1 -0
- package/dist/src/confirmation-bus/index.d.ts +7 -0
- package/dist/src/confirmation-bus/index.js +8 -0
- package/dist/src/confirmation-bus/index.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.d.ts +24 -0
- package/dist/src/confirmation-bus/message-bus.js +120 -0
- package/dist/src/confirmation-bus/message-bus.js.map +1 -0
- package/dist/src/confirmation-bus/types.d.ts +147 -0
- package/dist/src/confirmation-bus/types.js +25 -0
- package/dist/src/confirmation-bus/types.js.map +1 -0
- package/dist/src/core/apiKeyCredentialStorage.d.ts +17 -0
- package/dist/src/core/apiKeyCredentialStorage.js +64 -0
- package/dist/src/core/apiKeyCredentialStorage.js.map +1 -0
- package/dist/src/core/baseLlmClient.d.ts +74 -0
- package/dist/src/core/baseLlmClient.js +167 -0
- package/dist/src/core/baseLlmClient.js.map +1 -0
- package/dist/src/core/client.d.ts +59 -0
- package/dist/src/core/client.js +716 -0
- package/dist/src/core/client.js.map +1 -0
- package/dist/src/core/contentGenerator.d.ts +34 -0
- package/dist/src/core/contentGenerator.js +107 -0
- package/dist/src/core/contentGenerator.js.map +1 -0
- package/dist/src/core/coreToolHookTriggers.d.ts +23 -0
- package/dist/src/core/coreToolHookTriggers.js +195 -0
- package/dist/src/core/coreToolHookTriggers.js.map +1 -0
- package/dist/src/core/coreToolScheduler.d.ts +50 -0
- package/dist/src/core/coreToolScheduler.js +703 -0
- package/dist/src/core/coreToolScheduler.js.map +1 -0
- package/dist/src/core/fakeContentGenerator.d.ts +34 -0
- package/dist/src/core/fakeContentGenerator.js +59 -0
- package/dist/src/core/fakeContentGenerator.js.map +1 -0
- package/dist/src/core/geminiChat.d.ts +160 -0
- package/dist/src/core/geminiChat.js +744 -0
- package/dist/src/core/geminiChat.js.map +1 -0
- package/dist/src/core/geminiRequest.d.ts +13 -0
- package/dist/src/core/geminiRequest.js +11 -0
- package/dist/src/core/geminiRequest.js.map +1 -0
- package/dist/src/core/logger.d.ts +65 -0
- package/dist/src/core/logger.js +368 -0
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/core/loggingContentGenerator.d.ts +29 -0
- package/dist/src/core/loggingContentGenerator.js +202 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/prompts.d.ts +19 -0
- package/dist/src/core/prompts.js +27 -0
- package/dist/src/core/prompts.js.map +1 -0
- package/dist/src/core/recordingContentGenerator.d.ts +19 -0
- package/dist/src/core/recordingContentGenerator.js +82 -0
- package/dist/src/core/recordingContentGenerator.js.map +1 -0
- package/dist/src/core/tokenLimits.d.ts +10 -0
- package/dist/src/core/tokenLimits.js +22 -0
- package/dist/src/core/tokenLimits.js.map +1 -0
- package/dist/src/core/turn.d.ts +167 -0
- package/dist/src/core/turn.js +209 -0
- package/dist/src/core/turn.js.map +1 -0
- package/dist/src/fallback/handler.d.ts +7 -0
- package/dist/src/fallback/handler.js +110 -0
- package/dist/src/fallback/handler.js.map +1 -0
- package/dist/src/fallback/types.d.ts +31 -0
- package/dist/src/fallback/types.js +7 -0
- package/dist/src/fallback/types.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +7 -0
- package/dist/src/generated/git-commit.js +10 -0
- package/dist/src/generated/git-commit.js.map +1 -0
- package/dist/src/hooks/hookAggregator.d.ts +68 -0
- package/dist/src/hooks/hookAggregator.js +279 -0
- package/dist/src/hooks/hookAggregator.js.map +1 -0
- package/dist/src/hooks/hookEventHandler.d.ts +107 -0
- package/dist/src/hooks/hookEventHandler.js +325 -0
- package/dist/src/hooks/hookEventHandler.js.map +1 -0
- package/dist/src/hooks/hookPlanner.d.ts +42 -0
- package/dist/src/hooks/hookPlanner.js +103 -0
- package/dist/src/hooks/hookPlanner.js.map +1 -0
- package/dist/src/hooks/hookRegistry.d.ts +75 -0
- package/dist/src/hooks/hookRegistry.js +215 -0
- package/dist/src/hooks/hookRegistry.js.map +1 -0
- package/dist/src/hooks/hookRunner.d.ts +44 -0
- package/dist/src/hooks/hookRunner.js +329 -0
- package/dist/src/hooks/hookRunner.js.map +1 -0
- package/dist/src/hooks/hookSystem.d.ts +99 -0
- package/dist/src/hooks/hookSystem.js +262 -0
- package/dist/src/hooks/hookSystem.js.map +1 -0
- package/dist/src/hooks/hookTranslator.d.ts +113 -0
- package/dist/src/hooks/hookTranslator.js +233 -0
- package/dist/src/hooks/hookTranslator.js.map +1 -0
- package/dist/src/hooks/index.d.ts +16 -0
- package/dist/src/hooks/index.js +16 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/trustedHooks.d.ts +28 -0
- package/dist/src/hooks/trustedHooks.js +90 -0
- package/dist/src/hooks/trustedHooks.js.map +1 -0
- package/dist/src/hooks/types.d.ts +442 -0
- package/dist/src/hooks/types.js +303 -0
- package/dist/src/hooks/types.js.map +1 -0
- package/dist/src/ide/constants.d.ts +9 -0
- package/dist/src/ide/constants.js +10 -0
- package/dist/src/ide/constants.js.map +1 -0
- package/dist/src/ide/detect-ide.d.ts +109 -0
- package/dist/src/ide/detect-ide.js +125 -0
- package/dist/src/ide/detect-ide.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +113 -0
- package/dist/src/ide/ide-client.js +669 -0
- package/dist/src/ide/ide-client.js.map +1 -0
- package/dist/src/ide/ide-installer.d.ts +14 -0
- package/dist/src/ide/ide-installer.js +227 -0
- package/dist/src/ide/ide-installer.js.map +1 -0
- package/dist/src/ide/ideContext.d.ts +44 -0
- package/dist/src/ide/ideContext.js +101 -0
- package/dist/src/ide/ideContext.js.map +1 -0
- package/dist/src/ide/process-utils.d.ts +21 -0
- package/dist/src/ide/process-utils.js +181 -0
- package/dist/src/ide/process-utils.js.map +1 -0
- package/dist/src/ide/types.d.ts +486 -0
- package/dist/src/ide/types.js +138 -0
- package/dist/src/ide/types.js.map +1 -0
- package/dist/src/index.d.ts +145 -0
- package/dist/src/index.js +161 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp/auth-provider.d.ts +16 -0
- package/dist/src/mcp/auth-provider.js +7 -0
- package/dist/src/mcp/auth-provider.js.map +1 -0
- package/dist/src/mcp/google-auth-provider.d.ts +33 -0
- package/dist/src/mcp/google-auth-provider.js +118 -0
- package/dist/src/mcp/google-auth-provider.js.map +1 -0
- package/dist/src/mcp/oauth-provider.d.ts +160 -0
- package/dist/src/mcp/oauth-provider.js +729 -0
- package/dist/src/mcp/oauth-provider.js.map +1 -0
- package/dist/src/mcp/oauth-token-storage.d.ts +65 -0
- package/dist/src/mcp/oauth-token-storage.js +181 -0
- package/dist/src/mcp/oauth-token-storage.js.map +1 -0
- package/dist/src/mcp/oauth-utils.d.ts +142 -0
- package/dist/src/mcp/oauth-utils.js +289 -0
- package/dist/src/mcp/oauth-utils.js.map +1 -0
- package/dist/src/mcp/sa-impersonation-provider.d.ts +27 -0
- package/dist/src/mcp/sa-impersonation-provider.js +113 -0
- package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
- package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
- package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
- package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
- package/dist/src/mcp/token-storage/file-token-storage.js +145 -0
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/index.d.ts +11 -0
- package/dist/src/mcp/token-storage/index.js +12 -0
- package/dist/src/mcp/token-storage/index.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +35 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js +246 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/types.d.ts +44 -0
- package/dist/src/mcp/token-storage/types.js +11 -0
- package/dist/src/mcp/token-storage/types.js.map +1 -0
- package/dist/src/mocks/msw.d.ts +6 -0
- package/dist/src/mocks/msw.js +8 -0
- package/dist/src/mocks/msw.js.map +1 -0
- package/dist/src/output/json-formatter.d.ts +11 -0
- package/dist/src/output/json-formatter.js +33 -0
- package/dist/src/output/json-formatter.js.map +1 -0
- package/dist/src/output/stream-json-formatter.d.ts +32 -0
- package/dist/src/output/stream-json-formatter.js +58 -0
- package/dist/src/output/stream-json-formatter.js.map +1 -0
- package/dist/src/output/types.d.ts +85 -0
- package/dist/src/output/types.js +22 -0
- package/dist/src/output/types.js.map +1 -0
- package/dist/src/policy/config.d.ts +31 -0
- package/dist/src/policy/config.js +355 -0
- package/dist/src/policy/config.js.map +1 -0
- package/dist/src/policy/index.d.ts +9 -0
- package/dist/src/policy/index.js +10 -0
- package/dist/src/policy/index.js.map +1 -0
- package/dist/src/policy/policies/discovered.toml +8 -0
- package/dist/src/policy/policies/plan.toml +79 -0
- package/dist/src/policy/policies/read-only.toml +51 -0
- package/dist/src/policy/policies/write.toml +78 -0
- package/dist/src/policy/policies/yolo.toml +32 -0
- package/dist/src/policy/policy-engine.d.ts +65 -0
- package/dist/src/policy/policy-engine.js +357 -0
- package/dist/src/policy/policy-engine.js.map +1 -0
- package/dist/src/policy/stable-stringify.d.ts +58 -0
- package/dist/src/policy/stable-stringify.js +122 -0
- package/dist/src/policy/stable-stringify.js.map +1 -0
- package/dist/src/policy/toml-loader.d.ts +45 -0
- package/dist/src/policy/toml-loader.js +366 -0
- package/dist/src/policy/toml-loader.js.map +1 -0
- package/dist/src/policy/types.d.ts +220 -0
- package/dist/src/policy/types.js +44 -0
- package/dist/src/policy/types.js.map +1 -0
- package/dist/src/policy/utils.d.ts +21 -0
- package/dist/src/policy/utils.js +45 -0
- package/dist/src/policy/utils.js.map +1 -0
- package/dist/src/prompts/mcp-prompts.d.ts +8 -0
- package/dist/src/prompts/mcp-prompts.js +13 -0
- package/dist/src/prompts/mcp-prompts.js.map +1 -0
- package/dist/src/prompts/prompt-registry.d.ts +34 -0
- package/dist/src/prompts/prompt-registry.js +64 -0
- package/dist/src/prompts/prompt-registry.js.map +1 -0
- package/dist/src/prompts/promptProvider.d.ts +18 -0
- package/dist/src/prompts/promptProvider.js +129 -0
- package/dist/src/prompts/promptProvider.js.map +1 -0
- package/dist/src/prompts/snippets.d.ts +76 -0
- package/dist/src/prompts/snippets.js +455 -0
- package/dist/src/prompts/snippets.js.map +1 -0
- package/dist/src/prompts/utils.d.ts +23 -0
- package/dist/src/prompts/utils.js +72 -0
- package/dist/src/prompts/utils.js.map +1 -0
- package/dist/src/resources/resource-registry.d.ts +30 -0
- package/dist/src/resources/resource-registry.js +57 -0
- package/dist/src/resources/resource-registry.js.map +1 -0
- package/dist/src/routing/modelRouterService.d.ts +23 -0
- package/dist/src/routing/modelRouterService.js +80 -0
- package/dist/src/routing/modelRouterService.js.map +1 -0
- package/dist/src/routing/routingStrategy.d.ts +64 -0
- package/dist/src/routing/routingStrategy.js +7 -0
- package/dist/src/routing/routingStrategy.js.map +1 -0
- package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/classifierStrategy.js +152 -0
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
- package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
- package/dist/src/routing/strategies/compositeStrategy.js +70 -0
- package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
- package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/defaultStrategy.js +21 -0
- package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
- package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
- package/dist/src/routing/strategies/fallbackStrategy.js +33 -0
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +13 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.js +178 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -0
- package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
- package/dist/src/routing/strategies/overrideStrategy.js +29 -0
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
- package/dist/src/safety/built-in.d.ts +21 -0
- package/dist/src/safety/built-in.js +106 -0
- package/dist/src/safety/built-in.js.map +1 -0
- package/dist/src/safety/checker-runner.d.ts +48 -0
- package/dist/src/safety/checker-runner.js +219 -0
- package/dist/src/safety/checker-runner.js.map +1 -0
- package/dist/src/safety/context-builder.d.ts +23 -0
- package/dist/src/safety/context-builder.js +47 -0
- package/dist/src/safety/context-builder.js.map +1 -0
- package/dist/src/safety/protocol.d.ts +88 -0
- package/dist/src/safety/protocol.js +15 -0
- package/dist/src/safety/protocol.js.map +1 -0
- package/dist/src/safety/registry.d.ts +26 -0
- package/dist/src/safety/registry.js +65 -0
- package/dist/src/safety/registry.js.map +1 -0
- package/dist/src/scheduler/confirmation.d.ts +49 -0
- package/dist/src/scheduler/confirmation.js +183 -0
- package/dist/src/scheduler/confirmation.js.map +1 -0
- package/dist/src/scheduler/policy.d.ts +25 -0
- package/dist/src/scheduler/policy.js +108 -0
- package/dist/src/scheduler/policy.js.map +1 -0
- package/dist/src/scheduler/scheduler.d.ts +61 -0
- package/dist/src/scheduler/scheduler.js +356 -0
- package/dist/src/scheduler/scheduler.js.map +1 -0
- package/dist/src/scheduler/state-manager.d.ts +73 -0
- package/dist/src/scheduler/state-manager.js +356 -0
- package/dist/src/scheduler/state-manager.js.map +1 -0
- package/dist/src/scheduler/tool-executor.d.ts +22 -0
- package/dist/src/scheduler/tool-executor.js +201 -0
- package/dist/src/scheduler/tool-executor.js.map +1 -0
- package/dist/src/scheduler/tool-modifier.d.ts +23 -0
- package/dist/src/scheduler/tool-modifier.js +50 -0
- package/dist/src/scheduler/tool-modifier.js.map +1 -0
- package/dist/src/scheduler/types.d.ts +118 -0
- package/dist/src/scheduler/types.js +7 -0
- package/dist/src/scheduler/types.js.map +1 -0
- package/dist/src/services/chatCompressionService.d.ts +41 -0
- package/dist/src/services/chatCompressionService.js +339 -0
- package/dist/src/services/chatCompressionService.js.map +1 -0
- package/dist/src/services/chatRecordingService.d.ts +174 -0
- package/dist/src/services/chatRecordingService.js +427 -0
- package/dist/src/services/chatRecordingService.js.map +1 -0
- package/dist/src/services/contextManager.d.ts +29 -0
- package/dist/src/services/contextManager.js +71 -0
- package/dist/src/services/contextManager.js.map +1 -0
- package/dist/src/services/environmentSanitization.d.ts +15 -0
- package/dist/src/services/environmentSanitization.js +145 -0
- package/dist/src/services/environmentSanitization.js.map +1 -0
- package/dist/src/services/fileDiscoveryService.d.ts +45 -0
- package/dist/src/services/fileDiscoveryService.js +141 -0
- package/dist/src/services/fileDiscoveryService.js.map +1 -0
- package/dist/src/services/fileSystemService.d.ts +31 -0
- package/dist/src/services/fileSystemService.js +18 -0
- package/dist/src/services/fileSystemService.js.map +1 -0
- package/dist/src/services/gitService.d.ts +24 -0
- package/dist/src/services/gitService.js +132 -0
- package/dist/src/services/gitService.js.map +1 -0
- package/dist/src/services/loopDetectionService.d.ts +106 -0
- package/dist/src/services/loopDetectionService.js +433 -0
- package/dist/src/services/loopDetectionService.js.map +1 -0
- package/dist/src/services/modelConfigService.d.ts +86 -0
- package/dist/src/services/modelConfigService.js +215 -0
- package/dist/src/services/modelConfigService.js.map +1 -0
- package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
- package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
- package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
- package/dist/src/services/sessionSummaryService.d.ts +28 -0
- package/dist/src/services/sessionSummaryService.js +131 -0
- package/dist/src/services/sessionSummaryService.js.map +1 -0
- package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
- package/dist/src/services/sessionSummaryUtils.js +129 -0
- package/dist/src/services/sessionSummaryUtils.js.map +1 -0
- package/dist/src/services/shellExecutionService.d.ts +145 -0
- package/dist/src/services/shellExecutionService.js +871 -0
- package/dist/src/services/shellExecutionService.js.map +1 -0
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
- package/dist/src/services/test-data/resolved-aliases.golden.json +238 -0
- package/dist/src/skills/builtin/skill-creator/SKILL.md +382 -0
- package/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +235 -0
- package/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +102 -0
- package/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +127 -0
- package/dist/src/skills/skillLoader.d.ts +31 -0
- package/dist/src/skills/skillLoader.js +133 -0
- package/dist/src/skills/skillLoader.js.map +1 -0
- package/dist/src/skills/skillManager.d.ts +69 -0
- package/dist/src/skills/skillManager.js +138 -0
- package/dist/src/skills/skillManager.js.map +1 -0
- package/dist/src/telemetry/activity-detector.d.ts +41 -0
- package/dist/src/telemetry/activity-detector.js +61 -0
- package/dist/src/telemetry/activity-detector.js.map +1 -0
- package/dist/src/telemetry/activity-monitor.d.ts +116 -0
- package/dist/src/telemetry/activity-monitor.js +209 -0
- package/dist/src/telemetry/activity-monitor.js.map +1 -0
- package/dist/src/telemetry/activity-types.d.ts +19 -0
- package/dist/src/telemetry/activity-types.js +21 -0
- package/dist/src/telemetry/activity-types.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +172 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +1316 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +150 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +377 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -0
- package/dist/src/telemetry/config.d.ts +31 -0
- package/dist/src/telemetry/config.js +78 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/constants.d.ts +6 -0
- package/dist/src/telemetry/constants.js +7 -0
- package/dist/src/telemetry/constants.js.map +1 -0
- package/dist/src/telemetry/file-exporters.d.ts +29 -0
- package/dist/src/telemetry/file-exporters.js +62 -0
- package/dist/src/telemetry/file-exporters.js.map +1 -0
- package/dist/src/telemetry/gcp-exporters.d.ts +35 -0
- package/dist/src/telemetry/gcp-exporters.js +120 -0
- package/dist/src/telemetry/gcp-exporters.js.map +1 -0
- package/dist/src/telemetry/high-water-mark-tracker.d.ts +43 -0
- package/dist/src/telemetry/high-water-mark-tracker.js +88 -0
- package/dist/src/telemetry/high-water-mark-tracker.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +33 -0
- package/dist/src/telemetry/index.js +44 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/integration.test.circular.d.ts +6 -0
- package/dist/src/telemetry/integration.test.circular.js +54 -0
- package/dist/src/telemetry/integration.test.circular.js.map +1 -0
- package/dist/src/telemetry/loggers.d.ts +46 -0
- package/dist/src/telemetry/loggers.js +517 -0
- package/dist/src/telemetry/loggers.js.map +1 -0
- package/dist/src/telemetry/loggers.test.circular.d.ts +6 -0
- package/dist/src/telemetry/loggers.test.circular.js +107 -0
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -0
- package/dist/src/telemetry/memory-monitor.d.ts +149 -0
- package/dist/src/telemetry/memory-monitor.js +335 -0
- package/dist/src/telemetry/memory-monitor.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +533 -0
- package/dist/src/telemetry/metrics.js +852 -0
- package/dist/src/telemetry/metrics.js.map +1 -0
- package/dist/src/telemetry/rate-limiter.d.ts +48 -0
- package/dist/src/telemetry/rate-limiter.js +100 -0
- package/dist/src/telemetry/rate-limiter.js.map +1 -0
- package/dist/src/telemetry/sanitize.d.ts +25 -0
- package/dist/src/telemetry/sanitize.js +48 -0
- package/dist/src/telemetry/sanitize.js.map +1 -0
- package/dist/src/telemetry/sdk.d.ts +16 -0
- package/dist/src/telemetry/sdk.js +307 -0
- package/dist/src/telemetry/sdk.js.map +1 -0
- package/dist/src/telemetry/semantic.d.ts +82 -0
- package/dist/src/telemetry/semantic.js +357 -0
- package/dist/src/telemetry/semantic.js.map +1 -0
- package/dist/src/telemetry/startupProfiler.d.ts +51 -0
- package/dist/src/telemetry/startupProfiler.js +170 -0
- package/dist/src/telemetry/startupProfiler.js.map +1 -0
- package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
- package/dist/src/telemetry/telemetry-utils.js +14 -0
- package/dist/src/telemetry/telemetry-utils.js.map +1 -0
- package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
- package/dist/src/telemetry/telemetryAttributes.js +19 -0
- package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/trace.d.ts +46 -0
- package/dist/src/telemetry/trace.js +121 -0
- package/dist/src/telemetry/trace.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +566 -0
- package/dist/src/telemetry/types.js +1495 -0
- package/dist/src/telemetry/types.js.map +1 -0
- package/dist/src/telemetry/uiTelemetry.d.ts +76 -0
- package/dist/src/telemetry/uiTelemetry.js +154 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -0
- package/dist/src/test-utils/config.d.ts +17 -0
- package/dist/src/test-utils/config.js +32 -0
- package/dist/src/test-utils/config.js.map +1 -0
- package/dist/src/test-utils/index.d.ts +6 -0
- package/dist/src/test-utils/index.js +7 -0
- package/dist/src/test-utils/index.js.map +1 -0
- package/dist/src/test-utils/mock-message-bus.d.ts +43 -0
- package/dist/src/test-utils/mock-message-bus.js +96 -0
- package/dist/src/test-utils/mock-message-bus.js.map +1 -0
- package/dist/src/test-utils/mock-tool.d.ts +69 -0
- package/dist/src/test-utils/mock-tool.js +123 -0
- package/dist/src/test-utils/mock-tool.js.map +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
- package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
- package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
- package/dist/src/tools/activate-skill.d.ts +27 -0
- package/dist/src/tools/activate-skill.js +133 -0
- package/dist/src/tools/activate-skill.js.map +1 -0
- package/dist/src/tools/ask-user.d.ts +23 -0
- package/dist/src/tools/ask-user.js +155 -0
- package/dist/src/tools/ask-user.js.map +1 -0
- package/dist/src/tools/constants.d.ts +7 -0
- package/dist/src/tools/constants.js +8 -0
- package/dist/src/tools/constants.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +9 -0
- package/dist/src/tools/diffOptions.js +50 -0
- package/dist/src/tools/diffOptions.js.map +1 -0
- package/dist/src/tools/edit.d.ts +79 -0
- package/dist/src/tools/edit.js +750 -0
- package/dist/src/tools/edit.js.map +1 -0
- package/dist/src/tools/get-internal-docs.d.ts +27 -0
- package/dist/src/tools/get-internal-docs.js +122 -0
- package/dist/src/tools/get-internal-docs.js.map +1 -0
- package/dist/src/tools/glob.d.ts +57 -0
- package/dist/src/tools/glob.js +240 -0
- package/dist/src/tools/glob.js.map +1 -0
- package/dist/src/tools/grep.d.ts +41 -0
- package/dist/src/tools/grep.js +505 -0
- package/dist/src/tools/grep.js.map +1 -0
- package/dist/src/tools/ls.d.ts +69 -0
- package/dist/src/tools/ls.js +214 -0
- package/dist/src/tools/ls.js.map +1 -0
- package/dist/src/tools/mcp-client-manager.d.ts +93 -0
- package/dist/src/tools/mcp-client-manager.js +338 -0
- package/dist/src/tools/mcp-client-manager.js.map +1 -0
- package/dist/src/tools/mcp-client.d.ts +243 -0
- package/dist/src/tools/mcp-client.js +1351 -0
- package/dist/src/tools/mcp-client.js.map +1 -0
- package/dist/src/tools/mcp-tool.d.ts +49 -0
- package/dist/src/tools/mcp-tool.js +300 -0
- package/dist/src/tools/mcp-tool.js.map +1 -0
- package/dist/src/tools/memoryTool.d.ts +42 -0
- package/dist/src/tools/memoryTool.js +269 -0
- package/dist/src/tools/memoryTool.js.map +1 -0
- package/dist/src/tools/modifiable-tool.d.ts +36 -0
- package/dist/src/tools/modifiable-tool.js +110 -0
- package/dist/src/tools/modifiable-tool.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +37 -0
- package/dist/src/tools/read-file.js +141 -0
- package/dist/src/tools/read-file.js.map +1 -0
- package/dist/src/tools/read-many-files.d.ts +54 -0
- package/dist/src/tools/read-many-files.js +364 -0
- package/dist/src/tools/read-many-files.js.map +1 -0
- package/dist/src/tools/ripGrep.d.ts +74 -0
- package/dist/src/tools/ripGrep.js +422 -0
- package/dist/src/tools/ripGrep.js.map +1 -0
- package/dist/src/tools/shell.d.ts +33 -0
- package/dist/src/tools/shell.js +436 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +70 -0
- package/dist/src/tools/tool-error.js +92 -0
- package/dist/src/tools/tool-error.js.map +1 -0
- package/dist/src/tools/tool-names.d.ts +41 -0
- package/dist/src/tools/tool-names.js +94 -0
- package/dist/src/tools/tool-names.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +103 -0
- package/dist/src/tools/tool-registry.js +429 -0
- package/dist/src/tools/tool-registry.js.map +1 -0
- package/dist/src/tools/tools.d.ts +347 -0
- package/dist/src/tools/tools.js +405 -0
- package/dist/src/tools/tools.js.map +1 -0
- package/dist/src/tools/web-fetch.d.ts +35 -0
- package/dist/src/tools/web-fetch.js +299 -0
- package/dist/src/tools/web-fetch.js.map +1 -0
- package/dist/src/tools/web-search.d.ts +50 -0
- package/dist/src/tools/web-search.js +141 -0
- package/dist/src/tools/web-search.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +53 -0
- package/dist/src/tools/write-file.js +341 -0
- package/dist/src/tools/write-file.js.map +1 -0
- package/dist/src/tools/write-todos.d.ts +50 -0
- package/dist/src/tools/write-todos.js +194 -0
- package/dist/src/tools/write-todos.js.map +1 -0
- package/dist/src/utils/apiConversionUtils.d.ts +12 -0
- package/dist/src/utils/apiConversionUtils.js +46 -0
- package/dist/src/utils/apiConversionUtils.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.d.ts +32 -0
- package/dist/src/utils/bfsFileSearch.js +136 -0
- package/dist/src/utils/bfsFileSearch.js.map +1 -0
- package/dist/src/utils/browser.d.ts +13 -0
- package/dist/src/utils/browser.js +50 -0
- package/dist/src/utils/browser.js.map +1 -0
- package/dist/src/utils/channel.d.ts +19 -0
- package/dist/src/utils/channel.js +49 -0
- package/dist/src/utils/channel.js.map +1 -0
- package/dist/src/utils/checkpointUtils.d.ts +82 -0
- package/dist/src/utils/checkpointUtils.js +117 -0
- package/dist/src/utils/checkpointUtils.js.map +1 -0
- package/dist/src/utils/constants.d.ts +7 -0
- package/dist/src/utils/constants.js +8 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/customHeaderUtils.d.ts +9 -0
- package/dist/src/utils/customHeaderUtils.js +34 -0
- package/dist/src/utils/customHeaderUtils.js.map +1 -0
- package/dist/src/utils/debugLogger.d.ts +28 -0
- package/dist/src/utils/debugLogger.js +61 -0
- package/dist/src/utils/debugLogger.js.map +1 -0
- package/dist/src/utils/delay.d.ts +16 -0
- package/dist/src/utils/delay.js +43 -0
- package/dist/src/utils/delay.js.map +1 -0
- package/dist/src/utils/editCorrector.d.ts +54 -0
- package/dist/src/utils/editCorrector.js +596 -0
- package/dist/src/utils/editCorrector.js.map +1 -0
- package/dist/src/utils/editor.d.ts +39 -0
- package/dist/src/utils/editor.js +219 -0
- package/dist/src/utils/editor.js.map +1 -0
- package/dist/src/utils/environmentContext.d.ts +23 -0
- package/dist/src/utils/environmentContext.js +81 -0
- package/dist/src/utils/environmentContext.js.map +1 -0
- package/dist/src/utils/errorParsing.d.ts +8 -0
- package/dist/src/utils/errorParsing.js +65 -0
- package/dist/src/utils/errorParsing.js.map +1 -0
- package/dist/src/utils/errorReporting.d.ts +14 -0
- package/dist/src/utils/errorReporting.js +89 -0
- package/dist/src/utils/errorReporting.js.map +1 -0
- package/dist/src/utils/errors.d.ts +53 -0
- package/dist/src/utils/errors.js +145 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/events.d.ts +211 -0
- package/dist/src/utils/events.js +134 -0
- package/dist/src/utils/events.js.map +1 -0
- package/dist/src/utils/exitCodes.d.ts +12 -0
- package/dist/src/utils/exitCodes.js +13 -0
- package/dist/src/utils/exitCodes.js.map +1 -0
- package/dist/src/utils/extensionLoader.d.ts +86 -0
- package/dist/src/utils/extensionLoader.js +208 -0
- package/dist/src/utils/extensionLoader.js.map +1 -0
- package/dist/src/utils/fetch.d.ts +12 -0
- package/dist/src/utils/fetch.js +55 -0
- package/dist/src/utils/fetch.js.map +1 -0
- package/dist/src/utils/fileDiffUtils.d.ts +18 -0
- package/dist/src/utils/fileDiffUtils.js +37 -0
- package/dist/src/utils/fileDiffUtils.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +86 -0
- package/dist/src/utils/fileUtils.js +495 -0
- package/dist/src/utils/fileUtils.js.map +1 -0
- package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
- package/dist/src/utils/filesearch/crawlCache.js +57 -0
- package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
- package/dist/src/utils/filesearch/crawler.d.ts +16 -0
- package/dist/src/utils/filesearch/crawler.js +67 -0
- package/dist/src/utils/filesearch/crawler.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.d.ts +39 -0
- package/dist/src/utils/filesearch/fileSearch.js +192 -0
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
- package/dist/src/utils/filesearch/ignore.d.ts +37 -0
- package/dist/src/utils/filesearch/ignore.js +99 -0
- package/dist/src/utils/filesearch/ignore.js.map +1 -0
- package/dist/src/utils/filesearch/result-cache.d.ts +33 -0
- package/dist/src/utils/filesearch/result-cache.js +59 -0
- package/dist/src/utils/filesearch/result-cache.js.map +1 -0
- package/dist/src/utils/formatters.d.ts +7 -0
- package/dist/src/utils/formatters.js +17 -0
- package/dist/src/utils/formatters.js.map +1 -0
- package/dist/src/utils/generateContentResponseUtilities.d.ts +15 -0
- package/dist/src/utils/generateContentResponseUtilities.js +186 -0
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -0
- package/dist/src/utils/getFolderStructure.d.ts +31 -0
- package/dist/src/utils/getFolderStructure.js +243 -0
- package/dist/src/utils/getFolderStructure.js.map +1 -0
- package/dist/src/utils/getPty.d.ts +19 -0
- package/dist/src/utils/getPty.js +23 -0
- package/dist/src/utils/getPty.js.map +1 -0
- package/dist/src/utils/gitIgnoreParser.d.ts +19 -0
- package/dist/src/utils/gitIgnoreParser.js +169 -0
- package/dist/src/utils/gitIgnoreParser.js.map +1 -0
- package/dist/src/utils/gitUtils.d.ts +17 -0
- package/dist/src/utils/gitUtils.js +61 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- package/dist/src/utils/googleErrors.d.ts +104 -0
- package/dist/src/utils/googleErrors.js +165 -0
- package/dist/src/utils/googleErrors.js.map +1 -0
- package/dist/src/utils/googleQuotaErrors.d.ts +51 -0
- package/dist/src/utils/googleQuotaErrors.js +250 -0
- package/dist/src/utils/googleQuotaErrors.js.map +1 -0
- package/dist/src/utils/httpErrors.d.ts +18 -0
- package/dist/src/utils/httpErrors.js +36 -0
- package/dist/src/utils/httpErrors.js.map +1 -0
- package/dist/src/utils/ignoreFileParser.d.ts +30 -0
- package/dist/src/utils/ignoreFileParser.js +100 -0
- package/dist/src/utils/ignoreFileParser.js.map +1 -0
- package/dist/src/utils/ignorePatterns.d.ts +103 -0
- package/dist/src/utils/ignorePatterns.js +220 -0
- package/dist/src/utils/ignorePatterns.js.map +1 -0
- package/dist/src/utils/installationManager.d.ts +16 -0
- package/dist/src/utils/installationManager.js +51 -0
- package/dist/src/utils/installationManager.js.map +1 -0
- package/dist/src/utils/language-detection.d.ts +6 -0
- package/dist/src/utils/language-detection.js +101 -0
- package/dist/src/utils/language-detection.js.map +1 -0
- package/dist/src/utils/llm-edit-fixer.d.ts +26 -0
- package/dist/src/utils/llm-edit-fixer.js +152 -0
- package/dist/src/utils/llm-edit-fixer.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +40 -0
- package/dist/src/utils/memoryDiscovery.js +421 -0
- package/dist/src/utils/memoryDiscovery.js.map +1 -0
- package/dist/src/utils/memoryImportProcessor.d.ts +42 -0
- package/dist/src/utils/memoryImportProcessor.js +273 -0
- package/dist/src/utils/memoryImportProcessor.js.map +1 -0
- package/dist/src/utils/messageInspectors.d.ts +8 -0
- package/dist/src/utils/messageInspectors.js +16 -0
- package/dist/src/utils/messageInspectors.js.map +1 -0
- package/dist/src/utils/nextSpeakerChecker.d.ts +12 -0
- package/dist/src/utils/nextSpeakerChecker.js +97 -0
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -0
- package/dist/src/utils/package.d.ts +26 -0
- package/dist/src/utils/package.js +35 -0
- package/dist/src/utils/package.js.map +1 -0
- package/dist/src/utils/partUtils.d.ts +35 -0
- package/dist/src/utils/partUtils.js +133 -0
- package/dist/src/utils/partUtils.js.map +1 -0
- package/dist/src/utils/pathCorrector.d.ts +25 -0
- package/dist/src/utils/pathCorrector.js +43 -0
- package/dist/src/utils/pathCorrector.js.map +1 -0
- package/dist/src/utils/pathReader.d.ts +17 -0
- package/dist/src/utils/pathReader.js +92 -0
- package/dist/src/utils/pathReader.js.map +1 -0
- package/dist/src/utils/paths.d.ts +78 -0
- package/dist/src/utils/paths.js +311 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/process-utils.d.ts +32 -0
- package/dist/src/utils/process-utils.js +88 -0
- package/dist/src/utils/process-utils.js.map +1 -0
- package/dist/src/utils/promptIdContext.d.ts +13 -0
- package/dist/src/utils/promptIdContext.js +23 -0
- package/dist/src/utils/promptIdContext.js.map +1 -0
- package/dist/src/utils/quotaErrorDetection.d.ts +16 -0
- package/dist/src/utils/quotaErrorDetection.js +19 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -0
- package/dist/src/utils/retry.d.ts +39 -0
- package/dist/src/utils/retry.js +267 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/safeJsonStringify.d.ts +13 -0
- package/dist/src/utils/safeJsonStringify.js +49 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -0
- package/dist/src/utils/schemaValidator.d.ts +21 -0
- package/dist/src/utils/schemaValidator.js +59 -0
- package/dist/src/utils/schemaValidator.js.map +1 -0
- package/dist/src/utils/secure-browser-launcher.d.ts +23 -0
- package/dist/src/utils/secure-browser-launcher.js +165 -0
- package/dist/src/utils/secure-browser-launcher.js.map +1 -0
- package/dist/src/utils/security.d.ts +16 -0
- package/dist/src/utils/security.js +88 -0
- package/dist/src/utils/security.js.map +1 -0
- package/dist/src/utils/session.d.ts +6 -0
- package/dist/src/utils/session.js +8 -0
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +118 -0
- package/dist/src/utils/shell-utils.js +708 -0
- package/dist/src/utils/shell-utils.js.map +1 -0
- package/dist/src/utils/stdio.d.ts +32 -0
- package/dist/src/utils/stdio.js +85 -0
- package/dist/src/utils/stdio.js.map +1 -0
- package/dist/src/utils/summarizer.d.ts +27 -0
- package/dist/src/utils/summarizer.js +50 -0
- package/dist/src/utils/summarizer.js.map +1 -0
- package/dist/src/utils/systemEncoding.d.ts +40 -0
- package/dist/src/utils/systemEncoding.js +150 -0
- package/dist/src/utils/systemEncoding.js.map +1 -0
- package/dist/src/utils/terminal.d.ts +22 -0
- package/dist/src/utils/terminal.js +62 -0
- package/dist/src/utils/terminal.js.map +1 -0
- package/dist/src/utils/terminalSerializer.d.ts +25 -0
- package/dist/src/utils/terminalSerializer.js +444 -0
- package/dist/src/utils/terminalSerializer.js.map +1 -0
- package/dist/src/utils/testUtils.d.ts +29 -0
- package/dist/src/utils/testUtils.js +70 -0
- package/dist/src/utils/testUtils.js.map +1 -0
- package/dist/src/utils/textUtils.d.ts +32 -0
- package/dist/src/utils/textUtils.js +65 -0
- package/dist/src/utils/textUtils.js.map +1 -0
- package/dist/src/utils/thoughtUtils.d.ts +21 -0
- package/dist/src/utils/thoughtUtils.js +39 -0
- package/dist/src/utils/thoughtUtils.js.map +1 -0
- package/dist/src/utils/tokenCalculation.d.ts +19 -0
- package/dist/src/utils/tokenCalculation.js +150 -0
- package/dist/src/utils/tokenCalculation.js.map +1 -0
- package/dist/src/utils/tool-utils.d.ts +28 -0
- package/dist/src/utils/tool-utils.js +96 -0
- package/dist/src/utils/tool-utils.js.map +1 -0
- package/dist/src/utils/toolCallContext.d.ts +35 -0
- package/dist/src/utils/toolCallContext.js +29 -0
- package/dist/src/utils/toolCallContext.js.map +1 -0
- package/dist/src/utils/userAccountManager.d.ts +20 -0
- package/dist/src/utils/userAccountManager.js +115 -0
- package/dist/src/utils/userAccountManager.js.map +1 -0
- package/dist/src/utils/version.d.ts +6 -0
- package/dist/src/utils/version.js +15 -0
- package/dist/src/utils/version.js.map +1 -0
- package/dist/src/utils/workspaceContext.d.ts +82 -0
- package/dist/src/utils/workspaceContext.js +192 -0
- package/dist/src/utils/workspaceContext.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
# Writing hooks for Gemini CLI
|
|
2
|
+
|
|
3
|
+
This guide will walk you through creating hooks for Gemini CLI, from a simple
|
|
4
|
+
logging hook to a comprehensive workflow assistant.
|
|
5
|
+
|
|
6
|
+
## Prerequisites
|
|
7
|
+
|
|
8
|
+
Before you start, make sure you have:
|
|
9
|
+
|
|
10
|
+
- Gemini CLI installed and configured
|
|
11
|
+
- Basic understanding of shell scripting or JavaScript/Node.js
|
|
12
|
+
- Familiarity with JSON for hook input/output
|
|
13
|
+
|
|
14
|
+
## Quick start
|
|
15
|
+
|
|
16
|
+
Let's create a simple hook that logs all tool executions to understand the
|
|
17
|
+
basics.
|
|
18
|
+
|
|
19
|
+
**Crucial Rule:** Always write logs to `stderr`. Write only the final JSON to
|
|
20
|
+
`stdout`.
|
|
21
|
+
|
|
22
|
+
### Step 1: Create your hook script
|
|
23
|
+
|
|
24
|
+
Create a directory for hooks and a simple logging script.
|
|
25
|
+
|
|
26
|
+
> **Note**:
|
|
27
|
+
>
|
|
28
|
+
> This example uses `jq` to parse JSON. If you don't have it installed, you can
|
|
29
|
+
> perform similar logic using Node.js or Python.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
mkdir -p .gemini/hooks
|
|
33
|
+
cat > .gemini/hooks/log-tools.sh << 'EOF'
|
|
34
|
+
#!/usr/bin/env bash
|
|
35
|
+
# Read hook input from stdin
|
|
36
|
+
input=$(cat)
|
|
37
|
+
|
|
38
|
+
# Extract tool name (requires jq)
|
|
39
|
+
tool_name=$(echo "$input" | jq -r '.tool_name')
|
|
40
|
+
|
|
41
|
+
# Log to stderr (visible in terminal if hook fails, or captured in logs)
|
|
42
|
+
echo "Logging tool: $tool_name" >&2
|
|
43
|
+
|
|
44
|
+
# Log to file
|
|
45
|
+
echo "[$(date)] Tool executed: $tool_name" >> .gemini/tool-log.txt
|
|
46
|
+
|
|
47
|
+
# Return success (exit 0) with empty JSON
|
|
48
|
+
echo "{}"
|
|
49
|
+
exit 0
|
|
50
|
+
EOF
|
|
51
|
+
|
|
52
|
+
chmod +x .gemini/hooks/log-tools.sh
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Exit Code Strategies
|
|
56
|
+
|
|
57
|
+
There are two ways to control or block an action in Gemini CLI:
|
|
58
|
+
|
|
59
|
+
| Strategy | Exit Code | Implementation | Best For |
|
|
60
|
+
| :------------------------- | :-------- | :----------------------------------------------------------------- | :---------------------------------------------------------- |
|
|
61
|
+
| **Structured (Idiomatic)** | `0` | Return a JSON object like `{"decision": "deny", "reason": "..."}`. | Production hooks, custom user feedback, and complex logic. |
|
|
62
|
+
| **Emergency Brake** | `2` | Print the error message to `stderr` and exit. | Simple security gates, script errors, or rapid prototyping. |
|
|
63
|
+
|
|
64
|
+
## Practical examples
|
|
65
|
+
|
|
66
|
+
### Security: Block secrets in commits
|
|
67
|
+
|
|
68
|
+
Prevent committing files containing API keys or passwords. Note that we use
|
|
69
|
+
**Exit Code 0** to provide a structured denial message to the agent.
|
|
70
|
+
|
|
71
|
+
**`.gemini/hooks/block-secrets.sh`:**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
#!/usr/bin/env bash
|
|
75
|
+
input=$(cat)
|
|
76
|
+
|
|
77
|
+
# Extract content being written
|
|
78
|
+
content=$(echo "$input" | jq -r '.tool_input.content // .tool_input.new_string // ""')
|
|
79
|
+
|
|
80
|
+
# Check for secrets
|
|
81
|
+
if echo "$content" | grep -qE 'api[_-]?key|password|secret'; then
|
|
82
|
+
# Log to stderr
|
|
83
|
+
echo "Blocked potential secret" >&2
|
|
84
|
+
|
|
85
|
+
# Return structured denial to stdout
|
|
86
|
+
cat <<EOF
|
|
87
|
+
{
|
|
88
|
+
"decision": "deny",
|
|
89
|
+
"reason": "Security Policy: Potential secret detected in content.",
|
|
90
|
+
"systemMessage": "🔒 Security scanner blocked operation"
|
|
91
|
+
}
|
|
92
|
+
EOF
|
|
93
|
+
exit 0
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
# Allow
|
|
97
|
+
echo '{"decision": "allow"}'
|
|
98
|
+
exit 0
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Dynamic context injection (Git History)
|
|
102
|
+
|
|
103
|
+
Add relevant project context before each agent interaction.
|
|
104
|
+
|
|
105
|
+
**`.gemini/hooks/inject-context.sh`:**
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
#!/usr/bin/env bash
|
|
109
|
+
|
|
110
|
+
# Get recent git commits for context
|
|
111
|
+
context=$(git log -5 --oneline 2>/dev/null || echo "No git history")
|
|
112
|
+
|
|
113
|
+
# Return as JSON
|
|
114
|
+
cat <<EOF
|
|
115
|
+
{
|
|
116
|
+
"hookSpecificOutput": {
|
|
117
|
+
"hookEventName": "BeforeAgent",
|
|
118
|
+
"additionalContext": "Recent commits:\n$context"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
EOF
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### RAG-based Tool Filtering (BeforeToolSelection)
|
|
125
|
+
|
|
126
|
+
Use `BeforeToolSelection` to intelligently reduce the tool space. This example
|
|
127
|
+
uses a Node.js script to check the user's prompt and allow only relevant tools.
|
|
128
|
+
|
|
129
|
+
**`.gemini/hooks/filter-tools.js`:**
|
|
130
|
+
|
|
131
|
+
```javascript
|
|
132
|
+
#!/usr/bin/env node
|
|
133
|
+
const fs = require('fs');
|
|
134
|
+
|
|
135
|
+
async function main() {
|
|
136
|
+
const input = JSON.parse(fs.readFileSync(0, 'utf-8'));
|
|
137
|
+
const { llm_request } = input;
|
|
138
|
+
|
|
139
|
+
// Decoupled API: Access messages from llm_request
|
|
140
|
+
const messages = llm_request.messages || [];
|
|
141
|
+
const lastUserMessage = messages
|
|
142
|
+
.slice()
|
|
143
|
+
.reverse()
|
|
144
|
+
.find((m) => m.role === 'user');
|
|
145
|
+
|
|
146
|
+
if (!lastUserMessage) {
|
|
147
|
+
console.log(JSON.stringify({})); // Do nothing
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const text = lastUserMessage.content;
|
|
152
|
+
const allowed = ['write_todos']; // Always allow memory
|
|
153
|
+
|
|
154
|
+
// Simple keyword matching
|
|
155
|
+
if (text.includes('read') || text.includes('check')) {
|
|
156
|
+
allowed.push('read_file', 'list_directory');
|
|
157
|
+
}
|
|
158
|
+
if (text.includes('test')) {
|
|
159
|
+
allowed.push('run_shell_command');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// If we found specific intent, filter tools. Otherwise allow all.
|
|
163
|
+
if (allowed.length > 1) {
|
|
164
|
+
console.log(
|
|
165
|
+
JSON.stringify({
|
|
166
|
+
hookSpecificOutput: {
|
|
167
|
+
hookEventName: 'BeforeToolSelection',
|
|
168
|
+
toolConfig: {
|
|
169
|
+
mode: 'ANY', // Force usage of one of these tools (or AUTO)
|
|
170
|
+
allowedFunctionNames: allowed,
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
}),
|
|
174
|
+
);
|
|
175
|
+
} else {
|
|
176
|
+
console.log(JSON.stringify({}));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
main().catch((err) => {
|
|
181
|
+
console.error(err);
|
|
182
|
+
process.exit(1);
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**`.gemini/settings.json`:**
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"hooks": {
|
|
191
|
+
"BeforeToolSelection": [
|
|
192
|
+
{
|
|
193
|
+
"matcher": "*",
|
|
194
|
+
"hooks": [
|
|
195
|
+
{
|
|
196
|
+
"name": "intent-filter",
|
|
197
|
+
"type": "command",
|
|
198
|
+
"command": "node .gemini/hooks/filter-tools.js"
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
> **TIP**
|
|
208
|
+
>
|
|
209
|
+
> **Union Aggregation Strategy**: `BeforeToolSelection` is unique in that it
|
|
210
|
+
> combines the results of all matching hooks. If you have multiple filtering
|
|
211
|
+
> hooks, the agent will receive the **union** of all whitelisted tools. Only
|
|
212
|
+
> using `mode: "NONE"` will override other hooks to disable all tools.
|
|
213
|
+
|
|
214
|
+
## Complete example: Smart Development Workflow Assistant
|
|
215
|
+
|
|
216
|
+
This comprehensive example demonstrates all hook events working together. We
|
|
217
|
+
will build a system that maintains memory, filters tools, and checks for
|
|
218
|
+
security.
|
|
219
|
+
|
|
220
|
+
### Architecture
|
|
221
|
+
|
|
222
|
+
1. **SessionStart**: Load project memories.
|
|
223
|
+
2. **BeforeAgent**: Inject memories into context.
|
|
224
|
+
3. **BeforeToolSelection**: Filter tools based on intent.
|
|
225
|
+
4. **BeforeTool**: Scan for secrets.
|
|
226
|
+
5. **AfterModel**: Record interactions.
|
|
227
|
+
6. **AfterAgent**: Validate final response quality (Retry).
|
|
228
|
+
7. **SessionEnd**: Consolidate memories.
|
|
229
|
+
|
|
230
|
+
### Configuration (`.gemini/settings.json`)
|
|
231
|
+
|
|
232
|
+
```json
|
|
233
|
+
{
|
|
234
|
+
"hooks": {
|
|
235
|
+
"SessionStart": [
|
|
236
|
+
{
|
|
237
|
+
"matcher": "startup",
|
|
238
|
+
"hooks": [
|
|
239
|
+
{
|
|
240
|
+
"name": "init",
|
|
241
|
+
"type": "command",
|
|
242
|
+
"command": "node .gemini/hooks/init.js"
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
"BeforeAgent": [
|
|
248
|
+
{
|
|
249
|
+
"matcher": "*",
|
|
250
|
+
"hooks": [
|
|
251
|
+
{
|
|
252
|
+
"name": "memory",
|
|
253
|
+
"type": "command",
|
|
254
|
+
"command": "node .gemini/hooks/inject-memories.js"
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"BeforeToolSelection": [
|
|
260
|
+
{
|
|
261
|
+
"matcher": "*",
|
|
262
|
+
"hooks": [
|
|
263
|
+
{
|
|
264
|
+
"name": "filter",
|
|
265
|
+
"type": "command",
|
|
266
|
+
"command": "node .gemini/hooks/rag-filter.js"
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"BeforeTool": [
|
|
272
|
+
{
|
|
273
|
+
"matcher": "write_file",
|
|
274
|
+
"hooks": [
|
|
275
|
+
{
|
|
276
|
+
"name": "security",
|
|
277
|
+
"type": "command",
|
|
278
|
+
"command": "node .gemini/hooks/security.js"
|
|
279
|
+
}
|
|
280
|
+
]
|
|
281
|
+
}
|
|
282
|
+
],
|
|
283
|
+
"AfterModel": [
|
|
284
|
+
{
|
|
285
|
+
"matcher": "*",
|
|
286
|
+
"hooks": [
|
|
287
|
+
{
|
|
288
|
+
"name": "record",
|
|
289
|
+
"type": "command",
|
|
290
|
+
"command": "node .gemini/hooks/record.js"
|
|
291
|
+
}
|
|
292
|
+
]
|
|
293
|
+
}
|
|
294
|
+
],
|
|
295
|
+
"AfterAgent": [
|
|
296
|
+
{
|
|
297
|
+
"matcher": "*",
|
|
298
|
+
"hooks": [
|
|
299
|
+
{
|
|
300
|
+
"name": "validate",
|
|
301
|
+
"type": "command",
|
|
302
|
+
"command": "node .gemini/hooks/validate.js"
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
],
|
|
307
|
+
"SessionEnd": [
|
|
308
|
+
{
|
|
309
|
+
"matcher": "exit",
|
|
310
|
+
"hooks": [
|
|
311
|
+
{
|
|
312
|
+
"name": "save",
|
|
313
|
+
"type": "command",
|
|
314
|
+
"command": "node .gemini/hooks/consolidate.js"
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
]
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### Hook Scripts
|
|
324
|
+
|
|
325
|
+
> **Note**: For brevity, these scripts use `console.error` for logging and
|
|
326
|
+
> standard `console.log` for JSON output.
|
|
327
|
+
|
|
328
|
+
#### 1. Initialize (`init.js`)
|
|
329
|
+
|
|
330
|
+
```javascript
|
|
331
|
+
#!/usr/bin/env node
|
|
332
|
+
// Initialize DB or resources
|
|
333
|
+
console.error('Initializing assistant...');
|
|
334
|
+
|
|
335
|
+
// Output to user
|
|
336
|
+
console.log(
|
|
337
|
+
JSON.stringify({
|
|
338
|
+
systemMessage: '🧠 Smart Assistant Loaded',
|
|
339
|
+
}),
|
|
340
|
+
);
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
#### 2. Inject Memories (`inject-memories.js`)
|
|
344
|
+
|
|
345
|
+
```javascript
|
|
346
|
+
#!/usr/bin/env node
|
|
347
|
+
const fs = require('fs');
|
|
348
|
+
|
|
349
|
+
async function main() {
|
|
350
|
+
const input = JSON.parse(fs.readFileSync(0, 'utf-8'));
|
|
351
|
+
// Assume we fetch memories from a DB here
|
|
352
|
+
const memories = '- [Memory] Always use TypeScript for this project.';
|
|
353
|
+
|
|
354
|
+
console.log(
|
|
355
|
+
JSON.stringify({
|
|
356
|
+
hookSpecificOutput: {
|
|
357
|
+
hookEventName: 'BeforeAgent',
|
|
358
|
+
additionalContext: `\n## Relevant Memories\n${memories}`,
|
|
359
|
+
},
|
|
360
|
+
}),
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
main();
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
#### 3. Security Check (`security.js`)
|
|
367
|
+
|
|
368
|
+
```javascript
|
|
369
|
+
#!/usr/bin/env node
|
|
370
|
+
const fs = require('fs');
|
|
371
|
+
const input = JSON.parse(fs.readFileSync(0));
|
|
372
|
+
const content = input.tool_input.content || '';
|
|
373
|
+
|
|
374
|
+
if (content.includes('SECRET_KEY')) {
|
|
375
|
+
console.log(
|
|
376
|
+
JSON.stringify({
|
|
377
|
+
decision: 'deny',
|
|
378
|
+
reason: 'Found SECRET_KEY in content',
|
|
379
|
+
systemMessage: '🚨 Blocked sensitive commit',
|
|
380
|
+
}),
|
|
381
|
+
);
|
|
382
|
+
process.exit(0);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
console.log(JSON.stringify({ decision: 'allow' }));
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### 4. Record Interaction (`record.js`)
|
|
389
|
+
|
|
390
|
+
```javascript
|
|
391
|
+
#!/usr/bin/env node
|
|
392
|
+
const fs = require('fs');
|
|
393
|
+
const path = require('path');
|
|
394
|
+
|
|
395
|
+
const input = JSON.parse(fs.readFileSync(0));
|
|
396
|
+
const { llm_request, llm_response } = input;
|
|
397
|
+
const logFile = path.join(
|
|
398
|
+
process.env.GEMINI_PROJECT_DIR,
|
|
399
|
+
'.gemini/memory/session.jsonl',
|
|
400
|
+
);
|
|
401
|
+
|
|
402
|
+
fs.appendFileSync(
|
|
403
|
+
logFile,
|
|
404
|
+
JSON.stringify({
|
|
405
|
+
request: llm_request,
|
|
406
|
+
response: llm_response,
|
|
407
|
+
timestamp: new Date().toISOString(),
|
|
408
|
+
}) + '\n',
|
|
409
|
+
);
|
|
410
|
+
|
|
411
|
+
console.log(JSON.stringify({}));
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
#### 5. Validate Response (`validate.js`)
|
|
415
|
+
|
|
416
|
+
```javascript
|
|
417
|
+
#!/usr/bin/env node
|
|
418
|
+
const fs = require('fs');
|
|
419
|
+
const input = JSON.parse(fs.readFileSync(0));
|
|
420
|
+
const response = input.prompt_response;
|
|
421
|
+
|
|
422
|
+
// Example: Check if the agent forgot to include a summary
|
|
423
|
+
if (!response.includes('Summary:')) {
|
|
424
|
+
console.log(
|
|
425
|
+
JSON.stringify({
|
|
426
|
+
decision: 'block', // Triggers an automatic retry turn
|
|
427
|
+
reason: 'Your response is missing a Summary section. Please add one.',
|
|
428
|
+
systemMessage: '🔄 Requesting missing summary...',
|
|
429
|
+
}),
|
|
430
|
+
);
|
|
431
|
+
process.exit(0);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
console.log(JSON.stringify({ decision: 'allow' }));
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
#### 6. Consolidate Memories (`consolidate.js`)
|
|
438
|
+
|
|
439
|
+
```javascript
|
|
440
|
+
#!/usr/bin/env node
|
|
441
|
+
// Logic to save final session state
|
|
442
|
+
console.error('Consolidating memories for session end...');
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## Packaging as an extension
|
|
446
|
+
|
|
447
|
+
While project-level hooks are great for specific repositories, you can share
|
|
448
|
+
your hooks across multiple projects by packaging them as a
|
|
449
|
+
[Gemini CLI extension](https://www.google.com/search?q=../extensions/index.md).
|
|
450
|
+
This provides version control, easy distribution, and centralized management.
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# Gemini CLI companion plugin: Interface specification
|
|
2
|
+
|
|
3
|
+
> Last Updated: September 15, 2025
|
|
4
|
+
|
|
5
|
+
This document defines the contract for building a companion plugin to enable
|
|
6
|
+
Gemini CLI's IDE mode. For VS Code, these features (native diffing, context
|
|
7
|
+
awareness) are provided by the official extension
|
|
8
|
+
([marketplace](https://marketplace.visualstudio.com/items?itemName=Google.gemini-cli-vscode-ide-companion)).
|
|
9
|
+
This specification is for contributors who wish to bring similar functionality
|
|
10
|
+
to other editors like JetBrains IDEs, Sublime Text, etc.
|
|
11
|
+
|
|
12
|
+
## I. The communication interface
|
|
13
|
+
|
|
14
|
+
Gemini CLI and the IDE plugin communicate through a local communication channel.
|
|
15
|
+
|
|
16
|
+
### 1. Transport layer: MCP over HTTP
|
|
17
|
+
|
|
18
|
+
The plugin **MUST** run a local HTTP server that implements the **Model Context
|
|
19
|
+
Protocol (MCP)**.
|
|
20
|
+
|
|
21
|
+
- **Protocol:** The server must be a valid MCP server. We recommend using an
|
|
22
|
+
existing MCP SDK for your language of choice if available.
|
|
23
|
+
- **Endpoint:** The server should expose a single endpoint (e.g., `/mcp`) for
|
|
24
|
+
all MCP communication.
|
|
25
|
+
- **Port:** The server **MUST** listen on a dynamically assigned port (i.e.,
|
|
26
|
+
listen on port `0`).
|
|
27
|
+
|
|
28
|
+
### 2. Discovery mechanism: The port file
|
|
29
|
+
|
|
30
|
+
For Gemini CLI to connect, it needs to discover which IDE instance it's running
|
|
31
|
+
in and what port your server is using. The plugin **MUST** facilitate this by
|
|
32
|
+
creating a "discovery file."
|
|
33
|
+
|
|
34
|
+
- **How the CLI finds the file:** The CLI determines the Process ID (PID) of the
|
|
35
|
+
IDE it's running in by traversing the process tree. It then looks for a
|
|
36
|
+
discovery file that contains this PID in its name.
|
|
37
|
+
- **File location:** The file must be created in a specific directory:
|
|
38
|
+
`os.tmpdir()/gemini/ide/`. Your plugin must create this directory if it
|
|
39
|
+
doesn't exist.
|
|
40
|
+
- **File naming convention:** The filename is critical and **MUST** follow the
|
|
41
|
+
pattern: `gemini-ide-server-${PID}-${PORT}.json`
|
|
42
|
+
- `${PID}`: The process ID of the parent IDE process. Your plugin must
|
|
43
|
+
determine this PID and include it in the filename.
|
|
44
|
+
- `${PORT}`: The port your MCP server is listening on.
|
|
45
|
+
- **File content and workspace validation:** The file **MUST** contain a JSON
|
|
46
|
+
object with the following structure:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"port": 12345,
|
|
51
|
+
"workspacePath": "/path/to/project1:/path/to/project2",
|
|
52
|
+
"authToken": "a-very-secret-token",
|
|
53
|
+
"ideInfo": {
|
|
54
|
+
"name": "vscode",
|
|
55
|
+
"displayName": "VS Code"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
- `port` (number, required): The port of the MCP server.
|
|
60
|
+
- `workspacePath` (string, required): A list of all open workspace root paths,
|
|
61
|
+
delimited by the OS-specific path separator (`:` for Linux/macOS, `;` for
|
|
62
|
+
Windows). The CLI uses this path to ensure it's running in the same project
|
|
63
|
+
folder that's open in the IDE. If the CLI's current working directory is not
|
|
64
|
+
a sub-directory of `workspacePath`, the connection will be rejected. Your
|
|
65
|
+
plugin **MUST** provide the correct, absolute path(s) to the root of the
|
|
66
|
+
open workspace(s).
|
|
67
|
+
- `authToken` (string, required): A secret token for securing the connection.
|
|
68
|
+
The CLI will include this token in an `Authorization: Bearer <token>` header
|
|
69
|
+
on all requests.
|
|
70
|
+
- `ideInfo` (object, required): Information about the IDE.
|
|
71
|
+
- `name` (string, required): A short, lowercase identifier for the IDE
|
|
72
|
+
(e.g., `vscode`, `jetbrains`).
|
|
73
|
+
- `displayName` (string, required): A user-friendly name for the IDE (e.g.,
|
|
74
|
+
`VS Code`, `JetBrains IDE`).
|
|
75
|
+
|
|
76
|
+
- **Authentication:** To secure the connection, the plugin **MUST** generate a
|
|
77
|
+
unique, secret token and include it in the discovery file. The CLI will then
|
|
78
|
+
include this token in the `Authorization` header for all requests to the MCP
|
|
79
|
+
server (e.g., `Authorization: Bearer a-very-secret-token`). Your server
|
|
80
|
+
**MUST** validate this token on every request and reject any that are
|
|
81
|
+
unauthorized.
|
|
82
|
+
- **Tie-breaking with environment variables (recommended):** For the most
|
|
83
|
+
reliable experience, your plugin **SHOULD** both create the discovery file and
|
|
84
|
+
set the `GEMINI_CLI_IDE_SERVER_PORT` environment variable in the integrated
|
|
85
|
+
terminal. The file serves as the primary discovery mechanism, but the
|
|
86
|
+
environment variable is crucial for tie-breaking. If a user has multiple IDE
|
|
87
|
+
windows open for the same workspace, the CLI uses the
|
|
88
|
+
`GEMINI_CLI_IDE_SERVER_PORT` variable to identify and connect to the correct
|
|
89
|
+
window's server.
|
|
90
|
+
|
|
91
|
+
## II. The context interface
|
|
92
|
+
|
|
93
|
+
To enable context awareness, the plugin **MAY** provide the CLI with real-time
|
|
94
|
+
information about the user's activity in the IDE.
|
|
95
|
+
|
|
96
|
+
### `ide/contextUpdate` notification
|
|
97
|
+
|
|
98
|
+
The plugin **MAY** send an `ide/contextUpdate`
|
|
99
|
+
[notification](https://modelcontextprotocol.io/specification/2025-06-18/basic/index#notifications)
|
|
100
|
+
to the CLI whenever the user's context changes.
|
|
101
|
+
|
|
102
|
+
- **Triggering events:** This notification should be sent (with a recommended
|
|
103
|
+
debounce of 50ms) when:
|
|
104
|
+
- A file is opened, closed, or focused.
|
|
105
|
+
- The user's cursor position or text selection changes in the active file.
|
|
106
|
+
- **Payload (`IdeContext`):** The notification parameters **MUST** be an
|
|
107
|
+
`IdeContext` object:
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
interface IdeContext {
|
|
111
|
+
workspaceState?: {
|
|
112
|
+
openFiles?: File[];
|
|
113
|
+
isTrusted?: boolean;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
interface File {
|
|
118
|
+
// Absolute path to the file
|
|
119
|
+
path: string;
|
|
120
|
+
// Last focused Unix timestamp (for ordering)
|
|
121
|
+
timestamp: number;
|
|
122
|
+
// True if this is the currently focused file
|
|
123
|
+
isActive?: boolean;
|
|
124
|
+
cursor?: {
|
|
125
|
+
// 1-based line number
|
|
126
|
+
line: number;
|
|
127
|
+
// 1-based character number
|
|
128
|
+
character: number;
|
|
129
|
+
};
|
|
130
|
+
// The text currently selected by the user
|
|
131
|
+
selectedText?: string;
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Note:** The `openFiles` list should only include files that exist on disk.
|
|
136
|
+
Virtual files (e.g., unsaved files without a path, editor settings pages)
|
|
137
|
+
**MUST** be excluded.
|
|
138
|
+
|
|
139
|
+
### How the CLI uses this context
|
|
140
|
+
|
|
141
|
+
After receiving the `IdeContext` object, the CLI performs several normalization
|
|
142
|
+
and truncation steps before sending the information to the model.
|
|
143
|
+
|
|
144
|
+
- **File ordering:** The CLI uses the `timestamp` field to determine the most
|
|
145
|
+
recently used files. It sorts the `openFiles` list based on this value.
|
|
146
|
+
Therefore, your plugin **MUST** provide an accurate Unix timestamp for when a
|
|
147
|
+
file was last focused.
|
|
148
|
+
- **Active file:** The CLI considers only the most recent file (after sorting)
|
|
149
|
+
to be the "active" file. It will ignore the `isActive` flag on all other files
|
|
150
|
+
and clear their `cursor` and `selectedText` fields. Your plugin should focus
|
|
151
|
+
on setting `isActive: true` and providing cursor/selection details only for
|
|
152
|
+
the currently focused file.
|
|
153
|
+
- **Truncation:** To manage token limits, the CLI truncates both the file list
|
|
154
|
+
(to 10 files) and the `selectedText` (to 16KB).
|
|
155
|
+
|
|
156
|
+
While the CLI handles the final truncation, it is highly recommended that your
|
|
157
|
+
plugin also limits the amount of context it sends.
|
|
158
|
+
|
|
159
|
+
## III. The diffing interface
|
|
160
|
+
|
|
161
|
+
To enable interactive code modifications, the plugin **MAY** expose a diffing
|
|
162
|
+
interface. This allows the CLI to request that the IDE open a diff view, showing
|
|
163
|
+
proposed changes to a file. The user can then review, edit, and ultimately
|
|
164
|
+
accept or reject these changes directly within the IDE.
|
|
165
|
+
|
|
166
|
+
### `openDiff` tool
|
|
167
|
+
|
|
168
|
+
The plugin **MUST** register an `openDiff` tool on its MCP server.
|
|
169
|
+
|
|
170
|
+
- **Description:** This tool instructs the IDE to open a modifiable diff view
|
|
171
|
+
for a specific file.
|
|
172
|
+
- **Request (`OpenDiffRequest`):** The tool is invoked via a `tools/call`
|
|
173
|
+
request. The `arguments` field within the request's `params` **MUST** be an
|
|
174
|
+
`OpenDiffRequest` object.
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
interface OpenDiffRequest {
|
|
178
|
+
// The absolute path to the file to be diffed.
|
|
179
|
+
filePath: string;
|
|
180
|
+
// The proposed new content for the file.
|
|
181
|
+
newContent: string;
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
- **Response (`CallToolResult`):** The tool **MUST** immediately return a
|
|
186
|
+
`CallToolResult` to acknowledge the request and report whether the diff view
|
|
187
|
+
was successfully opened.
|
|
188
|
+
- On Success: If the diff view was opened successfully, the response **MUST**
|
|
189
|
+
contain empty content (i.e., `content: []`).
|
|
190
|
+
- On Failure: If an error prevented the diff view from opening, the response
|
|
191
|
+
**MUST** have `isError: true` and include a `TextContent` block in the
|
|
192
|
+
`content` array describing the error.
|
|
193
|
+
|
|
194
|
+
The actual outcome of the diff (acceptance or rejection) is communicated
|
|
195
|
+
asynchronously via notifications.
|
|
196
|
+
|
|
197
|
+
### `closeDiff` tool
|
|
198
|
+
|
|
199
|
+
The plugin **MUST** register a `closeDiff` tool on its MCP server.
|
|
200
|
+
|
|
201
|
+
- **Description:** This tool instructs the IDE to close an open diff view for a
|
|
202
|
+
specific file.
|
|
203
|
+
- **Request (`CloseDiffRequest`):** The tool is invoked via a `tools/call`
|
|
204
|
+
request. The `arguments` field within the request's `params` **MUST** be an
|
|
205
|
+
`CloseDiffRequest` object.
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
interface CloseDiffRequest {
|
|
209
|
+
// The absolute path to the file whose diff view should be closed.
|
|
210
|
+
filePath: string;
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
- **Response (`CallToolResult`):** The tool **MUST** return a `CallToolResult`.
|
|
215
|
+
- On Success: If the diff view was closed successfully, the response **MUST**
|
|
216
|
+
include a single **TextContent** block in the content array containing the
|
|
217
|
+
file's final content before closing.
|
|
218
|
+
- On Failure: If an error prevented the diff view from closing, the response
|
|
219
|
+
**MUST** have `isError: true` and include a `TextContent` block in the
|
|
220
|
+
`content` array describing the error.
|
|
221
|
+
|
|
222
|
+
### `ide/diffAccepted` notification
|
|
223
|
+
|
|
224
|
+
When the user accepts the changes in a diff view (e.g., by clicking an "Apply"
|
|
225
|
+
or "Save" button), the plugin **MUST** send an `ide/diffAccepted` notification
|
|
226
|
+
to the CLI.
|
|
227
|
+
|
|
228
|
+
- **Payload:** The notification parameters **MUST** include the file path and
|
|
229
|
+
the final content of the file. The content may differ from the original
|
|
230
|
+
`newContent` if the user made manual edits in the diff view.
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
{
|
|
234
|
+
// The absolute path to the file that was diffed.
|
|
235
|
+
filePath: string;
|
|
236
|
+
// The full content of the file after acceptance.
|
|
237
|
+
content: string;
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### `ide/diffRejected` notification
|
|
242
|
+
|
|
243
|
+
When the user rejects the changes (e.g., by closing the diff view without
|
|
244
|
+
accepting), the plugin **MUST** send an `ide/diffRejected` notification to the
|
|
245
|
+
CLI.
|
|
246
|
+
|
|
247
|
+
- **Payload:** The notification parameters **MUST** include the file path of the
|
|
248
|
+
rejected diff.
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
{
|
|
252
|
+
// The absolute path to the file that was diffed.
|
|
253
|
+
filePath: string;
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## IV. The lifecycle interface
|
|
258
|
+
|
|
259
|
+
The plugin **MUST** manage its resources and the discovery file correctly based
|
|
260
|
+
on the IDE's lifecycle.
|
|
261
|
+
|
|
262
|
+
- **On activation (IDE startup/plugin enabled):**
|
|
263
|
+
1. Start the MCP server.
|
|
264
|
+
2. Create the discovery file.
|
|
265
|
+
- **On deactivation (IDE shutdown/plugin disabled):**
|
|
266
|
+
1. Stop the MCP server.
|
|
267
|
+
2. Delete the discovery file.
|