@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,677 @@
|
|
|
1
|
+
# Hooks Best Practices
|
|
2
|
+
|
|
3
|
+
This guide covers security considerations, performance optimization, debugging
|
|
4
|
+
techniques, and privacy considerations for developing and deploying hooks in
|
|
5
|
+
Gemini CLI.
|
|
6
|
+
|
|
7
|
+
## Performance
|
|
8
|
+
|
|
9
|
+
### Keep hooks fast
|
|
10
|
+
|
|
11
|
+
Hooks run synchronously—slow hooks delay the agent loop. Optimize for speed by
|
|
12
|
+
using parallel operations:
|
|
13
|
+
|
|
14
|
+
```javascript
|
|
15
|
+
// Sequential operations are slower
|
|
16
|
+
const data1 = await fetch(url1).then((r) => r.json());
|
|
17
|
+
const data2 = await fetch(url2).then((r) => r.json());
|
|
18
|
+
|
|
19
|
+
// Prefer parallel operations for better performance
|
|
20
|
+
// Start requests concurrently
|
|
21
|
+
const p1 = fetch(url1).then((r) => r.json());
|
|
22
|
+
const p2 = fetch(url2).then((r) => r.json());
|
|
23
|
+
|
|
24
|
+
// Wait for all results
|
|
25
|
+
const [data1, data2] = await Promise.all([p1, p2]);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Cache expensive operations
|
|
29
|
+
|
|
30
|
+
Store results between invocations to avoid repeated computation, especially for
|
|
31
|
+
hooks that run frequently (like `BeforeTool` or `AfterModel`).
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
const fs = require('fs');
|
|
35
|
+
const path = require('path');
|
|
36
|
+
|
|
37
|
+
const CACHE_FILE = '.gemini/hook-cache.json';
|
|
38
|
+
|
|
39
|
+
function readCache() {
|
|
40
|
+
try {
|
|
41
|
+
return JSON.parse(fs.readFileSync(CACHE_FILE, 'utf8'));
|
|
42
|
+
} catch {
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function writeCache(data) {
|
|
48
|
+
fs.writeFileSync(CACHE_FILE, JSON.stringify(data, null, 2));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function main() {
|
|
52
|
+
const cache = readCache();
|
|
53
|
+
const cacheKey = `tool-list-${(Date.now() / 3600000) | 0}`; // Hourly cache
|
|
54
|
+
|
|
55
|
+
if (cache[cacheKey]) {
|
|
56
|
+
// Write JSON to stdout
|
|
57
|
+
console.log(JSON.stringify(cache[cacheKey]));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Expensive operation
|
|
62
|
+
const result = await computeExpensiveResult();
|
|
63
|
+
cache[cacheKey] = result;
|
|
64
|
+
writeCache(cache);
|
|
65
|
+
|
|
66
|
+
console.log(JSON.stringify(result));
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Use appropriate events
|
|
71
|
+
|
|
72
|
+
Choose hook events that match your use case to avoid unnecessary execution.
|
|
73
|
+
|
|
74
|
+
- **`AfterAgent`**: Fires **once** per turn after the model finishes its final
|
|
75
|
+
response. Use this for quality validation (Retries) or final logging.
|
|
76
|
+
- **`AfterModel`**: Fires after **every chunk** of LLM output. Use this for
|
|
77
|
+
real-time redaction, PII filtering, or monitoring output as it streams.
|
|
78
|
+
|
|
79
|
+
If you only need to check the final completion, use `AfterAgent` to save
|
|
80
|
+
performance.
|
|
81
|
+
|
|
82
|
+
### Filter with matchers
|
|
83
|
+
|
|
84
|
+
Use specific matchers to avoid unnecessary hook execution. Instead of matching
|
|
85
|
+
all tools with `*`, specify only the tools you need. This saves the overhead of
|
|
86
|
+
spawning a process for irrelevant events.
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"matcher": "write_file|replace",
|
|
91
|
+
"hooks": [
|
|
92
|
+
{
|
|
93
|
+
"name": "validate-writes",
|
|
94
|
+
"type": "command",
|
|
95
|
+
"command": "./validate.sh"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Optimize JSON parsing
|
|
102
|
+
|
|
103
|
+
For large inputs (like `AfterModel` receiving a large context), standard JSON
|
|
104
|
+
parsing can be slow. If you only need one field, consider streaming parsers or
|
|
105
|
+
lightweight extraction logic, though for most shell scripts `jq` is sufficient.
|
|
106
|
+
|
|
107
|
+
## Debugging
|
|
108
|
+
|
|
109
|
+
### The "Strict JSON" rule
|
|
110
|
+
|
|
111
|
+
The most common cause of hook failure is "polluting" the standard output.
|
|
112
|
+
|
|
113
|
+
- **stdout** is for **JSON only**.
|
|
114
|
+
- **stderr** is for **logs and text**.
|
|
115
|
+
|
|
116
|
+
**Good:**
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
#!/bin/bash
|
|
120
|
+
echo "Starting check..." >&2 # <--- Redirect to stderr
|
|
121
|
+
echo '{"decision": "allow"}'
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Log to files
|
|
126
|
+
|
|
127
|
+
Since hooks run in the background, writing to a dedicated log file is often the
|
|
128
|
+
easiest way to debug complex logic.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
#!/usr/bin/env bash
|
|
132
|
+
LOG_FILE=".gemini/hooks/debug.log"
|
|
133
|
+
|
|
134
|
+
# Log with timestamp
|
|
135
|
+
log() {
|
|
136
|
+
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG_FILE"
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
input=$(cat)
|
|
140
|
+
log "Received input: ${input:0:100}..."
|
|
141
|
+
|
|
142
|
+
# Hook logic here
|
|
143
|
+
|
|
144
|
+
log "Hook completed successfully"
|
|
145
|
+
# Always output valid JSON to stdout at the end, even if just empty
|
|
146
|
+
echo "{}"
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Use stderr for errors
|
|
151
|
+
|
|
152
|
+
Error messages on stderr are surfaced appropriately based on exit codes:
|
|
153
|
+
|
|
154
|
+
```javascript
|
|
155
|
+
try {
|
|
156
|
+
const result = dangerousOperation();
|
|
157
|
+
console.log(JSON.stringify({ result }));
|
|
158
|
+
} catch (error) {
|
|
159
|
+
// Write the error description to stderr so the user/agent sees it
|
|
160
|
+
console.error(`Hook error: ${error.message}`);
|
|
161
|
+
process.exit(2); // Blocking error
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Test hooks independently
|
|
166
|
+
|
|
167
|
+
Run hook scripts manually with sample JSON input to verify they behave as
|
|
168
|
+
expected before hooking them up to the CLI.
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Create test input
|
|
172
|
+
cat > test-input.json << 'EOF'
|
|
173
|
+
{
|
|
174
|
+
"session_id": "test-123",
|
|
175
|
+
"cwd": "/tmp/test",
|
|
176
|
+
"hook_event_name": "BeforeTool",
|
|
177
|
+
"tool_name": "write_file",
|
|
178
|
+
"tool_input": {
|
|
179
|
+
"file_path": "test.txt",
|
|
180
|
+
"content": "Test content"
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
EOF
|
|
184
|
+
|
|
185
|
+
# Test the hook
|
|
186
|
+
cat test-input.json | .gemini/hooks/my-hook.sh
|
|
187
|
+
|
|
188
|
+
# Check exit code
|
|
189
|
+
echo "Exit code: $?"
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Check exit codes
|
|
194
|
+
|
|
195
|
+
Gemini CLI uses exit codes for high-level flow control:
|
|
196
|
+
|
|
197
|
+
- **Exit 0 (Success)**: The hook ran successfully. The CLI parses `stdout` for
|
|
198
|
+
JSON decisions.
|
|
199
|
+
- **Exit 2 (System Block)**: A critical block occurred. `stderr` is used as the
|
|
200
|
+
reason.
|
|
201
|
+
- For **Agent/Model** events, this aborts the turn.
|
|
202
|
+
- For **Tool** events, this blocks the tool but allows the agent to continue.
|
|
203
|
+
- For **AfterAgent**, this triggers an automatic retry turn.
|
|
204
|
+
|
|
205
|
+
> **TIP**
|
|
206
|
+
>
|
|
207
|
+
> **Blocking vs. Stopping**: Use `decision: "deny"` (or Exit Code 2) to block a
|
|
208
|
+
> **specific action**. Use `{"continue": false}` in your JSON output to **kill
|
|
209
|
+
> the entire agent loop** immediately.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
#!/usr/bin/env bash
|
|
213
|
+
set -e
|
|
214
|
+
|
|
215
|
+
# Hook logic
|
|
216
|
+
if process_input; then
|
|
217
|
+
echo '{"decision": "allow"}'
|
|
218
|
+
exit 0
|
|
219
|
+
else
|
|
220
|
+
echo "Critical validation failure" >&2
|
|
221
|
+
exit 2
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Enable telemetry
|
|
227
|
+
|
|
228
|
+
Hook execution is logged when `telemetry.logPrompts` is enabled. You can view
|
|
229
|
+
these logs to debug execution flow.
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"telemetry": {
|
|
234
|
+
"logPrompts": true
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Use hook panel
|
|
240
|
+
|
|
241
|
+
The `/hooks panel` command inside the CLI shows execution status and recent
|
|
242
|
+
output:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
/hooks panel
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Check for:
|
|
249
|
+
|
|
250
|
+
- Hook execution counts
|
|
251
|
+
- Recent successes/failures
|
|
252
|
+
- Error messages
|
|
253
|
+
- Execution timing
|
|
254
|
+
|
|
255
|
+
## Development
|
|
256
|
+
|
|
257
|
+
### Start simple
|
|
258
|
+
|
|
259
|
+
Begin with basic logging hooks before implementing complex logic:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
#!/usr/bin/env bash
|
|
263
|
+
# Simple logging hook to understand input structure
|
|
264
|
+
input=$(cat)
|
|
265
|
+
echo "$input" >> .gemini/hook-inputs.log
|
|
266
|
+
# Always return valid JSON
|
|
267
|
+
echo "{}"
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Documenting your hooks
|
|
272
|
+
|
|
273
|
+
Maintainability is critical for complex hook systems. Use descriptions and
|
|
274
|
+
comments to help yourself and others understand why a hook exists.
|
|
275
|
+
|
|
276
|
+
**Use the `description` field**: This text is displayed in the `/hooks panel` UI
|
|
277
|
+
and helps diagnose issues.
|
|
278
|
+
|
|
279
|
+
```json
|
|
280
|
+
{
|
|
281
|
+
"hooks": {
|
|
282
|
+
"BeforeTool": [
|
|
283
|
+
{
|
|
284
|
+
"matcher": "write_file|replace",
|
|
285
|
+
"hooks": [
|
|
286
|
+
{
|
|
287
|
+
"name": "secret-scanner",
|
|
288
|
+
"type": "command",
|
|
289
|
+
"command": "$GEMINI_PROJECT_DIR/.gemini/hooks/block-secrets.sh",
|
|
290
|
+
"description": "Scans code changes for API keys and secrets before writing"
|
|
291
|
+
}
|
|
292
|
+
]
|
|
293
|
+
}
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Add comments in hook scripts**: Explain performance expectations and
|
|
300
|
+
dependencies.
|
|
301
|
+
|
|
302
|
+
```javascript
|
|
303
|
+
#!/usr/bin/env node
|
|
304
|
+
/**
|
|
305
|
+
* RAG Tool Filter Hook
|
|
306
|
+
*
|
|
307
|
+
* Reduces the tool space by extracting keywords from the user's request.
|
|
308
|
+
*
|
|
309
|
+
* Performance: ~500ms average
|
|
310
|
+
* Dependencies: @google/generative-ai
|
|
311
|
+
*/
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Use JSON libraries
|
|
315
|
+
|
|
316
|
+
Parse JSON with proper libraries instead of text processing.
|
|
317
|
+
|
|
318
|
+
**Bad:**
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
# Fragile text parsing
|
|
322
|
+
tool_name=$(echo "$input" | grep -oP '"tool_name":\s*"\K[^"]+')
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
**Good:**
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
# Robust JSON parsing
|
|
330
|
+
tool_name=$(echo "$input" | jq -r '.tool_name')
|
|
331
|
+
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Make scripts executable
|
|
335
|
+
|
|
336
|
+
Always make hook scripts executable:
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
chmod +x .gemini/hooks/*.sh
|
|
340
|
+
chmod +x .gemini/hooks/*.js
|
|
341
|
+
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Version control
|
|
345
|
+
|
|
346
|
+
Commit hooks to share with your team:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
git add .gemini/hooks/
|
|
350
|
+
git add .gemini/settings.json
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**`.gitignore` considerations:**
|
|
355
|
+
|
|
356
|
+
```gitignore
|
|
357
|
+
# Ignore hook cache and logs
|
|
358
|
+
.gemini/hook-cache.json
|
|
359
|
+
.gemini/hook-debug.log
|
|
360
|
+
.gemini/memory/session-*.jsonl
|
|
361
|
+
|
|
362
|
+
# Keep hook scripts
|
|
363
|
+
!.gemini/hooks/*.sh
|
|
364
|
+
!.gemini/hooks/*.js
|
|
365
|
+
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## Hook security
|
|
369
|
+
|
|
370
|
+
### Threat Model
|
|
371
|
+
|
|
372
|
+
Understanding where hooks come from and what they can do is critical for secure
|
|
373
|
+
usage.
|
|
374
|
+
|
|
375
|
+
| Hook Source | Description |
|
|
376
|
+
| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------- |
|
|
377
|
+
| **System** | Configured by system administrators (e.g., `/etc/gemini-cli/settings.json`, `/Library/...`). Assumed to be the **safest**. |
|
|
378
|
+
| **User** (`~/.gemini/...`) | Configured by you. You are responsible for ensuring they are safe. |
|
|
379
|
+
| **Extensions** | You explicitly approve and install these. Security depends on the extension source (integrity). |
|
|
380
|
+
| **Project** (`./.gemini/...`) | **Untrusted by default.** Safest in trusted internal repos; higher risk in third-party/public repos. |
|
|
381
|
+
|
|
382
|
+
#### Project Hook Security
|
|
383
|
+
|
|
384
|
+
When you open a project with hooks defined in `.gemini/settings.json`:
|
|
385
|
+
|
|
386
|
+
1. **Detection**: Gemini CLI detects the hooks.
|
|
387
|
+
2. **Identification**: A unique identity is generated for each hook based on its
|
|
388
|
+
`name` and `command`.
|
|
389
|
+
3. **Warning**: If this specific hook identity has not been seen before, a
|
|
390
|
+
**warning** is displayed.
|
|
391
|
+
4. **Execution**: The hook is executed (unless specific security settings block
|
|
392
|
+
it).
|
|
393
|
+
5. **Trust**: The hook is marked as "trusted" for this project.
|
|
394
|
+
|
|
395
|
+
> **Modification detection**: If the `command` string of a project hook is
|
|
396
|
+
> changed (e.g., by a `git pull`), its identity changes. Gemini CLI will treat
|
|
397
|
+
> it as a **new, untrusted hook** and warn you again. This prevents malicious
|
|
398
|
+
> actors from silently swapping a verified command for a malicious one.
|
|
399
|
+
|
|
400
|
+
### Risks
|
|
401
|
+
|
|
402
|
+
| Risk | Description |
|
|
403
|
+
| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
|
|
404
|
+
| **Arbitrary Code Execution** | Hooks run as your user. They can do anything you can do (delete files, install software). |
|
|
405
|
+
| **Data Exfiltration** | A hook could read your input (prompts), output (code), or environment variables (`GEMINI_API_KEY`) and send them to a remote server. |
|
|
406
|
+
| **Prompt Injection** | Malicious content in a file or web page could trick an LLM into running a tool that triggers a hook in an unexpected way. |
|
|
407
|
+
|
|
408
|
+
### Mitigation Strategies
|
|
409
|
+
|
|
410
|
+
#### Verify the source
|
|
411
|
+
|
|
412
|
+
**Verify the source** of any project hooks or extensions before enabling them.
|
|
413
|
+
|
|
414
|
+
- For open-source projects, a quick review of the hook scripts is recommended.
|
|
415
|
+
- For extensions, ensure you trust the author or publisher (e.g., verified
|
|
416
|
+
publishers, well-known community members).
|
|
417
|
+
- Be cautious with obfuscated scripts or compiled binaries from unknown sources.
|
|
418
|
+
|
|
419
|
+
#### Sanitize environment
|
|
420
|
+
|
|
421
|
+
Hooks inherit the environment of the Gemini CLI process, which may include
|
|
422
|
+
sensitive API keys. Gemini CLI provides a
|
|
423
|
+
[redaction system](/docs/get-started/configuration#environment-variable-redaction)
|
|
424
|
+
that automatically filters variables matching sensitive patterns (e.g., `KEY`,
|
|
425
|
+
`TOKEN`).
|
|
426
|
+
|
|
427
|
+
> **Disabled by Default**: Environment redaction is currently **OFF by
|
|
428
|
+
> default**. We strongly recommend enabling it if you are running third-party
|
|
429
|
+
> hooks or working in sensitive environments.
|
|
430
|
+
|
|
431
|
+
**Impact on hooks:**
|
|
432
|
+
|
|
433
|
+
- **Security**: Prevents your hook scripts from accidentally leaking secrets.
|
|
434
|
+
- **Troubleshooting**: If your hook depends on a specific environment variable
|
|
435
|
+
that is being blocked, you must explicitly allow it in `settings.json`.
|
|
436
|
+
|
|
437
|
+
```json
|
|
438
|
+
{
|
|
439
|
+
"security": {
|
|
440
|
+
"environmentVariableRedaction": {
|
|
441
|
+
"enabled": true,
|
|
442
|
+
"allowed": ["MY_REQUIRED_TOOL_KEY"]
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
**System administrators:** You can enforce redaction for all users in the system
|
|
449
|
+
configuration.
|
|
450
|
+
|
|
451
|
+
## Troubleshooting
|
|
452
|
+
|
|
453
|
+
### Hook not executing
|
|
454
|
+
|
|
455
|
+
**Check hook name in `/hooks panel`:** Verify the hook appears in the list and
|
|
456
|
+
is enabled.
|
|
457
|
+
|
|
458
|
+
**Verify matcher pattern:**
|
|
459
|
+
|
|
460
|
+
```bash
|
|
461
|
+
# Test regex pattern
|
|
462
|
+
echo "write_file|replace" | grep -E "write_.*|replace"
|
|
463
|
+
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
**Check disabled list:** Verify the hook is not listed in your `settings.json`:
|
|
467
|
+
|
|
468
|
+
```json
|
|
469
|
+
{
|
|
470
|
+
"hooks": {
|
|
471
|
+
"disabled": ["my-hook-name"]
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
**Ensure script is executable**: For macOS and Linux users, verify the script
|
|
477
|
+
has execution permissions:
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
ls -la .gemini/hooks/my-hook.sh
|
|
481
|
+
chmod +x .gemini/hooks/my-hook.sh
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
**Verify script path:** Ensure the path in `settings.json` resolves correctly.
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
# Check path expansion
|
|
488
|
+
echo "$GEMINI_PROJECT_DIR/.gemini/hooks/my-hook.sh"
|
|
489
|
+
|
|
490
|
+
# Verify file exists
|
|
491
|
+
test -f "$GEMINI_PROJECT_DIR/.gemini/hooks/my-hook.sh" && echo "File exists"
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### Hook timing out
|
|
495
|
+
|
|
496
|
+
**Check configured timeout:** The default is 60000ms (1 minute). You can
|
|
497
|
+
increase this in `settings.json`:
|
|
498
|
+
|
|
499
|
+
```json
|
|
500
|
+
{
|
|
501
|
+
"name": "slow-hook",
|
|
502
|
+
"timeout": 120000
|
|
503
|
+
}
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
**Optimize slow operations:** Move heavy processing to background tasks or use
|
|
507
|
+
caching.
|
|
508
|
+
|
|
509
|
+
### Invalid JSON output
|
|
510
|
+
|
|
511
|
+
**Validate JSON before outputting:**
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
#!/usr/bin/env bash
|
|
515
|
+
output='{"decision": "allow"}'
|
|
516
|
+
|
|
517
|
+
# Validate JSON
|
|
518
|
+
if echo "$output" | jq empty 2>/dev/null; then
|
|
519
|
+
echo "$output"
|
|
520
|
+
else
|
|
521
|
+
echo "Invalid JSON generated" >&2
|
|
522
|
+
exit 1
|
|
523
|
+
fi
|
|
524
|
+
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
### Environment variables not available
|
|
528
|
+
|
|
529
|
+
**Check if variable is set:**
|
|
530
|
+
|
|
531
|
+
```bash
|
|
532
|
+
#!/usr/bin/env bash
|
|
533
|
+
if [ -z "$GEMINI_PROJECT_DIR" ]; then
|
|
534
|
+
echo "GEMINI_PROJECT_DIR not set" >&2
|
|
535
|
+
exit 1
|
|
536
|
+
fi
|
|
537
|
+
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
**Debug available variables:**
|
|
541
|
+
|
|
542
|
+
```bash
|
|
543
|
+
env > .gemini/hook-env.log
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
## Authoring secure hooks
|
|
547
|
+
|
|
548
|
+
When writing your own hooks, follow these practices to ensure they are robust
|
|
549
|
+
and secure.
|
|
550
|
+
|
|
551
|
+
### Validate all inputs
|
|
552
|
+
|
|
553
|
+
Never trust data from hooks without validation. Hook inputs often come from the
|
|
554
|
+
LLM or user prompts, which can be manipulated.
|
|
555
|
+
|
|
556
|
+
```bash
|
|
557
|
+
#!/usr/bin/env bash
|
|
558
|
+
input=$(cat)
|
|
559
|
+
|
|
560
|
+
# Validate JSON structure
|
|
561
|
+
if ! echo "$input" | jq empty 2>/dev/null; then
|
|
562
|
+
echo "Invalid JSON input" >&2
|
|
563
|
+
exit 1
|
|
564
|
+
fi
|
|
565
|
+
|
|
566
|
+
# Validate tool_name explicitly
|
|
567
|
+
tool_name=$(echo "$input" | jq -r '.tool_name // empty')
|
|
568
|
+
if [[ "$tool_name" != "write_file" && "$tool_name" != "read_file" ]]; then
|
|
569
|
+
echo "Unexpected tool: $tool_name" >&2
|
|
570
|
+
exit 1
|
|
571
|
+
fi
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### Use timeouts
|
|
575
|
+
|
|
576
|
+
Prevent denial-of-service (hanging agents) by enforcing timeouts. Gemini CLI
|
|
577
|
+
defaults to 60 seconds, but you should set stricter limits for fast hooks.
|
|
578
|
+
|
|
579
|
+
```json
|
|
580
|
+
{
|
|
581
|
+
"hooks": {
|
|
582
|
+
"BeforeTool": [
|
|
583
|
+
{
|
|
584
|
+
"matcher": "*",
|
|
585
|
+
"hooks": [
|
|
586
|
+
{
|
|
587
|
+
"name": "fast-validator",
|
|
588
|
+
"type": "command",
|
|
589
|
+
"command": "./hooks/validate.sh",
|
|
590
|
+
"timeout": 5000 // 5 seconds
|
|
591
|
+
}
|
|
592
|
+
]
|
|
593
|
+
}
|
|
594
|
+
]
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### Limit permissions
|
|
600
|
+
|
|
601
|
+
Run hooks with minimal required permissions:
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
#!/usr/bin/env bash
|
|
605
|
+
# Don't run as root
|
|
606
|
+
if [ "$EUID" -eq 0 ]; then
|
|
607
|
+
echo "Hook should not run as root" >&2
|
|
608
|
+
exit 1
|
|
609
|
+
fi
|
|
610
|
+
|
|
611
|
+
# Check file permissions before writing
|
|
612
|
+
if [ -w "$file_path" ]; then
|
|
613
|
+
# Safe to write
|
|
614
|
+
else
|
|
615
|
+
echo "Insufficient permissions" >&2
|
|
616
|
+
exit 1
|
|
617
|
+
fi
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
### Example: Secret Scanner
|
|
621
|
+
|
|
622
|
+
Use `BeforeTool` hooks to prevent committing sensitive data. This is a powerful
|
|
623
|
+
pattern for enhancing security in your workflow.
|
|
624
|
+
|
|
625
|
+
```javascript
|
|
626
|
+
const SECRET_PATTERNS = [
|
|
627
|
+
/api[_-]?key\s*[:=]\s*['"]?[a-zA-Z0-9_-]{20,}['"]?/i,
|
|
628
|
+
/password\s*[:=]\s*['"]?[^\s'"]{8,}['"]?/i,
|
|
629
|
+
/secret\s*[:=]\s*['"]?[a-zA-Z0-9_-]{20,}['"]?/i,
|
|
630
|
+
/AKIA[0-9A-Z]{16}/, // AWS access key
|
|
631
|
+
/ghp_[a-zA-Z0-9]{36}/, // GitHub personal access token
|
|
632
|
+
/sk-[a-zA-Z0-9]{48}/, // OpenAI API key
|
|
633
|
+
];
|
|
634
|
+
|
|
635
|
+
function containsSecret(content) {
|
|
636
|
+
return SECRET_PATTERNS.some((pattern) => pattern.test(content));
|
|
637
|
+
}
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
## Privacy considerations
|
|
641
|
+
|
|
642
|
+
Hook inputs and outputs may contain sensitive information.
|
|
643
|
+
|
|
644
|
+
### What data is collected
|
|
645
|
+
|
|
646
|
+
Hook telemetry may include inputs (prompts, code) and outputs (decisions,
|
|
647
|
+
reasons) unless disabled.
|
|
648
|
+
|
|
649
|
+
### Privacy settings
|
|
650
|
+
|
|
651
|
+
**Disable PII logging:** If you are working with sensitive data, disable prompt
|
|
652
|
+
logging in your settings:
|
|
653
|
+
|
|
654
|
+
```json
|
|
655
|
+
{
|
|
656
|
+
"telemetry": {
|
|
657
|
+
"logPrompts": false
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
**Suppress Output:** Individual hooks can request their metadata be hidden from
|
|
663
|
+
logs and telemetry by returning `"suppressOutput": true` in their JSON response.
|
|
664
|
+
|
|
665
|
+
> **Note**
|
|
666
|
+
|
|
667
|
+
> `suppressOutput` only affects background logging. Any `systemMessage` or
|
|
668
|
+
> `reason` included in the JSON will still be displayed to the user in the
|
|
669
|
+
> terminal.
|
|
670
|
+
|
|
671
|
+
### Sensitive data in hooks
|
|
672
|
+
|
|
673
|
+
If your hooks process sensitive data:
|
|
674
|
+
|
|
675
|
+
1. **Minimize logging:** Don't write sensitive data to log files.
|
|
676
|
+
2. **Sanitize outputs:** Remove sensitive data before outputting JSON or writing
|
|
677
|
+
to stderr.
|