@office-ai/aioncli-core 0.26.0 → 0.30.1
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/docs/admin/enterprise-controls.md +115 -0
- package/dist/docs/architecture.md +3 -3
- 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/theme-ansi-dark.png +0 -0
- package/dist/docs/assets/theme-atom-one-dark.png +0 -0
- package/dist/docs/assets/theme-ayu-dark.png +0 -0
- package/dist/docs/assets/theme-default-dark.png +0 -0
- package/dist/docs/assets/theme-dracula-dark.png +0 -0
- package/dist/docs/assets/theme-github-dark.png +0 -0
- package/dist/docs/assets/theme-holiday-dark.png +0 -0
- package/dist/docs/assets/theme-shades-of-purple-dark.png +0 -0
- package/dist/docs/assets/theme-solarized-dark.png +0 -0
- package/dist/docs/assets/theme-solarized-light.png +0 -0
- package/dist/docs/bedrock-integration-plan.md +595 -0
- package/dist/docs/changelogs/index.md +187 -0
- package/dist/docs/changelogs/latest.md +299 -209
- package/dist/docs/changelogs/preview.md +353 -115
- package/dist/docs/cli/checkpointing.md +2 -3
- package/dist/docs/cli/cli-reference.md +115 -0
- package/dist/docs/cli/commands.md +360 -247
- package/dist/docs/cli/creating-skills.md +80 -0
- package/dist/docs/cli/custom-commands.md +12 -9
- package/dist/docs/cli/enterprise.md +25 -5
- package/dist/docs/cli/gemini-md.md +20 -12
- package/dist/docs/cli/headless.md +34 -372
- package/dist/docs/cli/index.md +123 -63
- package/dist/docs/cli/keyboard-shortcuts.md +95 -84
- package/dist/docs/cli/model-routing.md +7 -2
- package/dist/docs/cli/model.md +1 -1
- package/dist/docs/cli/notifications.md +58 -0
- package/dist/docs/cli/plan-mode.md +190 -0
- package/dist/docs/cli/rewind.md +51 -0
- package/dist/docs/cli/sandbox.md +4 -3
- package/dist/docs/cli/session-management.md +61 -44
- package/dist/docs/cli/settings.md +95 -61
- package/dist/docs/cli/skills.md +49 -71
- package/dist/docs/cli/system-prompt.md +32 -0
- package/dist/docs/cli/telemetry.md +75 -4
- package/dist/docs/cli/themes.md +85 -53
- package/dist/docs/cli/tutorials/automation.md +187 -0
- package/dist/docs/cli/tutorials/file-management.md +142 -0
- package/dist/docs/cli/tutorials/mcp-setup.md +105 -0
- package/dist/docs/cli/tutorials/memory-management.md +126 -0
- package/dist/docs/cli/tutorials/session-management.md +105 -0
- package/dist/docs/cli/tutorials/shell-commands.md +107 -0
- package/dist/docs/cli/tutorials/skills-getting-started.md +36 -58
- package/dist/docs/cli/tutorials/task-planning.md +93 -0
- package/dist/docs/cli/tutorials/web-tools.md +78 -0
- package/dist/docs/cli/uninstall.md +18 -0
- package/dist/docs/core/concepts.md +137 -0
- package/dist/docs/core/index.md +6 -0
- package/dist/docs/core/memport.md +2 -0
- package/dist/docs/core/policy-engine.md +57 -7
- package/dist/docs/core/remote-agents.md +84 -0
- package/dist/docs/core/subagents.md +191 -0
- package/dist/docs/extensions/best-practices.md +188 -0
- package/dist/docs/extensions/index.md +38 -270
- package/dist/docs/extensions/reference.md +265 -0
- package/dist/docs/extensions/releasing.md +154 -0
- package/dist/docs/extensions/writing-extensions.md +292 -0
- package/dist/docs/get-started/authentication.md +162 -0
- package/dist/docs/get-started/configuration-v1.md +5 -11
- package/dist/docs/get-started/configuration.md +228 -99
- package/dist/docs/get-started/examples.md +39 -119
- package/dist/docs/get-started/gemini-3.md +2 -17
- package/dist/docs/get-started/index.md +6 -4
- package/dist/docs/get-started/installation.md +110 -77
- package/dist/docs/hooks/best-practices.md +219 -398
- package/dist/docs/hooks/index.md +99 -622
- package/dist/docs/hooks/reference.md +269 -115
- package/dist/docs/hooks/writing-hooks.md +203 -779
- package/dist/docs/index.md +146 -147
- package/dist/docs/local-development.md +1 -1
- package/dist/docs/redirects.json +20 -0
- package/dist/docs/reference/commands.md +563 -0
- package/dist/docs/reference/configuration.md +1804 -0
- package/dist/docs/reference/keyboard-shortcuts.md +168 -0
- package/dist/docs/reference/memport.md +246 -0
- package/dist/docs/reference/policy-engine.md +386 -0
- package/dist/docs/reference/tools.md +106 -0
- package/dist/docs/releases.md +3 -3
- package/dist/docs/resources/faq.md +175 -0
- package/dist/docs/resources/quota-and-pricing.md +199 -0
- package/dist/docs/resources/tos-privacy.md +102 -0
- package/dist/docs/resources/troubleshooting.md +176 -0
- package/dist/docs/resources/uninstall.md +56 -0
- package/dist/docs/sidebar.json +105 -217
- package/dist/docs/tools/activate-skill.md +43 -0
- package/dist/docs/tools/ask-user.md +95 -0
- package/dist/docs/tools/file-system.md +48 -139
- package/dist/docs/tools/index.md +92 -85
- package/dist/docs/tools/internal-docs.md +46 -0
- package/dist/docs/tools/mcp-server.md +29 -5
- package/dist/docs/tools/memory.md +21 -40
- package/dist/docs/tools/planning.md +55 -0
- package/dist/docs/tools/shell.md +45 -89
- package/dist/docs/tools/todos.md +22 -44
- package/dist/docs/tools/web-fetch.md +22 -46
- package/dist/docs/tools/web-search.md +19 -29
- package/dist/docs/tos-privacy.md +1 -1
- package/dist/docs/troubleshooting.md +20 -5
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.d.ts +4 -5
- package/dist/src/agents/a2a-client-manager.js +9 -131
- package/dist/src/agents/a2a-client-manager.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.test.js +10 -27
- package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
- package/dist/src/agents/a2a-errors.d.ts +65 -0
- package/dist/src/agents/a2a-errors.js +164 -0
- package/dist/src/agents/a2a-errors.js.map +1 -0
- package/dist/src/agents/a2a-errors.test.d.ts +6 -0
- package/dist/src/agents/a2a-errors.test.js +183 -0
- package/dist/src/agents/a2a-errors.test.js.map +1 -0
- package/dist/src/agents/a2aUtils.d.ts +3 -2
- package/dist/src/agents/a2aUtils.js +28 -26
- package/dist/src/agents/a2aUtils.js.map +1 -1
- package/dist/src/agents/a2aUtils.test.js +9 -9
- package/dist/src/agents/a2aUtils.test.js.map +1 -1
- 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/acknowledgedAgents.test.d.ts +6 -0
- package/dist/src/agents/acknowledgedAgents.test.js +70 -0
- package/dist/src/agents/acknowledgedAgents.test.js.map +1 -0
- package/dist/src/agents/agent-scheduler.d.ts +35 -0
- package/dist/src/agents/agent-scheduler.js +30 -0
- package/dist/src/agents/agent-scheduler.js.map +1 -0
- package/dist/src/agents/agent-scheduler.test.d.ts +6 -0
- package/dist/src/agents/agent-scheduler.test.js +56 -0
- package/dist/src/agents/agent-scheduler.test.js.map +1 -0
- package/dist/src/agents/agentLoader.d.ts +88 -0
- package/dist/src/agents/agentLoader.js +394 -0
- package/dist/src/agents/agentLoader.js.map +1 -0
- package/dist/src/agents/agentLoader.test.js +458 -0
- package/dist/src/agents/agentLoader.test.js.map +1 -0
- package/dist/src/agents/auth-provider/api-key-provider.d.ts +30 -0
- package/dist/src/agents/auth-provider/api-key-provider.js +66 -0
- package/dist/src/agents/auth-provider/api-key-provider.js.map +1 -0
- package/dist/src/agents/auth-provider/api-key-provider.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/api-key-provider.test.js +130 -0
- package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -0
- package/dist/src/agents/auth-provider/base-provider.d.ts +40 -0
- package/dist/src/agents/auth-provider/base-provider.js +43 -0
- package/dist/src/agents/auth-provider/base-provider.js.map +1 -0
- package/dist/src/agents/auth-provider/base-provider.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/base-provider.test.js +107 -0
- package/dist/src/agents/auth-provider/base-provider.test.js.map +1 -0
- package/dist/src/agents/auth-provider/factory.d.ts +27 -0
- package/dist/src/agents/auth-provider/factory.js +161 -0
- package/dist/src/agents/auth-provider/factory.js.map +1 -0
- package/dist/src/agents/auth-provider/factory.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/factory.test.js +344 -0
- package/dist/src/agents/auth-provider/factory.test.js.map +1 -0
- package/dist/src/agents/auth-provider/http-provider.d.ts +28 -0
- package/dist/src/agents/auth-provider/http-provider.js +73 -0
- package/dist/src/agents/auth-provider/http-provider.js.map +1 -0
- package/dist/src/agents/auth-provider/http-provider.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/http-provider.test.js +112 -0
- package/dist/src/agents/auth-provider/http-provider.test.js.map +1 -0
- package/dist/src/agents/auth-provider/oauth2-provider.d.ts +65 -0
- package/dist/src/agents/auth-provider/oauth2-provider.js +233 -0
- package/dist/src/agents/auth-provider/oauth2-provider.js.map +1 -0
- package/dist/src/agents/auth-provider/oauth2-provider.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/oauth2-provider.test.js +490 -0
- package/dist/src/agents/auth-provider/oauth2-provider.test.js.map +1 -0
- package/dist/src/agents/auth-provider/types.d.ts +74 -0
- package/dist/src/agents/auth-provider/types.js +7 -0
- package/dist/src/agents/auth-provider/types.js.map +1 -0
- package/dist/src/agents/auth-provider/value-resolver.d.ts +29 -0
- package/dist/src/agents/auth-provider/value-resolver.js +85 -0
- package/dist/src/agents/auth-provider/value-resolver.js.map +1 -0
- package/dist/src/agents/auth-provider/value-resolver.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/value-resolver.test.js +100 -0
- package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -0
- package/dist/src/agents/browser/analyzeScreenshot.d.ts +35 -0
- package/dist/src/agents/browser/analyzeScreenshot.js +183 -0
- package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -0
- package/dist/src/agents/browser/analyzeScreenshot.test.d.ts +6 -0
- package/dist/src/agents/browser/analyzeScreenshot.test.js +161 -0
- package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -0
- package/dist/src/agents/browser/automationOverlay.d.ts +26 -0
- package/dist/src/agents/browser/automationOverlay.js +100 -0
- package/dist/src/agents/browser/automationOverlay.js.map +1 -0
- package/dist/src/agents/browser/browserAgentDefinition.d.ts +50 -0
- package/dist/src/agents/browser/browserAgentDefinition.js +141 -0
- package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -0
- package/dist/src/agents/browser/browserAgentFactory.d.ts +42 -0
- package/dist/src/agents/browser/browserAgentFactory.js +116 -0
- package/dist/src/agents/browser/browserAgentFactory.js.map +1 -0
- package/dist/src/agents/browser/browserAgentFactory.test.d.ts +6 -0
- package/dist/src/agents/browser/browserAgentFactory.test.js +240 -0
- package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -0
- package/dist/src/agents/browser/browserAgentInvocation.d.ts +34 -0
- package/dist/src/agents/browser/browserAgentInvocation.js +386 -0
- package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -0
- package/dist/src/agents/browser/browserAgentInvocation.test.d.ts +6 -0
- package/dist/src/agents/browser/browserAgentInvocation.test.js +382 -0
- package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -0
- package/dist/src/agents/browser/browserManager.d.ts +115 -0
- package/dist/src/agents/browser/browserManager.js +370 -0
- package/dist/src/agents/browser/browserManager.js.map +1 -0
- package/dist/src/agents/browser/browserManager.test.d.ts +6 -0
- package/dist/src/agents/browser/browserManager.test.js +382 -0
- package/dist/src/agents/browser/browserManager.test.js.map +1 -0
- package/dist/src/agents/browser/mcpToolWrapper.d.ts +45 -0
- package/dist/src/agents/browser/mcpToolWrapper.js +358 -0
- package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -0
- package/dist/src/agents/browser/mcpToolWrapper.test.d.ts +6 -0
- package/dist/src/agents/browser/mcpToolWrapper.test.js +126 -0
- package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -0
- package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.d.ts +6 -0
- package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js +59 -0
- package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js.map +1 -0
- package/dist/src/agents/browser/modelAvailability.d.ts +23 -0
- package/dist/src/agents/browser/modelAvailability.js +23 -0
- package/dist/src/agents/browser/modelAvailability.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/cli-help-agent.test.js +53 -0
- package/dist/src/agents/cli-help-agent.test.js.map +1 -0
- package/dist/src/agents/codebase-investigator.d.ts +2 -1
- package/dist/src/agents/codebase-investigator.js +68 -39
- package/dist/src/agents/codebase-investigator.js.map +1 -1
- package/dist/src/agents/codebase-investigator.test.js +37 -9
- package/dist/src/agents/codebase-investigator.test.js.map +1 -1
- 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/generalist-agent.test.d.ts +6 -0
- package/dist/src/agents/generalist-agent.test.js +32 -0
- package/dist/src/agents/generalist-agent.test.js.map +1 -0
- package/dist/src/agents/introspection-agent.d.ts +2 -2
- package/dist/src/agents/local-executor.d.ts +2 -0
- package/dist/src/agents/local-executor.js +186 -90
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +431 -256
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +15 -5
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/registry.d.ts +24 -8
- package/dist/src/agents/registry.js +193 -96
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +509 -58
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/registry_acknowledgement.test.d.ts +6 -0
- package/dist/src/agents/registry_acknowledgement.test.js +130 -0
- package/dist/src/agents/registry_acknowledgement.test.js.map +1 -0
- package/dist/src/agents/remote-invocation.js +12 -14
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/remote-invocation.test.js +16 -4
- package/dist/src/agents/remote-invocation.test.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.js +1 -3
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.test.js +18 -27
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
- package/dist/src/agents/subagent-tool.d.ts +15 -0
- package/dist/src/agents/subagent-tool.js +57 -0
- package/dist/src/agents/subagent-tool.js.map +1 -0
- package/dist/src/agents/subagent-tool.test.d.ts +6 -0
- package/dist/src/agents/subagent-tool.test.js +97 -0
- package/dist/src/agents/subagent-tool.test.js.map +1 -0
- package/dist/src/agents/types.d.ts +37 -22
- package/dist/src/agents/types.js +12 -0
- package/dist/src/agents/types.js.map +1 -1
- package/dist/src/availability/fallbackIntegration.test.js +57 -0
- package/dist/src/availability/fallbackIntegration.test.js.map +1 -0
- package/dist/src/availability/policyCatalog.d.ts +3 -0
- package/dist/src/availability/policyCatalog.js +29 -5
- package/dist/src/availability/policyCatalog.js.map +1 -1
- package/dist/src/availability/policyCatalog.test.js +20 -1
- package/dist/src/availability/policyCatalog.test.js.map +1 -1
- package/dist/src/availability/policyHelpers.js +40 -11
- package/dist/src/availability/policyHelpers.js.map +1 -1
- package/dist/src/availability/policyHelpers.test.js +72 -2
- package/dist/src/availability/policyHelpers.test.js.map +1 -1
- package/dist/src/availability/testUtils.js +1 -0
- package/dist/src/availability/testUtils.js.map +1 -1
- package/dist/src/billing/billing.d.ts +80 -0
- package/dist/src/billing/billing.js +128 -0
- package/dist/src/billing/billing.js.map +1 -0
- package/dist/src/billing/billing.test.d.ts +6 -0
- package/dist/src/billing/billing.test.js +182 -0
- package/dist/src/billing/billing.test.js.map +1 -0
- package/dist/src/billing/index.d.ts +6 -0
- package/dist/src/billing/index.js +7 -0
- package/dist/src/billing/index.js.map +1 -0
- package/dist/src/code_assist/admin/admin_controls.d.ts +49 -0
- package/dist/src/code_assist/admin/admin_controls.js +197 -0
- package/dist/src/code_assist/admin/admin_controls.js.map +1 -0
- package/dist/src/code_assist/admin/admin_controls.test.js +589 -0
- package/dist/src/code_assist/admin/admin_controls.test.js.map +1 -0
- package/dist/src/code_assist/admin/mcpUtils.d.ts +22 -0
- package/dist/src/code_assist/admin/mcpUtils.js +53 -0
- package/dist/src/code_assist/admin/mcpUtils.js.map +1 -0
- package/dist/src/code_assist/admin/mcpUtils.test.d.ts +6 -0
- package/dist/src/code_assist/admin/mcpUtils.test.js +101 -0
- package/dist/src/code_assist/admin/mcpUtils.test.js.map +1 -0
- package/dist/src/code_assist/codeAssist.js +2 -2
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/codeAssist.test.d.ts +1 -1
- package/dist/src/code_assist/codeAssist.test.js +10 -6
- package/dist/src/code_assist/codeAssist.test.js.map +1 -1
- package/dist/src/code_assist/converter.js +8 -3
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +8 -0
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments.d.ts +1 -1
- package/dist/src/code_assist/experiments/experiments.js +22 -0
- package/dist/src/code_assist/experiments/experiments.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments.test.js +1 -0
- package/dist/src/code_assist/experiments/experiments.test.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments_local.test.d.ts +6 -0
- package/dist/src/code_assist/experiments/experiments_local.test.js +115 -0
- package/dist/src/code_assist/experiments/experiments_local.test.js.map +1 -0
- package/dist/src/code_assist/experiments/flagNames.d.ts +7 -0
- package/dist/src/code_assist/experiments/flagNames.js +7 -0
- package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.js +4 -4
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +1 -1
- package/dist/src/code_assist/oauth2.test.js +10 -3
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +7 -4
- package/dist/src/code_assist/server.js +20 -4
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +18 -5
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.d.ts +35 -3
- package/dist/src/code_assist/setup.js +98 -16
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +322 -5
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/code_assist/telemetry.js +2 -1
- package/dist/src/code_assist/telemetry.js.map +1 -1
- package/dist/src/code_assist/telemetry.test.js +2 -1
- package/dist/src/code_assist/telemetry.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +255 -24
- package/dist/src/code_assist/types.js +57 -7
- package/dist/src/code_assist/types.js.map +1 -1
- package/dist/src/commands/memory.d.ts +11 -0
- package/dist/src/commands/memory.js +81 -0
- package/dist/src/commands/memory.js.map +1 -0
- package/dist/src/commands/memory.test.d.ts +6 -0
- package/dist/src/commands/memory.test.js +155 -0
- package/dist/src/commands/memory.test.js.map +1 -0
- package/dist/src/commands/restore.js +1 -0
- package/dist/src/commands/restore.js.map +1 -1
- package/dist/src/config/agent-loop-context.d.ts +22 -0
- package/dist/src/config/agent-loop-context.js +7 -0
- package/dist/src/config/agent-loop-context.js.map +1 -0
- package/dist/src/config/config.d.ts +267 -58
- package/dist/src/config/config.js +663 -164
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.d.ts +1 -1
- package/dist/src/config/config.test.js +585 -166
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/constants.d.ts +4 -0
- package/dist/src/config/constants.js +8 -0
- package/dist/src/config/constants.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +27 -8
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/memory.d.ts +14 -0
- package/dist/src/config/memory.js +28 -0
- package/dist/src/config/memory.js.map +1 -0
- package/dist/src/config/memory.test.d.ts +6 -0
- package/dist/src/config/memory.test.js +82 -0
- package/dist/src/config/memory.test.js.map +1 -0
- package/dist/src/config/models.d.ts +77 -6
- package/dist/src/config/models.js +240 -23
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +153 -47
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/config/projectRegistry.d.ts +36 -0
- package/dist/src/config/projectRegistry.js +262 -0
- package/dist/src/config/projectRegistry.js.map +1 -0
- package/dist/src/config/projectRegistry.test.d.ts +6 -0
- package/dist/src/config/projectRegistry.test.js +219 -0
- package/dist/src/config/projectRegistry.test.js.map +1 -0
- package/dist/src/config/storage.d.ts +23 -1
- package/dist/src/config/storage.js +104 -15
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +118 -2
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/config/storageMigration.d.ts +16 -0
- package/dist/src/config/storageMigration.js +42 -0
- package/dist/src/config/storageMigration.js.map +1 -0
- package/dist/src/config/storageMigration.test.d.ts +6 -0
- package/dist/src/config/storageMigration.test.js +70 -0
- package/dist/src/config/storageMigration.test.js.map +1 -0
- package/dist/src/config/trackerFeatureFlag.test.d.ts +6 -0
- package/dist/src/config/trackerFeatureFlag.test.js +43 -0
- package/dist/src/config/trackerFeatureFlag.test.js.map +1 -0
- package/dist/src/config/userHintService.d.ts +46 -0
- package/dist/src/config/userHintService.js +81 -0
- package/dist/src/config/userHintService.js.map +1 -0
- package/dist/src/config/userHintService.test.d.ts +6 -0
- package/dist/src/config/userHintService.test.js +62 -0
- package/dist/src/config/userHintService.test.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.js +3 -33
- package/dist/src/confirmation-bus/message-bus.js.map +1 -1
- package/dist/src/confirmation-bus/types.d.ts +95 -20
- package/dist/src/confirmation-bus/types.js +9 -3
- package/dist/src/confirmation-bus/types.js.map +1 -1
- package/dist/src/core/anthropicContentGenerator.d.ts +3 -2
- package/dist/src/core/anthropicContentGenerator.js +2 -2
- package/dist/src/core/anthropicContentGenerator.js.map +1 -1
- package/dist/src/core/baseLlmClient.d.ts +9 -0
- package/dist/src/core/baseLlmClient.js +9 -8
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +17 -7
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/bedrockContentGenerator.d.ts +73 -0
- package/dist/src/core/bedrockContentGenerator.js +628 -0
- package/dist/src/core/bedrockContentGenerator.js.map +1 -0
- package/dist/src/core/client.d.ts +13 -4
- package/dist/src/core/client.js +132 -41
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +333 -79
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +16 -3
- package/dist/src/core/contentGenerator.js +56 -2
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.d.ts +1 -1
- package/dist/src/core/contentGenerator.test.js +127 -24
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.d.ts +4 -36
- package/dist/src/core/coreToolHookTriggers.js +42 -150
- package/dist/src/core/coreToolHookTriggers.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.test.js +62 -94
- package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +1 -8
- package/dist/src/core/coreToolScheduler.js +160 -125
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +480 -62
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/fakeContentGenerator.d.ts +4 -2
- package/dist/src/core/fakeContentGenerator.js +9 -2
- package/dist/src/core/fakeContentGenerator.js.map +1 -1
- package/dist/src/core/fakeContentGenerator.test.js +8 -7
- package/dist/src/core/fakeContentGenerator.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +31 -3
- package/dist/src/core/geminiChat.js +144 -34
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +175 -50
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiChat_network_retry.test.js +146 -16
- package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
- package/dist/src/core/localLiteRtLmClient.d.ts +24 -0
- package/dist/src/core/localLiteRtLmClient.js +77 -0
- package/dist/src/core/localLiteRtLmClient.js.map +1 -0
- package/dist/src/core/localLiteRtLmClient.test.d.ts +6 -0
- package/dist/src/core/localLiteRtLmClient.test.js +87 -0
- package/dist/src/core/localLiteRtLmClient.test.js.map +1 -0
- package/dist/src/core/logger.js +11 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +2 -4
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +7 -3
- package/dist/src/core/loggingContentGenerator.js +40 -21
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.test.d.ts +1 -1
- package/dist/src/core/loggingContentGenerator.test.js +50 -8
- package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.d.ts +4 -2
- package/dist/src/core/openaiContentGenerator.js +31 -23
- package/dist/src/core/openaiContentGenerator.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.test.js +57 -4
- package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
- package/dist/src/core/prompts-substitution.test.d.ts +6 -0
- package/dist/src/core/prompts-substitution.test.js +109 -0
- package/dist/src/core/prompts-substitution.test.js.map +1 -0
- package/dist/src/core/prompts.d.ts +11 -9
- package/dist/src/core/prompts.js +14 -405
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +290 -56
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/recordingContentGenerator.d.ts +5 -3
- package/dist/src/core/recordingContentGenerator.js +12 -5
- package/dist/src/core/recordingContentGenerator.js.map +1 -1
- package/dist/src/core/recordingContentGenerator.test.js +5 -4
- package/dist/src/core/recordingContentGenerator.test.js.map +1 -1
- package/dist/src/core/tokenLimits.js +6 -10
- package/dist/src/core/tokenLimits.js.map +1 -1
- package/dist/src/core/tokenLimits.test.js +8 -4
- package/dist/src/core/tokenLimits.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +10 -2
- package/dist/src/core/turn.js +36 -17
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +82 -2
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/fallback/handler.js +1 -1
- package/dist/src/fallback/handler.js.map +1 -1
- package/dist/src/fallback/handler.test.js +10 -12
- package/dist/src/fallback/handler.test.js.map +1 -1
- package/dist/src/fallback/types.d.ts +9 -0
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookAggregator.js +16 -4
- package/dist/src/hooks/hookAggregator.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.d.ts +10 -16
- package/dist/src/hooks/hookEventHandler.js +35 -281
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.test.js +189 -4
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
- package/dist/src/hooks/hookRegistry.js +8 -3
- package/dist/src/hooks/hookRegistry.js.map +1 -1
- package/dist/src/hooks/hookRegistry.test.js +31 -2
- package/dist/src/hooks/hookRegistry.test.js.map +1 -1
- package/dist/src/hooks/hookRunner.js +21 -18
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookSystem.d.ts +59 -0
- package/dist/src/hooks/hookSystem.js +206 -6
- package/dist/src/hooks/hookSystem.js.map +1 -1
- package/dist/src/hooks/hookSystem.test.js +20 -9
- package/dist/src/hooks/hookSystem.test.js.map +1 -1
- package/dist/src/hooks/hookTranslator.js +13 -6
- package/dist/src/hooks/hookTranslator.js.map +1 -1
- package/dist/src/hooks/index.d.ts +0 -1
- package/dist/src/hooks/index.js +0 -2
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/runtimeHooks.test.d.ts +6 -0
- package/dist/src/hooks/runtimeHooks.test.js +100 -0
- package/dist/src/hooks/runtimeHooks.test.js.map +1 -0
- package/dist/src/hooks/trustedHooks.js +2 -0
- package/dist/src/hooks/trustedHooks.js.map +1 -1
- package/dist/src/hooks/types.d.ts +49 -1
- package/dist/src/hooks/types.js +43 -19
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/hooks/types.test.js +13 -29
- package/dist/src/hooks/types.test.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +49 -0
- package/dist/src/ide/detect-ide.js +56 -3
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +70 -0
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +0 -10
- package/dist/src/ide/ide-client.js +31 -199
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +39 -191
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ide-connection-utils.d.ts +27 -0
- package/dist/src/ide/ide-connection-utils.js +195 -0
- package/dist/src/ide/ide-connection-utils.js.map +1 -0
- package/dist/src/ide/ide-connection-utils.test.d.ts +6 -0
- package/dist/src/ide/ide-connection-utils.test.js +372 -0
- package/dist/src/ide/ide-connection-utils.test.js.map +1 -0
- package/dist/src/ide/ide-installer.js +76 -5
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +40 -2
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/types.d.ts +40 -40
- package/dist/src/index.d.ts +30 -2
- package/dist/src/index.js +31 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/mcp-oauth-provider.d.ts +43 -0
- package/dist/src/mcp/mcp-oauth-provider.js +67 -0
- package/dist/src/mcp/mcp-oauth-provider.js.map +1 -0
- package/dist/src/mcp/mcp-oauth-provider.test.d.ts +6 -0
- package/dist/src/mcp/mcp-oauth-provider.test.js +63 -0
- package/dist/src/mcp/mcp-oauth-provider.test.js.map +1 -0
- package/dist/src/mcp/oauth-provider.d.ts +10 -3
- package/dist/src/mcp/oauth-provider.js +49 -14
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +180 -1
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.js +3 -0
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +13 -4
- package/dist/src/mcp/oauth-utils.js +25 -19
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +13 -8
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/mcp/sa-impersonation-provider.js +3 -1
- package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
- package/dist/src/mcp/token-storage/file-token-storage.js +6 -2
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +4 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +12 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -1
- package/dist/src/mcp/token-storage/keychain-token-storage.js +8 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js +10 -5
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -1
- package/dist/src/output/json-formatter.test.js +2 -0
- package/dist/src/output/json-formatter.test.js.map +1 -1
- package/dist/src/output/stream-json-formatter.test.js +4 -0
- package/dist/src/output/stream-json-formatter.test.js.map +1 -1
- package/dist/src/policy/config.d.ts +5 -3
- package/dist/src/policy/config.js +137 -64
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/config.test.js +218 -12
- package/dist/src/policy/config.test.js.map +1 -1
- package/dist/src/policy/integrity.d.ts +45 -0
- package/dist/src/policy/integrity.js +121 -0
- package/dist/src/policy/integrity.js.map +1 -0
- package/dist/src/policy/integrity.test.d.ts +6 -0
- package/dist/src/policy/integrity.test.js +132 -0
- package/dist/src/policy/integrity.test.js.map +1 -0
- package/dist/src/policy/persistence.test.js +31 -11
- package/dist/src/policy/persistence.test.js.map +1 -1
- package/dist/src/policy/policies/conseca.toml +6 -0
- package/dist/src/policy/policies/plan.toml +56 -0
- package/dist/src/policy/policies/read-only.toml +1 -11
- package/dist/src/policy/policies/yolo.toml +13 -2
- package/dist/src/policy/policy-engine.d.ts +16 -11
- package/dist/src/policy/policy-engine.js +208 -101
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +538 -199
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/policy-updater.test.js +20 -6
- package/dist/src/policy/policy-updater.test.js.map +1 -1
- package/dist/src/policy/shell-safety.test.js +371 -8
- package/dist/src/policy/shell-safety.test.js.map +1 -1
- package/dist/src/policy/stable-stringify.js +1 -0
- package/dist/src/policy/stable-stringify.js.map +1 -1
- package/dist/src/policy/toml-loader.d.ts +5 -5
- package/dist/src/policy/toml-loader.js +65 -22
- package/dist/src/policy/toml-loader.js.map +1 -1
- package/dist/src/policy/toml-loader.test.js +88 -9
- package/dist/src/policy/toml-loader.test.js.map +1 -1
- package/dist/src/policy/types.d.ts +26 -1
- package/dist/src/policy/types.js +8 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/policy/utils.d.ts +5 -0
- package/dist/src/policy/utils.js +32 -1
- package/dist/src/policy/utils.js.map +1 -1
- package/dist/src/policy/utils.test.js +67 -7
- package/dist/src/policy/utils.test.js.map +1 -1
- package/dist/src/policy/workspace-policy.test.d.ts +6 -0
- package/dist/src/policy/workspace-policy.test.js +231 -0
- package/dist/src/policy/workspace-policy.test.js.map +1 -0
- package/dist/src/prompts/promptProvider.d.ts +19 -0
- package/dist/src/prompts/promptProvider.js +174 -0
- package/dist/src/prompts/promptProvider.js.map +1 -0
- package/dist/src/prompts/promptProvider.test.d.ts +6 -0
- package/dist/src/prompts/promptProvider.test.js +71 -0
- package/dist/src/prompts/promptProvider.test.js.map +1 -0
- package/dist/src/prompts/snippets.d.ts +86 -0
- package/dist/src/prompts/snippets.js +573 -0
- package/dist/src/prompts/snippets.js.map +1 -0
- package/dist/src/prompts/snippets.legacy.d.ts +91 -0
- package/dist/src/prompts/snippets.legacy.js +573 -0
- package/dist/src/prompts/snippets.legacy.js.map +1 -0
- package/dist/src/prompts/utils.d.ts +23 -0
- package/dist/src/prompts/utils.js +82 -0
- package/dist/src/prompts/utils.js.map +1 -0
- package/dist/src/routing/modelRouterService.js +18 -8
- package/dist/src/routing/modelRouterService.js.map +1 -1
- package/dist/src/routing/modelRouterService.test.js +14 -6
- package/dist/src/routing/modelRouterService.test.js.map +1 -1
- package/dist/src/routing/routingStrategy.d.ts +2 -0
- package/dist/src/routing/strategies/approvalModeStrategy.d.ts +18 -0
- package/dist/src/routing/strategies/approvalModeStrategy.js +59 -0
- package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -0
- package/dist/src/routing/strategies/approvalModeStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/approvalModeStrategy.test.js +140 -0
- package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/classifierStrategy.js +14 -9
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js +72 -7
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/compositeStrategy.js +1 -0
- package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
- package/dist/src/routing/strategies/defaultStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/defaultStrategy.js +5 -4
- package/dist/src/routing/strategies/defaultStrategy.js.map +1 -1
- package/dist/src/routing/strategies/defaultStrategy.test.js +58 -4
- package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js +3 -3
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.test.js +13 -1
- package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/gemmaClassifierStrategy.d.ts +14 -0
- package/dist/src/routing/strategies/gemmaClassifierStrategy.js +182 -0
- package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -0
- package/dist/src/routing/strategies/gemmaClassifierStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +218 -0
- package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +13 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.js +188 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +401 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/overrideStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js +6 -6
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.test.js +13 -3
- package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
- package/dist/src/safety/built-in.js +1 -0
- package/dist/src/safety/built-in.js.map +1 -1
- package/dist/src/safety/conseca/conseca.d.ts +31 -0
- package/dist/src/safety/conseca/conseca.js +105 -0
- package/dist/src/safety/conseca/conseca.js.map +1 -0
- package/dist/src/safety/conseca/conseca.test.d.ts +6 -0
- package/dist/src/safety/conseca/conseca.test.js +226 -0
- package/dist/src/safety/conseca/conseca.test.js.map +1 -0
- package/dist/src/safety/conseca/integration.test.d.ts +6 -0
- package/dist/src/safety/conseca/integration.test.js +19 -0
- package/dist/src/safety/conseca/integration.test.js.map +1 -0
- package/dist/src/safety/conseca/policy-enforcer.d.ts +13 -0
- package/dist/src/safety/conseca/policy-enforcer.js +135 -0
- package/dist/src/safety/conseca/policy-enforcer.js.map +1 -0
- package/dist/src/safety/conseca/policy-enforcer.test.d.ts +6 -0
- package/dist/src/safety/conseca/policy-enforcer.test.js +141 -0
- package/dist/src/safety/conseca/policy-enforcer.test.js.map +1 -0
- package/dist/src/safety/conseca/policy-generator.d.ts +15 -0
- package/dist/src/safety/conseca/policy-generator.js +144 -0
- package/dist/src/safety/conseca/policy-generator.js.map +1 -0
- package/dist/src/safety/conseca/policy-generator.test.d.ts +6 -0
- package/dist/src/safety/conseca/policy-generator.test.js +84 -0
- package/dist/src/safety/conseca/policy-generator.test.js.map +1 -0
- package/dist/src/safety/conseca/types.d.ts +15 -0
- package/dist/src/safety/conseca/types.js +7 -0
- package/dist/src/safety/conseca/types.js.map +1 -0
- package/dist/src/safety/context-builder.js +3 -1
- package/dist/src/safety/context-builder.js.map +1 -1
- package/dist/src/scheduler/confirmation.d.ts +50 -0
- package/dist/src/scheduler/confirmation.js +204 -0
- package/dist/src/scheduler/confirmation.js.map +1 -0
- package/dist/src/scheduler/confirmation.test.d.ts +6 -0
- package/dist/src/scheduler/confirmation.test.js +310 -0
- package/dist/src/scheduler/confirmation.test.js.map +1 -0
- package/dist/src/scheduler/policy.d.ts +33 -0
- package/dist/src/scheduler/policy.js +119 -0
- package/dist/src/scheduler/policy.js.map +1 -0
- package/dist/src/scheduler/policy.test.d.ts +6 -0
- package/dist/src/scheduler/policy.test.js +419 -0
- package/dist/src/scheduler/policy.test.js.map +1 -0
- package/dist/src/scheduler/scheduler.d.ts +63 -0
- package/dist/src/scheduler/scheduler.js +371 -0
- package/dist/src/scheduler/scheduler.js.map +1 -0
- package/dist/src/scheduler/scheduler.test.d.ts +6 -0
- package/dist/src/scheduler/scheduler.test.js +937 -0
- package/dist/src/scheduler/scheduler.test.js.map +1 -0
- package/dist/src/scheduler/scheduler_parallel.test.d.ts +6 -0
- package/dist/src/scheduler/scheduler_parallel.test.js +401 -0
- package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -0
- package/dist/src/scheduler/scheduler_waiting_callback.test.d.ts +6 -0
- package/dist/src/scheduler/scheduler_waiting_callback.test.js +62 -0
- package/dist/src/scheduler/scheduler_waiting_callback.test.js.map +1 -0
- package/dist/src/scheduler/state-manager.d.ts +74 -0
- package/dist/src/scheduler/state-manager.js +368 -0
- package/dist/src/scheduler/state-manager.js.map +1 -0
- package/dist/src/scheduler/state-manager.test.d.ts +6 -0
- package/dist/src/scheduler/state-manager.test.js +433 -0
- package/dist/src/scheduler/state-manager.test.js.map +1 -0
- package/dist/src/scheduler/tool-executor.js +25 -27
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/tool-executor.test.js +26 -25
- package/dist/src/scheduler/tool-executor.test.js.map +1 -1
- package/dist/src/scheduler/tool-modifier.d.ts +23 -0
- package/dist/src/scheduler/tool-modifier.js +53 -0
- package/dist/src/scheduler/tool-modifier.js.map +1 -0
- package/dist/src/scheduler/tool-modifier.test.d.ts +6 -0
- package/dist/src/scheduler/tool-modifier.test.js +179 -0
- package/dist/src/scheduler/tool-modifier.test.js.map +1 -0
- package/dist/src/scheduler/types.d.ts +51 -8
- package/dist/src/scheduler/types.js +15 -1
- package/dist/src/scheduler/types.js.map +1 -1
- package/dist/src/services/FolderTrustDiscoveryService.d.ts +32 -0
- package/dist/src/services/FolderTrustDiscoveryService.js +169 -0
- package/dist/src/services/FolderTrustDiscoveryService.js.map +1 -0
- package/dist/src/services/FolderTrustDiscoveryService.test.d.ts +6 -0
- package/dist/src/services/FolderTrustDiscoveryService.test.js +118 -0
- package/dist/src/services/FolderTrustDiscoveryService.test.js.map +1 -0
- package/dist/src/services/chatCompressionService.d.ts +5 -1
- package/dist/src/services/chatCompressionService.js +169 -23
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/chatCompressionService.test.js +382 -18
- package/dist/src/services/chatCompressionService.test.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +23 -3
- package/dist/src/services/chatRecordingService.js +137 -7
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +450 -186
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/contextManager.d.ts +7 -4
- package/dist/src/services/contextManager.js +43 -18
- package/dist/src/services/contextManager.js.map +1 -1
- package/dist/src/services/contextManager.test.js +54 -27
- package/dist/src/services/contextManager.test.js.map +1 -1
- package/dist/src/services/environmentSanitization.js +4 -3
- package/dist/src/services/environmentSanitization.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +14 -2
- package/dist/src/services/fileDiscoveryService.js +79 -7
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +142 -10
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/fileKeychain.d.ts +24 -0
- package/dist/src/services/fileKeychain.js +123 -0
- package/dist/src/services/fileKeychain.js.map +1 -0
- package/dist/src/services/gitService.d.ts +2 -1
- package/dist/src/services/gitService.js +16 -6
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +26 -10
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/keychainService.d.ts +51 -0
- package/dist/src/services/keychainService.js +133 -0
- package/dist/src/services/keychainService.js.map +1 -0
- package/dist/src/services/keychainService.test.d.ts +6 -0
- package/dist/src/services/keychainService.test.js +150 -0
- package/dist/src/services/keychainService.test.js.map +1 -0
- package/dist/src/services/keychainTypes.d.ts +41 -0
- package/dist/src/services/keychainTypes.js +18 -0
- package/dist/src/services/keychainTypes.js.map +1 -0
- package/dist/src/services/loopDetectionService.js +23 -4
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +24 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/modelConfig.integration.test.js +2 -2
- package/dist/src/services/modelConfig.integration.test.js.map +1 -1
- package/dist/src/services/modelConfigService.d.ts +39 -4
- package/dist/src/services/modelConfigService.js +153 -76
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/modelConfigService.test.js +175 -0
- package/dist/src/services/modelConfigService.test.js.map +1 -1
- package/dist/src/services/modelConfigServiceTestUtils.js +3 -1
- package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -1
- package/dist/src/services/sessionSummaryService.js +2 -0
- package/dist/src/services/sessionSummaryService.js.map +1 -1
- package/dist/src/services/sessionSummaryService.test.js +1 -1
- package/dist/src/services/sessionSummaryService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +48 -0
- package/dist/src/services/shellExecutionService.js +339 -97
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +132 -17
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +26 -8
- package/dist/src/services/test-data/resolved-aliases.golden.json +26 -8
- package/dist/src/services/toolOutputMaskingService.d.ts +43 -0
- package/dist/src/services/toolOutputMaskingService.js +286 -0
- package/dist/src/services/toolOutputMaskingService.js.map +1 -0
- package/dist/src/services/toolOutputMaskingService.test.d.ts +6 -0
- package/dist/src/services/toolOutputMaskingService.test.js +546 -0
- package/dist/src/services/toolOutputMaskingService.test.js.map +1 -0
- package/dist/src/services/trackerService.d.ts +49 -0
- package/dist/src/services/trackerService.js +193 -0
- package/dist/src/services/trackerService.js.map +1 -0
- package/dist/src/services/trackerService.test.d.ts +6 -0
- package/dist/src/services/trackerService.test.js +117 -0
- package/dist/src/services/trackerService.test.js.map +1 -0
- package/dist/src/services/trackerTypes.d.ts +51 -0
- package/dist/src/services/trackerTypes.js +33 -0
- package/dist/src/services/trackerTypes.js.map +1 -0
- package/dist/src/skills/builtin/skill-creator/SKILL.md +382 -0
- package/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +239 -0
- package/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +106 -0
- package/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +131 -0
- package/dist/src/skills/skillLoader.d.ts +3 -0
- package/dist/src/skills/skillLoader.js +73 -12
- package/dist/src/skills/skillLoader.js.map +1 -1
- package/dist/src/skills/skillLoader.test.d.ts +5 -0
- package/dist/src/skills/skillLoader.test.js +195 -1
- package/dist/src/skills/skillLoader.test.js.map +1 -1
- package/dist/src/skills/skillManager.d.ts +25 -3
- package/dist/src/skills/skillManager.js +76 -11
- package/dist/src/skills/skillManager.js.map +1 -1
- package/dist/src/skills/skillManager.test.js +209 -9
- package/dist/src/skills/skillManager.test.js.map +1 -1
- package/dist/src/skills/skillManagerAlias.test.d.ts +6 -0
- package/dist/src/skills/skillManagerAlias.test.js +140 -0
- package/dist/src/skills/skillManagerAlias.test.js.map +1 -0
- package/dist/src/telemetry/activity-monitor.js +1 -0
- package/dist/src/telemetry/activity-monitor.js.map +1 -1
- package/dist/src/telemetry/billingEvents.d.ts +75 -0
- package/dist/src/telemetry/billingEvents.js +181 -0
- package/dist/src/telemetry/billingEvents.js.map +1 -0
- package/dist/src/telemetry/billingEvents.test.d.ts +6 -0
- package/dist/src/telemetry/billingEvents.test.js +139 -0
- package/dist/src/telemetry/billingEvents.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +25 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +207 -12
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +210 -6
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +23 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +61 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/conseca-logger.d.ts +9 -0
- package/dist/src/telemetry/conseca-logger.js +91 -0
- package/dist/src/telemetry/conseca-logger.js.map +1 -0
- package/dist/src/telemetry/conseca-logger.test.d.ts +6 -0
- package/dist/src/telemetry/conseca-logger.test.js +90 -0
- package/dist/src/telemetry/conseca-logger.test.js.map +1 -0
- package/dist/src/telemetry/file-exporters.js +2 -1
- package/dist/src/telemetry/file-exporters.js.map +1 -1
- package/dist/src/telemetry/file-exporters.test.d.ts +6 -0
- package/dist/src/telemetry/file-exporters.test.js +142 -0
- package/dist/src/telemetry/file-exporters.test.js.map +1 -0
- package/dist/src/telemetry/gcp-exporters.js +1 -0
- package/dist/src/telemetry/gcp-exporters.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +3 -2
- package/dist/src/telemetry/index.js +3 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/integration.test.circular.js +2 -1
- package/dist/src/telemetry/integration.test.circular.js.map +1 -1
- package/dist/src/telemetry/llmRole.d.ts +18 -0
- package/dist/src/telemetry/llmRole.js +20 -0
- package/dist/src/telemetry/llmRole.js.map +1 -0
- package/dist/src/telemetry/loggers.d.ts +8 -1
- package/dist/src/telemetry/loggers.js +113 -10
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +5 -2
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +169 -19
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/memory-monitor.test.js +1 -0
- package/dist/src/telemetry/memory-monitor.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +39 -1
- package/dist/src/telemetry/metrics.js +105 -4
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +84 -4
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sanitize.test.js +2 -0
- package/dist/src/telemetry/sanitize.test.js.map +1 -1
- package/dist/src/telemetry/sdk.js +24 -0
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.js +5 -1
- package/dist/src/telemetry/sdk.test.js.map +1 -1
- package/dist/src/telemetry/semantic.js +92 -0
- package/dist/src/telemetry/semantic.js.map +1 -1
- package/dist/src/telemetry/semantic.truncation.test.d.ts +1 -0
- package/dist/src/telemetry/semantic.truncation.test.js +92 -0
- package/dist/src/telemetry/semantic.truncation.test.js.map +1 -0
- package/dist/src/telemetry/telemetryAttributes.js +5 -0
- package/dist/src/telemetry/telemetryAttributes.js.map +1 -1
- package/dist/src/telemetry/trace.test.d.ts +6 -0
- package/dist/src/telemetry/trace.test.js +116 -0
- package/dist/src/telemetry/trace.test.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +98 -15
- package/dist/src/telemetry/types.js +227 -16
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +16 -0
- package/dist/src/telemetry/uiTelemetry.js +39 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +29 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/mock-message-bus.d.ts +1 -19
- package/dist/src/test-utils/mock-message-bus.js +5 -65
- package/dist/src/test-utils/mock-message-bus.js.map +1 -1
- package/dist/src/test-utils/mock-tool.d.ts +1 -0
- package/dist/src/test-utils/mock-tool.js +1 -0
- package/dist/src/test-utils/mock-tool.js.map +1 -1
- package/dist/src/test-utils/mockWorkspaceContext.js +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -1
- package/dist/src/tools/activate-skill.d.ts +1 -0
- package/dist/src/tools/activate-skill.js +28 -25
- package/dist/src/tools/activate-skill.js.map +1 -1
- package/dist/src/tools/activate-skill.test.js +24 -6
- package/dist/src/tools/activate-skill.test.js.map +1 -1
- package/dist/src/tools/ask-user.d.ts +29 -0
- package/dist/src/tools/ask-user.js +141 -0
- package/dist/src/tools/ask-user.js.map +1 -0
- package/dist/src/tools/ask-user.test.d.ts +6 -0
- package/dist/src/tools/ask-user.test.js +446 -0
- package/dist/src/tools/ask-user.test.js.map +1 -0
- package/dist/src/tools/confirmation-policy.test.js +21 -0
- package/dist/src/tools/confirmation-policy.test.js.map +1 -1
- 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/definitions/base-declarations.d.ts +26 -0
- package/dist/src/tools/definitions/base-declarations.js +30 -0
- package/dist/src/tools/definitions/base-declarations.js.map +1 -0
- package/dist/src/tools/definitions/coreTools.d.ts +36 -0
- package/dist/src/tools/definitions/coreTools.js +143 -0
- package/dist/src/tools/definitions/coreTools.js.map +1 -0
- package/dist/src/tools/definitions/coreToolsModelSnapshots.test.d.ts +6 -0
- package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js +82 -0
- package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js.map +1 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +30 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js +135 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -0
- package/dist/src/tools/definitions/model-family-sets/default-legacy.d.ts +11 -0
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +575 -0
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -0
- package/dist/src/tools/definitions/model-family-sets/gemini-3.d.ts +14 -0
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js +578 -0
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -0
- package/dist/src/tools/definitions/modelFamilyService.d.ts +14 -0
- package/dist/src/tools/definitions/modelFamilyService.js +29 -0
- package/dist/src/tools/definitions/modelFamilyService.js.map +1 -0
- package/dist/src/tools/definitions/resolver.d.ts +15 -0
- package/dist/src/tools/definitions/resolver.js +27 -0
- package/dist/src/tools/definitions/resolver.js.map +1 -0
- package/dist/src/tools/definitions/resolver.test.d.ts +6 -0
- package/dist/src/tools/definitions/resolver.test.js +58 -0
- package/dist/src/tools/definitions/resolver.test.js.map +1 -0
- package/dist/src/tools/definitions/trackerTools.d.ts +12 -0
- package/dist/src/tools/definitions/trackerTools.js +146 -0
- package/dist/src/tools/definitions/trackerTools.js.map +1 -0
- package/dist/src/tools/definitions/types.d.ts +44 -0
- package/dist/src/tools/definitions/types.js +7 -0
- package/dist/src/tools/definitions/types.js.map +1 -0
- package/dist/src/tools/diff-utils.d.ts +9 -0
- package/dist/src/tools/diff-utils.js +66 -0
- package/dist/src/tools/diff-utils.js.map +1 -0
- package/dist/src/tools/diff-utils.test.d.ts +6 -0
- package/dist/src/tools/diff-utils.test.js +53 -0
- package/dist/src/tools/diff-utils.test.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +1 -1
- package/dist/src/tools/diffOptions.js +7 -3
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.js +17 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -1
- package/dist/src/tools/edit.d.ts +1 -0
- package/dist/src/tools/edit.js +52 -82
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +96 -1
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/enter-plan-mode.d.ts +25 -0
- package/dist/src/tools/enter-plan-mode.js +69 -0
- package/dist/src/tools/enter-plan-mode.js.map +1 -0
- package/dist/src/tools/enter-plan-mode.test.d.ts +6 -0
- package/dist/src/tools/enter-plan-mode.test.js +102 -0
- package/dist/src/tools/enter-plan-mode.test.js.map +1 -0
- package/dist/src/tools/exit-plan-mode.d.ts +33 -0
- package/dist/src/tools/exit-plan-mode.js +173 -0
- package/dist/src/tools/exit-plan-mode.js.map +1 -0
- package/dist/src/tools/exit-plan-mode.test.d.ts +6 -0
- package/dist/src/tools/exit-plan-mode.test.js +311 -0
- package/dist/src/tools/exit-plan-mode.test.js.map +1 -0
- package/dist/src/tools/get-internal-docs.d.ts +1 -0
- package/dist/src/tools/get-internal-docs.js +17 -27
- package/dist/src/tools/get-internal-docs.js.map +1 -1
- package/dist/src/tools/glob.d.ts +1 -0
- package/dist/src/tools/glob.js +15 -36
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +219 -280
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep-utils.d.ts +49 -0
- package/dist/src/tools/grep-utils.js +147 -0
- package/dist/src/tools/grep-utils.js.map +1 -0
- package/dist/src/tools/grep.d.ts +18 -8
- package/dist/src/tools/grep.js +273 -247
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +165 -16
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/line-endings.test.d.ts +6 -0
- package/dist/src/tools/line-endings.test.js +209 -0
- package/dist/src/tools/line-endings.test.js.map +1 -0
- package/dist/src/tools/ls.d.ts +1 -0
- package/dist/src/tools/ls.js +18 -37
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +25 -3
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +18 -5
- package/dist/src/tools/mcp-client-manager.js +118 -37
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +124 -16
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +18 -7
- package/dist/src/tools/mcp-client.js +137 -42
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +248 -29
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +26 -4
- package/dist/src/tools/mcp-tool.js +17 -5
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +5 -5
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +2 -7
- package/dist/src/tools/memoryTool.js +54 -80
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +62 -114
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +3 -3
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/omissionPlaceholderDetector.d.ts +15 -0
- package/dist/src/tools/omissionPlaceholderDetector.js +90 -0
- package/dist/src/tools/omissionPlaceholderDetector.js.map +1 -0
- package/dist/src/tools/omissionPlaceholderDetector.test.d.ts +6 -0
- package/dist/src/tools/omissionPlaceholderDetector.test.js +49 -0
- package/dist/src/tools/omissionPlaceholderDetector.test.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +2 -0
- package/dist/src/tools/read-file.js +26 -30
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +90 -3
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +1 -0
- package/dist/src/tools/read-many-files.js +21 -63
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +43 -1
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +20 -3
- package/dist/src/tools/ripGrep.js +217 -189
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +745 -567
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +1 -0
- package/dist/src/tools/shell.js +8 -3
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +248 -11
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +4 -0
- package/dist/src/tools/tool-error.js +4 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +27 -17
- package/dist/src/tools/tool-names.js +59 -20
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-names.test.js +55 -2
- package/dist/src/tools/tool-names.test.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +10 -2
- package/dist/src/tools/tool-registry.js +58 -11
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +113 -1
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +52 -5
- package/dist/src/tools/tools.js +35 -18
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/trackerTools.d.ts +122 -0
- package/dist/src/tools/trackerTools.js +365 -0
- package/dist/src/tools/trackerTools.js.map +1 -0
- package/dist/src/tools/trackerTools.test.d.ts +6 -0
- package/dist/src/tools/trackerTools.test.js +97 -0
- package/dist/src/tools/trackerTools.test.js.map +1 -0
- package/dist/src/tools/web-fetch.d.ts +1 -0
- package/dist/src/tools/web-fetch.js +12 -12
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +1 -0
- package/dist/src/tools/web-search.js +9 -11
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +1 -4
- package/dist/src/tools/write-file.js +42 -35
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +105 -18
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +1 -30
- package/dist/src/tools/write-todos.js +5 -123
- package/dist/src/tools/write-todos.js.map +1 -1
- package/dist/src/tools/xcode-mcp-fix-transport.d.ts +30 -0
- package/dist/src/tools/xcode-mcp-fix-transport.js +82 -0
- package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -0
- package/dist/src/tools/xcode-mcp-fix-transport.test.d.ts +1 -0
- package/dist/src/tools/xcode-mcp-fix-transport.test.js +98 -0
- package/dist/src/tools/xcode-mcp-fix-transport.test.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/apiConversionUtils.test.d.ts +6 -0
- package/dist/src/utils/apiConversionUtils.test.js +150 -0
- package/dist/src/utils/apiConversionUtils.test.js.map +1 -0
- package/dist/src/utils/approvalModeUtils.d.ts +14 -0
- package/dist/src/utils/approvalModeUtils.js +35 -0
- package/dist/src/utils/approvalModeUtils.js.map +1 -0
- package/dist/src/utils/approvalModeUtils.test.d.ts +6 -0
- package/dist/src/utils/approvalModeUtils.test.js +36 -0
- package/dist/src/utils/approvalModeUtils.test.js.map +1 -0
- package/dist/src/utils/authConsent.d.ts +10 -0
- package/dist/src/utils/authConsent.js +52 -0
- package/dist/src/utils/authConsent.js.map +1 -0
- package/dist/src/utils/authConsent.test.d.ts +6 -0
- package/dist/src/utils/authConsent.test.js +74 -0
- package/dist/src/utils/authConsent.test.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.js +2 -0
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +6 -1
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/cache.d.ts +63 -0
- package/dist/src/utils/cache.js +103 -0
- package/dist/src/utils/cache.js.map +1 -0
- package/dist/src/utils/cache.test.d.ts +6 -0
- package/dist/src/utils/cache.test.js +158 -0
- package/dist/src/utils/cache.test.js.map +1 -0
- package/dist/src/utils/checkpointUtils.js +2 -0
- package/dist/src/utils/checkpointUtils.js.map +1 -1
- package/dist/src/utils/checks.d.ts +19 -0
- package/dist/src/utils/checks.js +24 -0
- package/dist/src/utils/checks.js.map +1 -0
- package/dist/src/utils/checks.test.d.ts +6 -0
- package/dist/src/utils/checks.test.js +29 -0
- package/dist/src/utils/checks.test.js.map +1 -0
- package/dist/src/utils/compatibility.d.ts +41 -0
- package/dist/src/utils/compatibility.js +112 -0
- package/dist/src/utils/compatibility.js.map +1 -0
- package/dist/src/utils/compatibility.test.d.ts +6 -0
- package/dist/src/utils/compatibility.test.js +233 -0
- package/dist/src/utils/compatibility.test.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/deadlineTimer.d.ts +36 -0
- package/dist/src/utils/deadlineTimer.js +87 -0
- package/dist/src/utils/deadlineTimer.js.map +1 -0
- package/dist/src/utils/deadlineTimer.test.d.ts +6 -0
- package/dist/src/utils/deadlineTimer.test.js +64 -0
- package/dist/src/utils/deadlineTimer.test.js.map +1 -0
- package/dist/src/utils/editCorrector.d.ts +3 -3
- package/dist/src/utils/editCorrector.js +37 -10
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +49 -20
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.d.ts +17 -3
- package/dist/src/utils/editor.js +84 -15
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +160 -17
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/envExpansion.d.ts +18 -0
- package/dist/src/utils/envExpansion.js +46 -0
- package/dist/src/utils/envExpansion.js.map +1 -0
- package/dist/src/utils/envExpansion.test.d.ts +6 -0
- package/dist/src/utils/envExpansion.test.js +110 -0
- package/dist/src/utils/envExpansion.test.js.map +1 -0
- package/dist/src/utils/environmentContext.js +9 -20
- package/dist/src/utils/environmentContext.js.map +1 -1
- package/dist/src/utils/environmentContext.test.js +31 -14
- package/dist/src/utils/environmentContext.test.js.map +1 -1
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +13 -3
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +23 -1
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/errors_timeout.test.d.ts +6 -0
- package/dist/src/utils/errors_timeout.test.js +40 -0
- package/dist/src/utils/errors_timeout.test.js.map +1 -0
- package/dist/src/utils/events.d.ts +107 -3
- package/dist/src/utils/events.js +65 -1
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/events.test.js +43 -0
- package/dist/src/utils/events.test.js.map +1 -1
- package/dist/src/utils/extensionLoader.js +2 -0
- package/dist/src/utils/extensionLoader.js.map +1 -1
- package/dist/src/utils/extensionLoader.test.js +21 -0
- package/dist/src/utils/extensionLoader.test.js.map +1 -1
- package/dist/src/utils/fastAckHelper.d.ts +30 -0
- package/dist/src/utils/fastAckHelper.js +142 -0
- package/dist/src/utils/fastAckHelper.js.map +1 -0
- package/dist/src/utils/fastAckHelper.test.d.ts +6 -0
- package/dist/src/utils/fastAckHelper.test.js +115 -0
- package/dist/src/utils/fastAckHelper.test.js.map +1 -0
- package/dist/src/utils/fetch.test.d.ts +6 -0
- package/dist/src/utils/fetch.test.js +206 -0
- package/dist/src/utils/fetch.test.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/fileDiffUtils.test.d.ts +6 -0
- package/dist/src/utils/fileDiffUtils.test.js +84 -0
- package/dist/src/utils/fileDiffUtils.test.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +27 -3
- package/dist/src/utils/fileUtils.js +104 -60
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +129 -109
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.d.ts +1 -0
- package/dist/src/utils/filesearch/crawler.js +18 -1
- package/dist/src/utils/filesearch/crawler.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.test.js +101 -82
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +4 -3
- package/dist/src/utils/filesearch/fileSearch.js +5 -4
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +172 -84
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.d.ts +2 -7
- package/dist/src/utils/filesearch/ignore.js +7 -14
- package/dist/src/utils/filesearch/ignore.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.test.js +30 -32
- package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
- package/dist/src/utils/formatters.d.ts +1 -1
- package/dist/src/utils/formatters.js +1 -1
- package/dist/src/utils/formatters.js.map +1 -1
- package/dist/src/utils/formatters.test.js +5 -5
- package/dist/src/utils/formatters.test.js.map +1 -1
- package/dist/src/utils/generateContentResponseUtilities.js +3 -0
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +5 -2
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/getPty.js +3 -0
- package/dist/src/utils/getPty.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.js +10 -11
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/googleErrors.js +4 -0
- package/dist/src/utils/googleErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.d.ts +23 -9
- package/dist/src/utils/googleQuotaErrors.js +90 -23
- package/dist/src/utils/googleQuotaErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.test.js +168 -23
- package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
- package/dist/src/utils/headless.d.ts +26 -0
- package/dist/src/utils/headless.js +33 -0
- package/dist/src/utils/headless.js.map +1 -0
- package/dist/src/utils/headless.test.d.ts +6 -0
- package/dist/src/utils/headless.test.js +167 -0
- package/dist/src/utils/headless.test.js.map +1 -0
- package/dist/src/utils/httpErrors.js +4 -1
- package/dist/src/utils/httpErrors.js.map +1 -1
- 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/ignoreFileParser.test.d.ts +6 -0
- package/dist/src/utils/ignoreFileParser.test.js +167 -0
- package/dist/src/utils/ignoreFileParser.test.js.map +1 -0
- package/dist/src/utils/installationManager.test.js +11 -3
- package/dist/src/utils/installationManager.test.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.js +9 -9
- package/dist/src/utils/llm-edit-fixer.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.test.js +2 -2
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
- package/dist/src/utils/markdownUtils.d.ts +22 -0
- package/dist/src/utils/markdownUtils.js +126 -0
- package/dist/src/utils/markdownUtils.js.map +1 -0
- package/dist/src/utils/markdownUtils.test.d.ts +6 -0
- package/dist/src/utils/markdownUtils.test.js +107 -0
- package/dist/src/utils/markdownUtils.test.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +11 -3
- package/dist/src/utils/memoryDiscovery.js +122 -102
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +163 -109
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +7 -24
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +3 -0
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/oauth-flow.d.ts +105 -0
- package/dist/src/utils/oauth-flow.js +370 -0
- package/dist/src/utils/oauth-flow.js.map +1 -0
- package/dist/src/utils/oauth-flow.test.d.ts +6 -0
- package/dist/src/utils/oauth-flow.test.js +360 -0
- package/dist/src/utils/oauth-flow.test.js.map +1 -0
- package/dist/src/utils/package.js +10 -3
- package/dist/src/utils/package.js.map +1 -1
- package/dist/src/utils/package.test.d.ts +6 -0
- package/dist/src/utils/package.test.js +57 -0
- package/dist/src/utils/package.test.js.map +1 -0
- package/dist/src/utils/partUtils.js +2 -1
- package/dist/src/utils/partUtils.js.map +1 -1
- package/dist/src/utils/paths.d.ts +33 -9
- package/dist/src/utils/paths.js +88 -29
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +206 -110
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/planUtils.d.ts +29 -0
- package/dist/src/utils/planUtils.js +55 -0
- package/dist/src/utils/planUtils.js.map +1 -0
- package/dist/src/utils/planUtils.test.d.ts +6 -0
- package/dist/src/utils/planUtils.test.js +76 -0
- package/dist/src/utils/planUtils.test.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/process-utils.test.d.ts +6 -0
- package/dist/src/utils/process-utils.test.js +103 -0
- package/dist/src/utils/process-utils.test.js.map +1 -0
- package/dist/src/utils/promptIdContext.d.ts +6 -0
- package/dist/src/utils/promptIdContext.js +15 -0
- package/dist/src/utils/promptIdContext.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.js +3 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/dist/src/utils/retry.d.ts +4 -0
- package/dist/src/utils/retry.js +84 -5
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +70 -3
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/safeJsonStringify.js +1 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -1
- package/dist/src/utils/schemaValidator.d.ts +8 -1
- package/dist/src/utils/schemaValidator.js +78 -11
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/schemaValidator.test.js +77 -0
- package/dist/src/utils/schemaValidator.test.js.map +1 -1
- package/dist/src/utils/security.d.ts +16 -0
- package/dist/src/utils/security.js +91 -0
- package/dist/src/utils/security.js.map +1 -0
- package/dist/src/utils/security.test.d.ts +1 -0
- package/dist/src/utils/security.test.js +121 -0
- package/dist/src/utils/security.test.js.map +1 -0
- package/dist/src/utils/sessionUtils.d.ts +14 -0
- package/dist/src/utils/sessionUtils.js +122 -0
- package/dist/src/utils/sessionUtils.js.map +1 -0
- package/dist/src/utils/sessionUtils.test.d.ts +1 -0
- package/dist/src/utils/sessionUtils.test.js +171 -0
- package/dist/src/utils/sessionUtils.test.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +14 -0
- package/dist/src/utils/shell-utils.integration.test.d.ts +1 -0
- package/dist/src/utils/shell-utils.integration.test.js +58 -0
- package/dist/src/utils/shell-utils.integration.test.js.map +1 -0
- package/dist/src/utils/shell-utils.js +191 -30
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +108 -1
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/summarizer.js +2 -1
- package/dist/src/utils/summarizer.js.map +1 -1
- package/dist/src/utils/terminal.d.ts +4 -0
- package/dist/src/utils/terminal.js +12 -0
- package/dist/src/utils/terminal.js.map +1 -1
- package/dist/src/utils/terminalSerializer.d.ts +1 -1
- package/dist/src/utils/terminalSerializer.js +25 -13
- package/dist/src/utils/terminalSerializer.js.map +1 -1
- package/dist/src/utils/testUtils.js +1 -0
- package/dist/src/utils/testUtils.js.map +1 -1
- package/dist/src/utils/textUtils.d.ts +14 -0
- package/dist/src/utils/textUtils.js +23 -0
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/textUtils.test.js +18 -1
- package/dist/src/utils/textUtils.test.js.map +1 -1
- package/dist/src/utils/tokenCalculation.d.ts +2 -2
- package/dist/src/utils/tokenCalculation.js +87 -21
- package/dist/src/utils/tokenCalculation.js.map +1 -1
- package/dist/src/utils/tokenCalculation.test.js +189 -76
- package/dist/src/utils/tokenCalculation.test.js.map +1 -1
- package/dist/src/utils/tool-utils.d.ts +26 -0
- package/dist/src/utils/tool-utils.js +36 -0
- package/dist/src/utils/tool-utils.js.map +1 -1
- package/dist/src/utils/tool-utils.test.js +73 -3
- package/dist/src/utils/tool-utils.test.js.map +1 -1
- 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/toolCallContext.test.d.ts +6 -0
- package/dist/src/utils/toolCallContext.test.js +68 -0
- package/dist/src/utils/toolCallContext.test.js.map +1 -0
- package/dist/src/utils/userAccountManager.js +1 -0
- package/dist/src/utils/userAccountManager.js.map +1 -1
- package/dist/src/utils/userAccountManager.test.js +5 -5
- package/dist/src/utils/userAccountManager.test.js.map +1 -1
- package/dist/src/utils/version.d.ts +2 -0
- package/dist/src/utils/version.js +14 -3
- package/dist/src/utils/version.js.map +1 -1
- package/dist/src/utils/version.test.js +15 -1
- package/dist/src/utils/version.test.js.map +1 -1
- package/dist/src/utils/workspaceContext.d.ts +28 -0
- package/dist/src/utils/workspaceContext.js +74 -9
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +56 -1
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/src/voice/responseFormatter.d.ts +38 -0
- package/dist/src/voice/responseFormatter.js +130 -0
- package/dist/src/voice/responseFormatter.js.map +1 -0
- package/dist/src/voice/responseFormatter.test.d.ts +6 -0
- package/dist/src/voice/responseFormatter.test.js +214 -0
- package/dist/src/voice/responseFormatter.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +25 -15
- package/dist/docs/CONTRIBUTING.md +0 -546
- package/dist/src/agents/executor.d.ts +0 -114
- package/dist/src/agents/executor.js +0 -779
- package/dist/src/agents/executor.js.map +0 -1
- package/dist/src/agents/executor.test.js +0 -1362
- package/dist/src/agents/executor.test.js.map +0 -1
- package/dist/src/agents/invocation.d.ts +0 -46
- package/dist/src/agents/invocation.js +0 -102
- package/dist/src/agents/invocation.js.map +0 -1
- package/dist/src/agents/invocation.test.js +0 -215
- package/dist/src/agents/invocation.test.js.map +0 -1
- package/dist/src/core/subagent.d.ts +0 -236
- package/dist/src/core/subagent.js +0 -482
- package/dist/src/core/subagent.js.map +0 -1
- package/dist/src/core/subagent.test.js +0 -530
- package/dist/src/core/subagent.test.js.map +0 -1
- package/dist/src/tools/smart-edit.d.ts +0 -78
- package/dist/src/tools/smart-edit.js +0 -717
- package/dist/src/tools/smart-edit.js.map +0 -1
- package/dist/src/tools/smart-edit.test.js +0 -592
- package/dist/src/tools/smart-edit.test.js.map +0 -1
- /package/dist/src/agents/{executor.test.d.ts → agentLoader.test.d.ts} +0 -0
- /package/dist/src/agents/{invocation.test.d.ts → cli-help-agent.test.d.ts} +0 -0
- /package/dist/src/{core/subagent.test.d.ts → availability/fallbackIntegration.test.d.ts} +0 -0
- /package/dist/src/{tools/smart-edit.test.d.ts → code_assist/admin/admin_controls.test.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Hooks
|
|
1
|
+
# Hooks Best Practices
|
|
2
2
|
|
|
3
3
|
This guide covers security considerations, performance optimization, debugging
|
|
4
4
|
techniques, and privacy considerations for developing and deploying hooks in
|
|
@@ -15,21 +15,20 @@ using parallel operations:
|
|
|
15
15
|
// Sequential operations are slower
|
|
16
16
|
const data1 = await fetch(url1).then((r) => r.json());
|
|
17
17
|
const data2 = await fetch(url2).then((r) => r.json());
|
|
18
|
-
const data3 = await fetch(url3).then((r) => r.json());
|
|
19
18
|
|
|
20
19
|
// Prefer parallel operations for better performance
|
|
21
20
|
// Start requests concurrently
|
|
22
21
|
const p1 = fetch(url1).then((r) => r.json());
|
|
23
22
|
const p2 = fetch(url2).then((r) => r.json());
|
|
24
|
-
const p3 = fetch(url3).then((r) => r.json());
|
|
25
23
|
|
|
26
24
|
// Wait for all results
|
|
27
|
-
const [data1, data2
|
|
25
|
+
const [data1, data2] = await Promise.all([p1, p2]);
|
|
28
26
|
```
|
|
29
27
|
|
|
30
28
|
### Cache expensive operations
|
|
31
29
|
|
|
32
|
-
Store results between invocations to avoid repeated computation
|
|
30
|
+
Store results between invocations to avoid repeated computation, especially for
|
|
31
|
+
hooks that run frequently (like `BeforeTool` or `AfterModel`).
|
|
33
32
|
|
|
34
33
|
```javascript
|
|
35
34
|
const fs = require('fs');
|
|
@@ -54,6 +53,7 @@ async function main() {
|
|
|
54
53
|
const cacheKey = `tool-list-${(Date.now() / 3600000) | 0}`; // Hourly cache
|
|
55
54
|
|
|
56
55
|
if (cache[cacheKey]) {
|
|
56
|
+
// Write JSON to stdout
|
|
57
57
|
console.log(JSON.stringify(cache[cacheKey]));
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
@@ -70,32 +70,20 @@ async function main() {
|
|
|
70
70
|
### Use appropriate events
|
|
71
71
|
|
|
72
72
|
Choose hook events that match your use case to avoid unnecessary execution.
|
|
73
|
-
`AfterAgent` fires once per agent loop completion, while `AfterModel` fires
|
|
74
|
-
after every LLM call (potentially multiple times per loop):
|
|
75
73
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
"hooks": [
|
|
84
|
-
{
|
|
85
|
-
"name": "final-checker",
|
|
86
|
-
"command": "./check-completion.sh"
|
|
87
|
-
}
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
```
|
|
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.
|
|
94
81
|
|
|
95
82
|
### Filter with matchers
|
|
96
83
|
|
|
97
84
|
Use specific matchers to avoid unnecessary hook execution. Instead of matching
|
|
98
|
-
all tools with `*`, specify only the tools you need
|
|
85
|
+
all tools with `*`, specify only the tools you need. This saves the overhead of
|
|
86
|
+
spawning a process for irrelevant events.
|
|
99
87
|
|
|
100
88
|
```json
|
|
101
89
|
{
|
|
@@ -103,6 +91,7 @@ all tools with `*`, specify only the tools you need:
|
|
|
103
91
|
"hooks": [
|
|
104
92
|
{
|
|
105
93
|
"name": "validate-writes",
|
|
94
|
+
"type": "command",
|
|
106
95
|
"command": "./validate.sh"
|
|
107
96
|
}
|
|
108
97
|
]
|
|
@@ -111,30 +100,32 @@ all tools with `*`, specify only the tools you need:
|
|
|
111
100
|
|
|
112
101
|
### Optimize JSON parsing
|
|
113
102
|
|
|
114
|
-
For large inputs
|
|
115
|
-
|
|
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.
|
|
116
106
|
|
|
117
|
-
|
|
118
|
-
// Standard approach: parse entire input
|
|
119
|
-
const input = JSON.parse(await readStdin());
|
|
120
|
-
const content = input.tool_input.content;
|
|
107
|
+
## Debugging
|
|
121
108
|
|
|
122
|
-
|
|
123
|
-
const { createReadStream } = require('fs');
|
|
124
|
-
const JSONStream = require('JSONStream');
|
|
109
|
+
### The "Strict JSON" rule
|
|
125
110
|
|
|
126
|
-
|
|
127
|
-
let content = '';
|
|
128
|
-
stream.on('data', (chunk) => {
|
|
129
|
-
content += chunk;
|
|
130
|
-
});
|
|
131
|
-
```
|
|
111
|
+
The most common cause of hook failure is "polluting" the standard output.
|
|
132
112
|
|
|
133
|
-
|
|
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
|
+
```
|
|
134
124
|
|
|
135
125
|
### Log to files
|
|
136
126
|
|
|
137
|
-
|
|
127
|
+
Since hooks run in the background, writing to a dedicated log file is often the
|
|
128
|
+
easiest way to debug complex logic.
|
|
138
129
|
|
|
139
130
|
```bash
|
|
140
131
|
#!/usr/bin/env bash
|
|
@@ -151,6 +142,9 @@ log "Received input: ${input:0:100}..."
|
|
|
151
142
|
# Hook logic here
|
|
152
143
|
|
|
153
144
|
log "Hook completed successfully"
|
|
145
|
+
# Always output valid JSON to stdout at the end, even if just empty
|
|
146
|
+
echo "{}"
|
|
147
|
+
|
|
154
148
|
```
|
|
155
149
|
|
|
156
150
|
### Use stderr for errors
|
|
@@ -162,6 +156,7 @@ try {
|
|
|
162
156
|
const result = dangerousOperation();
|
|
163
157
|
console.log(JSON.stringify({ result }));
|
|
164
158
|
} catch (error) {
|
|
159
|
+
// Write the error description to stderr so the user/agent sees it
|
|
165
160
|
console.error(`Hook error: ${error.message}`);
|
|
166
161
|
process.exit(2); // Blocking error
|
|
167
162
|
}
|
|
@@ -169,7 +164,8 @@ try {
|
|
|
169
164
|
|
|
170
165
|
### Test hooks independently
|
|
171
166
|
|
|
172
|
-
Run hook scripts manually with sample JSON input
|
|
167
|
+
Run hook scripts manually with sample JSON input to verify they behave as
|
|
168
|
+
expected before hooking them up to the CLI.
|
|
173
169
|
|
|
174
170
|
```bash
|
|
175
171
|
# Create test input
|
|
@@ -191,33 +187,46 @@ cat test-input.json | .gemini/hooks/my-hook.sh
|
|
|
191
187
|
|
|
192
188
|
# Check exit code
|
|
193
189
|
echo "Exit code: $?"
|
|
190
|
+
|
|
194
191
|
```
|
|
195
192
|
|
|
196
193
|
### Check exit codes
|
|
197
194
|
|
|
198
|
-
|
|
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.
|
|
199
210
|
|
|
200
211
|
```bash
|
|
201
212
|
#!/usr/bin/env bash
|
|
202
|
-
set -e
|
|
213
|
+
set -e
|
|
203
214
|
|
|
204
215
|
# Hook logic
|
|
205
|
-
process_input() {
|
|
206
|
-
# ...
|
|
207
|
-
}
|
|
208
|
-
|
|
209
216
|
if process_input; then
|
|
210
|
-
echo "
|
|
217
|
+
echo '{"decision": "allow"}'
|
|
211
218
|
exit 0
|
|
212
219
|
else
|
|
213
|
-
echo "
|
|
220
|
+
echo "Critical validation failure" >&2
|
|
214
221
|
exit 2
|
|
215
222
|
fi
|
|
223
|
+
|
|
216
224
|
```
|
|
217
225
|
|
|
218
226
|
### Enable telemetry
|
|
219
227
|
|
|
220
|
-
Hook execution is logged when `telemetry.logPrompts` is enabled
|
|
228
|
+
Hook execution is logged when `telemetry.logPrompts` is enabled. You can view
|
|
229
|
+
these logs to debug execution flow.
|
|
221
230
|
|
|
222
231
|
```json
|
|
223
232
|
{
|
|
@@ -227,11 +236,10 @@ Hook execution is logged when `telemetry.logPrompts` is enabled:
|
|
|
227
236
|
}
|
|
228
237
|
```
|
|
229
238
|
|
|
230
|
-
View hook telemetry in logs to debug execution issues.
|
|
231
|
-
|
|
232
239
|
### Use hook panel
|
|
233
240
|
|
|
234
|
-
The `/hooks panel` command shows execution status and recent
|
|
241
|
+
The `/hooks panel` command inside the CLI shows execution status and recent
|
|
242
|
+
output:
|
|
235
243
|
|
|
236
244
|
```bash
|
|
237
245
|
/hooks panel
|
|
@@ -255,18 +263,64 @@ Begin with basic logging hooks before implementing complex logic:
|
|
|
255
263
|
# Simple logging hook to understand input structure
|
|
256
264
|
input=$(cat)
|
|
257
265
|
echo "$input" >> .gemini/hook-inputs.log
|
|
258
|
-
|
|
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
|
+
*/
|
|
259
312
|
```
|
|
260
313
|
|
|
261
314
|
### Use JSON libraries
|
|
262
315
|
|
|
263
|
-
Parse JSON with proper libraries instead of text processing
|
|
316
|
+
Parse JSON with proper libraries instead of text processing.
|
|
264
317
|
|
|
265
318
|
**Bad:**
|
|
266
319
|
|
|
267
320
|
```bash
|
|
268
321
|
# Fragile text parsing
|
|
269
322
|
tool_name=$(echo "$input" | grep -oP '"tool_name":\s*"\K[^"]+')
|
|
323
|
+
|
|
270
324
|
```
|
|
271
325
|
|
|
272
326
|
**Good:**
|
|
@@ -274,6 +328,7 @@ tool_name=$(echo "$input" | grep -oP '"tool_name":\s*"\K[^"]+')
|
|
|
274
328
|
```bash
|
|
275
329
|
# Robust JSON parsing
|
|
276
330
|
tool_name=$(echo "$input" | jq -r '.tool_name')
|
|
331
|
+
|
|
277
332
|
```
|
|
278
333
|
|
|
279
334
|
### Make scripts executable
|
|
@@ -283,6 +338,7 @@ Always make hook scripts executable:
|
|
|
283
338
|
```bash
|
|
284
339
|
chmod +x .gemini/hooks/*.sh
|
|
285
340
|
chmod +x .gemini/hooks/*.js
|
|
341
|
+
|
|
286
342
|
```
|
|
287
343
|
|
|
288
344
|
### Version control
|
|
@@ -292,7 +348,7 @@ Commit hooks to share with your team:
|
|
|
292
348
|
```bash
|
|
293
349
|
git add .gemini/hooks/
|
|
294
350
|
git add .gemini/settings.json
|
|
295
|
-
|
|
351
|
+
|
|
296
352
|
```
|
|
297
353
|
|
|
298
354
|
**`.gitignore` considerations:**
|
|
@@ -306,68 +362,108 @@ git commit -m "Add project hooks for security and testing"
|
|
|
306
362
|
# Keep hook scripts
|
|
307
363
|
!.gemini/hooks/*.sh
|
|
308
364
|
!.gemini/hooks/*.js
|
|
365
|
+
|
|
309
366
|
```
|
|
310
367
|
|
|
311
|
-
|
|
368
|
+
## Hook security
|
|
369
|
+
|
|
370
|
+
### Threat Model
|
|
312
371
|
|
|
313
|
-
|
|
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`.
|
|
314
436
|
|
|
315
437
|
```json
|
|
316
438
|
{
|
|
317
|
-
"
|
|
318
|
-
"
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
{
|
|
323
|
-
"name": "secret-scanner",
|
|
324
|
-
"type": "command",
|
|
325
|
-
"command": "$GEMINI_PROJECT_DIR/.gemini/hooks/block-secrets.sh",
|
|
326
|
-
"description": "Scans code changes for API keys, passwords, and other secrets before writing"
|
|
327
|
-
}
|
|
328
|
-
]
|
|
329
|
-
}
|
|
330
|
-
]
|
|
439
|
+
"security": {
|
|
440
|
+
"environmentVariableRedaction": {
|
|
441
|
+
"enabled": true,
|
|
442
|
+
"allowed": ["MY_REQUIRED_TOOL_KEY"]
|
|
443
|
+
}
|
|
331
444
|
}
|
|
332
445
|
}
|
|
333
446
|
```
|
|
334
447
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
```javascript
|
|
338
|
-
#!/usr/bin/env node
|
|
339
|
-
/**
|
|
340
|
-
* RAG Tool Filter Hook
|
|
341
|
-
*
|
|
342
|
-
* This hook reduces the tool space from 100+ tools to ~15 relevant ones
|
|
343
|
-
* by extracting keywords from the user's request and filtering tools
|
|
344
|
-
* based on semantic similarity.
|
|
345
|
-
*
|
|
346
|
-
* Performance: ~500ms average, cached tool embeddings
|
|
347
|
-
* Dependencies: @google/generative-ai
|
|
348
|
-
*/
|
|
349
|
-
```
|
|
448
|
+
**System administrators:** You can enforce redaction for all users in the system
|
|
449
|
+
configuration.
|
|
350
450
|
|
|
351
451
|
## Troubleshooting
|
|
352
452
|
|
|
353
453
|
### Hook not executing
|
|
354
454
|
|
|
355
|
-
**Check hook name in `/hooks panel`:**
|
|
356
|
-
|
|
357
|
-
```bash
|
|
358
|
-
/hooks panel
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
Verify the hook appears in the list and is enabled.
|
|
455
|
+
**Check hook name in `/hooks panel`:** Verify the hook appears in the list and
|
|
456
|
+
is enabled.
|
|
362
457
|
|
|
363
458
|
**Verify matcher pattern:**
|
|
364
459
|
|
|
365
460
|
```bash
|
|
366
461
|
# Test regex pattern
|
|
367
462
|
echo "write_file|replace" | grep -E "write_.*|replace"
|
|
463
|
+
|
|
368
464
|
```
|
|
369
465
|
|
|
370
|
-
**Check disabled list:**
|
|
466
|
+
**Check disabled list:** Verify the hook is not listed in your `settings.json`:
|
|
371
467
|
|
|
372
468
|
```json
|
|
373
469
|
{
|
|
@@ -377,14 +473,15 @@ echo "write_file|replace" | grep -E "write_.*|replace"
|
|
|
377
473
|
}
|
|
378
474
|
```
|
|
379
475
|
|
|
380
|
-
**Ensure script is executable
|
|
476
|
+
**Ensure script is executable**: For macOS and Linux users, verify the script
|
|
477
|
+
has execution permissions:
|
|
381
478
|
|
|
382
479
|
```bash
|
|
383
480
|
ls -la .gemini/hooks/my-hook.sh
|
|
384
481
|
chmod +x .gemini/hooks/my-hook.sh
|
|
385
482
|
```
|
|
386
483
|
|
|
387
|
-
**Verify script path:**
|
|
484
|
+
**Verify script path:** Ensure the path in `settings.json` resolves correctly.
|
|
388
485
|
|
|
389
486
|
```bash
|
|
390
487
|
# Check path expansion
|
|
@@ -396,72 +493,18 @@ test -f "$GEMINI_PROJECT_DIR/.gemini/hooks/my-hook.sh" && echo "File exists"
|
|
|
396
493
|
|
|
397
494
|
### Hook timing out
|
|
398
495
|
|
|
399
|
-
**Check configured timeout:**
|
|
496
|
+
**Check configured timeout:** The default is 60000ms (1 minute). You can
|
|
497
|
+
increase this in `settings.json`:
|
|
400
498
|
|
|
401
499
|
```json
|
|
402
500
|
{
|
|
403
501
|
"name": "slow-hook",
|
|
404
|
-
"timeout":
|
|
405
|
-
}
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
**Optimize slow operations:**
|
|
409
|
-
|
|
410
|
-
```javascript
|
|
411
|
-
// Before: Sequential operations (slow)
|
|
412
|
-
for (const item of items) {
|
|
413
|
-
await processItem(item);
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
// After: Parallel operations (fast)
|
|
417
|
-
await Promise.all(items.map((item) => processItem(item)));
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
**Use caching:**
|
|
421
|
-
|
|
422
|
-
```javascript
|
|
423
|
-
const cache = new Map();
|
|
424
|
-
|
|
425
|
-
async function getCachedData(key) {
|
|
426
|
-
if (cache.has(key)) {
|
|
427
|
-
return cache.get(key);
|
|
428
|
-
}
|
|
429
|
-
const data = await fetchData(key);
|
|
430
|
-
cache.set(key, data);
|
|
431
|
-
return data;
|
|
502
|
+
"timeout": 120000
|
|
432
503
|
}
|
|
433
504
|
```
|
|
434
505
|
|
|
435
|
-
**
|
|
436
|
-
|
|
437
|
-
```json
|
|
438
|
-
{
|
|
439
|
-
"hooks": {
|
|
440
|
-
"BeforeTool": [
|
|
441
|
-
{
|
|
442
|
-
"matcher": "write_file",
|
|
443
|
-
"hooks": [
|
|
444
|
-
{
|
|
445
|
-
"name": "quick-check",
|
|
446
|
-
"command": "./quick-validation.sh",
|
|
447
|
-
"timeout": 1000
|
|
448
|
-
}
|
|
449
|
-
]
|
|
450
|
-
},
|
|
451
|
-
{
|
|
452
|
-
"matcher": "write_file",
|
|
453
|
-
"hooks": [
|
|
454
|
-
{
|
|
455
|
-
"name": "deep-check",
|
|
456
|
-
"command": "./deep-analysis.sh",
|
|
457
|
-
"timeout": 30000
|
|
458
|
-
}
|
|
459
|
-
]
|
|
460
|
-
}
|
|
461
|
-
]
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
```
|
|
506
|
+
**Optimize slow operations:** Move heavy processing to background tasks or use
|
|
507
|
+
caching.
|
|
465
508
|
|
|
466
509
|
### Invalid JSON output
|
|
467
510
|
|
|
@@ -478,77 +521,7 @@ else
|
|
|
478
521
|
echo "Invalid JSON generated" >&2
|
|
479
522
|
exit 1
|
|
480
523
|
fi
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
**Ensure proper quoting and escaping:**
|
|
484
|
-
|
|
485
|
-
```javascript
|
|
486
|
-
// Bad: Unescaped string interpolation
|
|
487
|
-
const message = `User said: ${userInput}`;
|
|
488
|
-
console.log(JSON.stringify({ message }));
|
|
489
524
|
|
|
490
|
-
// Good: Automatic escaping
|
|
491
|
-
console.log(JSON.stringify({ message: `User said: ${userInput}` }));
|
|
492
|
-
```
|
|
493
|
-
|
|
494
|
-
**Check for binary data or control characters:**
|
|
495
|
-
|
|
496
|
-
```javascript
|
|
497
|
-
function sanitizeForJSON(str) {
|
|
498
|
-
return str.replace(/[\x00-\x1F\x7F-\x9F]/g, ''); // Remove control chars
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
const cleanContent = sanitizeForJSON(content);
|
|
502
|
-
console.log(JSON.stringify({ content: cleanContent }));
|
|
503
|
-
```
|
|
504
|
-
|
|
505
|
-
### Exit code issues
|
|
506
|
-
|
|
507
|
-
**Verify script returns correct codes:**
|
|
508
|
-
|
|
509
|
-
```bash
|
|
510
|
-
#!/usr/bin/env bash
|
|
511
|
-
set -e # Exit on error
|
|
512
|
-
|
|
513
|
-
# Processing logic
|
|
514
|
-
if validate_input; then
|
|
515
|
-
echo "Success"
|
|
516
|
-
exit 0
|
|
517
|
-
else
|
|
518
|
-
echo "Validation failed" >&2
|
|
519
|
-
exit 2
|
|
520
|
-
fi
|
|
521
|
-
```
|
|
522
|
-
|
|
523
|
-
**Check for unintended errors:**
|
|
524
|
-
|
|
525
|
-
```bash
|
|
526
|
-
#!/usr/bin/env bash
|
|
527
|
-
# Don't use 'set -e' if you want to handle errors explicitly
|
|
528
|
-
# set -e
|
|
529
|
-
|
|
530
|
-
if ! command_that_might_fail; then
|
|
531
|
-
# Handle error
|
|
532
|
-
echo "Command failed but continuing" >&2
|
|
533
|
-
fi
|
|
534
|
-
|
|
535
|
-
# Always exit explicitly
|
|
536
|
-
exit 0
|
|
537
|
-
```
|
|
538
|
-
|
|
539
|
-
**Use trap for cleanup:**
|
|
540
|
-
|
|
541
|
-
```bash
|
|
542
|
-
#!/usr/bin/env bash
|
|
543
|
-
|
|
544
|
-
cleanup() {
|
|
545
|
-
# Cleanup logic
|
|
546
|
-
rm -f /tmp/hook-temp-*
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
trap cleanup EXIT
|
|
550
|
-
|
|
551
|
-
# Hook logic here
|
|
552
525
|
```
|
|
553
526
|
|
|
554
527
|
### Environment variables not available
|
|
@@ -557,121 +530,20 @@ trap cleanup EXIT
|
|
|
557
530
|
|
|
558
531
|
```bash
|
|
559
532
|
#!/usr/bin/env bash
|
|
560
|
-
|
|
561
533
|
if [ -z "$GEMINI_PROJECT_DIR" ]; then
|
|
562
534
|
echo "GEMINI_PROJECT_DIR not set" >&2
|
|
563
535
|
exit 1
|
|
564
536
|
fi
|
|
565
537
|
|
|
566
|
-
if [ -z "$CUSTOM_VAR" ]; then
|
|
567
|
-
echo "Warning: CUSTOM_VAR not set, using default" >&2
|
|
568
|
-
CUSTOM_VAR="default-value"
|
|
569
|
-
fi
|
|
570
538
|
```
|
|
571
539
|
|
|
572
540
|
**Debug available variables:**
|
|
573
541
|
|
|
574
542
|
```bash
|
|
575
|
-
#!/usr/bin/env bash
|
|
576
|
-
|
|
577
|
-
# List all environment variables
|
|
578
543
|
env > .gemini/hook-env.log
|
|
579
|
-
|
|
580
|
-
# Check specific variables
|
|
581
|
-
echo "GEMINI_PROJECT_DIR: $GEMINI_PROJECT_DIR" >> .gemini/hook-env.log
|
|
582
|
-
echo "GEMINI_SESSION_ID: $GEMINI_SESSION_ID" >> .gemini/hook-env.log
|
|
583
|
-
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+<set>}" >> .gemini/hook-env.log
|
|
584
544
|
```
|
|
585
545
|
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
```bash
|
|
589
|
-
#!/usr/bin/env bash
|
|
590
|
-
|
|
591
|
-
# Load .env file if it exists
|
|
592
|
-
if [ -f "$GEMINI_PROJECT_DIR/.env" ]; then
|
|
593
|
-
source "$GEMINI_PROJECT_DIR/.env"
|
|
594
|
-
fi
|
|
595
|
-
```
|
|
596
|
-
|
|
597
|
-
## Using Hooks Securely
|
|
598
|
-
|
|
599
|
-
### Threat Model
|
|
600
|
-
|
|
601
|
-
Understanding where hooks come from and what they can do is critical for secure
|
|
602
|
-
usage.
|
|
603
|
-
|
|
604
|
-
| Hook Source | Description |
|
|
605
|
-
| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------- |
|
|
606
|
-
| **System** | Configured by system administrators (e.g., `/etc/gemini-cli/settings.json`, `/Library/...`). Assumed to be the **safest**. |
|
|
607
|
-
| **User** (`~/.gemini/...`) | Configured by you. You are responsible for ensuring they are safe. |
|
|
608
|
-
| **Extensions** | You explicitly approve and install these. Security depends on the extension source (integrity). |
|
|
609
|
-
| **Project** (`./.gemini/...`) | **Untrusted by default.** Safest in trusted internal repos; higher risk in third-party/public repos. |
|
|
610
|
-
|
|
611
|
-
#### Project Hook Security
|
|
612
|
-
|
|
613
|
-
When you open a project with hooks defined in `.gemini/settings.json`:
|
|
614
|
-
|
|
615
|
-
1. **Detection**: Gemini CLI detects the hooks.
|
|
616
|
-
2. **Identification**: A unique identity is generated for each hook based on its
|
|
617
|
-
`name` and `command`.
|
|
618
|
-
3. **Warning**: If this specific hook identity has not been seen before, a
|
|
619
|
-
**warning** is displayed.
|
|
620
|
-
4. **Execution**: The hook is executed (unless specific security settings block
|
|
621
|
-
it).
|
|
622
|
-
5. **Trust**: The hook is marked as "trusted" for this project.
|
|
623
|
-
|
|
624
|
-
> [!IMPORTANT] **Modification Detection**: If the `command` string of a project
|
|
625
|
-
> hook is changed (e.g., by a `git pull`), its identity changes. Gemini CLI will
|
|
626
|
-
> treat it as a **new, untrusted hook** and warn you again. This prevents
|
|
627
|
-
> malicious actors from silently swapping a verified command for a malicious
|
|
628
|
-
> one.
|
|
629
|
-
|
|
630
|
-
### Risks
|
|
631
|
-
|
|
632
|
-
| Risk | Description |
|
|
633
|
-
| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
|
|
634
|
-
| **Arbitrary Code Execution** | Hooks run as your user. They can do anything you can do (delete files, install software). |
|
|
635
|
-
| **Data Exfiltration** | A hook could read your input (prompts), output (code), or environment variables (`GEMINI_API_KEY`) and send them to a remote server. |
|
|
636
|
-
| **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. |
|
|
637
|
-
|
|
638
|
-
### Mitigation Strategies
|
|
639
|
-
|
|
640
|
-
#### Verify the source
|
|
641
|
-
|
|
642
|
-
**Verify the source** of any project hooks or extensions before enabling them.
|
|
643
|
-
|
|
644
|
-
- For open-source projects, a quick review of the hook scripts is recommended.
|
|
645
|
-
- For extensions, ensure you trust the author or publisher (e.g., verified
|
|
646
|
-
publishers, well-known community members).
|
|
647
|
-
- Be cautious with obfuscated scripts or compiled binaries from unknown sources.
|
|
648
|
-
|
|
649
|
-
#### Sanitize Environment
|
|
650
|
-
|
|
651
|
-
Hooks inherit the environment of the Gemini CLI process, which may include
|
|
652
|
-
sensitive API keys. Gemini CLI attempts to sanitize sensitive variables, but you
|
|
653
|
-
should be cautious.
|
|
654
|
-
|
|
655
|
-
- **Avoid printing environment variables** to stdout/stderr unless necessary.
|
|
656
|
-
- **Use `.env` files** to securely manage sensitive variables, ensuring they are
|
|
657
|
-
excluded from version control.
|
|
658
|
-
|
|
659
|
-
**System Administrators:** You can enforce environment variable redaction by
|
|
660
|
-
default in the system configuration (e.g., `/etc/gemini-cli/settings.json`):
|
|
661
|
-
|
|
662
|
-
```json
|
|
663
|
-
{
|
|
664
|
-
"security": {
|
|
665
|
-
"environmentVariableRedaction": {
|
|
666
|
-
"enabled": true,
|
|
667
|
-
"blocked": ["MY_SECRET_KEY"],
|
|
668
|
-
"allowed": ["SAFE_VAR"]
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
```
|
|
673
|
-
|
|
674
|
-
## Authoring Secure Hooks
|
|
546
|
+
## Authoring secure hooks
|
|
675
547
|
|
|
676
548
|
When writing your own hooks, follow these practices to ensure they are robust
|
|
677
549
|
and secure.
|
|
@@ -713,6 +585,7 @@ defaults to 60 seconds, but you should set stricter limits for fast hooks.
|
|
|
713
585
|
"hooks": [
|
|
714
586
|
{
|
|
715
587
|
"name": "fast-validator",
|
|
588
|
+
"type": "command",
|
|
716
589
|
"command": "./hooks/validate.sh",
|
|
717
590
|
"timeout": 5000 // 5 seconds
|
|
718
591
|
}
|
|
@@ -766,40 +639,17 @@ function containsSecret(content) {
|
|
|
766
639
|
|
|
767
640
|
## Privacy considerations
|
|
768
641
|
|
|
769
|
-
Hook inputs and outputs may contain sensitive information.
|
|
770
|
-
the `telemetry.logPrompts` setting for hook data logging.
|
|
642
|
+
Hook inputs and outputs may contain sensitive information.
|
|
771
643
|
|
|
772
644
|
### What data is collected
|
|
773
645
|
|
|
774
|
-
Hook telemetry may include
|
|
775
|
-
|
|
776
|
-
- **Hook inputs:** User prompts, tool arguments, file contents
|
|
777
|
-
- **Hook outputs:** Hook responses, decision reasons, added context
|
|
778
|
-
- **Standard streams:** stdout and stderr from hook processes
|
|
779
|
-
- **Execution metadata:** Hook name, event type, duration, success/failure
|
|
646
|
+
Hook telemetry may include inputs (prompts, code) and outputs (decisions,
|
|
647
|
+
reasons) unless disabled.
|
|
780
648
|
|
|
781
649
|
### Privacy settings
|
|
782
650
|
|
|
783
|
-
**
|
|
784
|
-
|
|
785
|
-
Full hook I/O is logged to telemetry. Use this when:
|
|
786
|
-
|
|
787
|
-
- Developing and debugging hooks
|
|
788
|
-
- Telemetry is redirected to a trusted enterprise system
|
|
789
|
-
- You understand and accept the privacy implications
|
|
790
|
-
|
|
791
|
-
**Disabled:**
|
|
792
|
-
|
|
793
|
-
Only metadata is logged (event name, duration, success/failure). Hook inputs and
|
|
794
|
-
outputs are excluded. Use this when:
|
|
795
|
-
|
|
796
|
-
- Sending telemetry to third-party systems
|
|
797
|
-
- Working with sensitive data
|
|
798
|
-
- Privacy regulations require minimizing data collection
|
|
799
|
-
|
|
800
|
-
### Configuration
|
|
801
|
-
|
|
802
|
-
**Disable PII logging in settings:**
|
|
651
|
+
**Disable PII logging:** If you are working with sensitive data, disable prompt
|
|
652
|
+
logging in your settings:
|
|
803
653
|
|
|
804
654
|
```json
|
|
805
655
|
{
|
|
@@ -809,48 +659,19 @@ outputs are excluded. Use this when:
|
|
|
809
659
|
}
|
|
810
660
|
```
|
|
811
661
|
|
|
812
|
-
**
|
|
662
|
+
**Suppress Output:** Individual hooks can request their metadata be hidden from
|
|
663
|
+
logs and telemetry by returning `"suppressOutput": true` in their JSON response.
|
|
813
664
|
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
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.
|
|
817
670
|
|
|
818
671
|
### Sensitive data in hooks
|
|
819
672
|
|
|
820
673
|
If your hooks process sensitive data:
|
|
821
674
|
|
|
822
|
-
1. **Minimize logging:** Don't write sensitive data to log files
|
|
823
|
-
2. **Sanitize outputs:** Remove sensitive data before outputting
|
|
824
|
-
|
|
825
|
-
4. **Limit access:** Restrict hook script permissions
|
|
826
|
-
|
|
827
|
-
**Example sanitization:**
|
|
828
|
-
|
|
829
|
-
```javascript
|
|
830
|
-
function sanitizeOutput(data) {
|
|
831
|
-
const sanitized = { ...data };
|
|
832
|
-
|
|
833
|
-
// Remove sensitive fields
|
|
834
|
-
delete sanitized.apiKey;
|
|
835
|
-
delete sanitized.password;
|
|
836
|
-
|
|
837
|
-
// Redact sensitive strings
|
|
838
|
-
if (sanitized.content) {
|
|
839
|
-
sanitized.content = sanitized.content.replace(
|
|
840
|
-
/api[_-]?key\s*[:=]\s*['"]?[a-zA-Z0-9_-]{20,}['"]?/gi,
|
|
841
|
-
'[REDACTED]',
|
|
842
|
-
);
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
return sanitized;
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
console.log(JSON.stringify(sanitizeOutput(hookOutput)));
|
|
849
|
-
```
|
|
850
|
-
|
|
851
|
-
## Learn more
|
|
852
|
-
|
|
853
|
-
- [Hooks Reference](index.md) - Complete API reference
|
|
854
|
-
- [Writing Hooks](writing-hooks.md) - Tutorial and examples
|
|
855
|
-
- [Configuration](../cli/configuration.md) - Gemini CLI settings
|
|
856
|
-
- [Hooks Design Document](../hooks-design.md) - Technical architecture
|
|
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.
|