@greppleai/grip 0.0.0-stage → 0.0.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/CHANGELOG.md +22 -0
- package/README.md +725 -2
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +11 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +13 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +32 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +70 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +441 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +60 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +82 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +406 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session.d.ts +970 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +5176 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +150 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +557 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +26 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +99 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +83 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +220 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +65 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +550 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/compression-detection-ledger.d.ts +34 -0
- package/dist/core/compaction/compression-detection-ledger.d.ts.map +1 -0
- package/dist/core/compaction/compression-detection-ledger.js +52 -0
- package/dist/core/compaction/compression-detection-ledger.js.map +1 -0
- package/dist/core/compaction/compression-detector.d.ts +71 -0
- package/dist/core/compaction/compression-detector.d.ts.map +1 -0
- package/dist/core/compaction/compression-detector.js +407 -0
- package/dist/core/compaction/compression-detector.js.map +1 -0
- package/dist/core/compaction/compression-economics.d.ts +55 -0
- package/dist/core/compaction/compression-economics.d.ts.map +1 -0
- package/dist/core/compaction/compression-economics.js +151 -0
- package/dist/core/compaction/compression-economics.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +28 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +165 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +18 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +245 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +21 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +230 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1864 -0
- package/dist/core/export-html/tool-renderer.d.ts +32 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +78 -0
- package/dist/core/extensions/loader.d.ts +24 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +613 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +160 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +962 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1311 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +51 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +52 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +318 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/grip-agent.d.ts +240 -0
- package/dist/core/grip-agent.d.ts.map +1 -0
- package/dist/core/grip-agent.js +1243 -0
- package/dist/core/grip-agent.js.map +1 -0
- package/dist/core/grip-manifest.d.ts +9 -0
- package/dist/core/grip-manifest.d.ts.map +1 -0
- package/dist/core/grip-manifest.js +25 -0
- package/dist/core/grip-manifest.js.map +1 -0
- package/dist/core/hooks/aggregate.d.ts +5 -0
- package/dist/core/hooks/aggregate.d.ts.map +1 -0
- package/dist/core/hooks/aggregate.js +226 -0
- package/dist/core/hooks/aggregate.js.map +1 -0
- package/dist/core/hooks/config.d.ts +14 -0
- package/dist/core/hooks/config.d.ts.map +1 -0
- package/dist/core/hooks/config.js +372 -0
- package/dist/core/hooks/config.js.map +1 -0
- package/dist/core/hooks/executor.d.ts +12 -0
- package/dist/core/hooks/executor.d.ts.map +1 -0
- package/dist/core/hooks/executor.js +708 -0
- package/dist/core/hooks/executor.js.map +1 -0
- package/dist/core/hooks/index.d.ts +9 -0
- package/dist/core/hooks/index.d.ts.map +1 -0
- package/dist/core/hooks/index.js +14 -0
- package/dist/core/hooks/index.js.map +1 -0
- package/dist/core/hooks/matcher.d.ts +10 -0
- package/dist/core/hooks/matcher.d.ts.map +1 -0
- package/dist/core/hooks/matcher.js +70 -0
- package/dist/core/hooks/matcher.js.map +1 -0
- package/dist/core/hooks/trust-store.d.ts +38 -0
- package/dist/core/hooks/trust-store.d.ts.map +1 -0
- package/dist/core/hooks/trust-store.js +167 -0
- package/dist/core/hooks/trust-store.js.map +1 -0
- package/dist/core/hooks/types.d.ts +234 -0
- package/dist/core/hooks/types.d.ts.map +1 -0
- package/dist/core/hooks/types.js +52 -0
- package/dist/core/hooks/types.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +21 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +82 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/instruction-resource-loader.d.ts +81 -0
- package/dist/core/instruction-resource-loader.d.ts.map +1 -0
- package/dist/core/instruction-resource-loader.js +574 -0
- package/dist/core/instruction-resource-loader.js.map +1 -0
- package/dist/core/keybindings.d.ts +399 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +299 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/lsp/abort.d.ts +3 -0
- package/dist/core/lsp/abort.d.ts.map +1 -0
- package/dist/core/lsp/abort.js +28 -0
- package/dist/core/lsp/abort.js.map +1 -0
- package/dist/core/lsp/client.d.ts +108 -0
- package/dist/core/lsp/client.d.ts.map +1 -0
- package/dist/core/lsp/client.js +586 -0
- package/dist/core/lsp/client.js.map +1 -0
- package/dist/core/lsp/config-loader.d.ts +44 -0
- package/dist/core/lsp/config-loader.d.ts.map +1 -0
- package/dist/core/lsp/config-loader.js +223 -0
- package/dist/core/lsp/config-loader.js.map +1 -0
- package/dist/core/lsp/config.d.ts +134 -0
- package/dist/core/lsp/config.d.ts.map +1 -0
- package/dist/core/lsp/config.js +682 -0
- package/dist/core/lsp/config.js.map +1 -0
- package/dist/core/lsp/diagnostics.d.ts +18 -0
- package/dist/core/lsp/diagnostics.d.ts.map +1 -0
- package/dist/core/lsp/diagnostics.js +311 -0
- package/dist/core/lsp/diagnostics.js.map +1 -0
- package/dist/core/lsp/file-sync.d.ts +58 -0
- package/dist/core/lsp/file-sync.d.ts.map +1 -0
- package/dist/core/lsp/file-sync.js +432 -0
- package/dist/core/lsp/file-sync.js.map +1 -0
- package/dist/core/lsp/integration.d.ts +62 -0
- package/dist/core/lsp/integration.d.ts.map +1 -0
- package/dist/core/lsp/integration.js +145 -0
- package/dist/core/lsp/integration.js.map +1 -0
- package/dist/core/lsp/language-map.d.ts +54 -0
- package/dist/core/lsp/language-map.d.ts.map +1 -0
- package/dist/core/lsp/language-map.js +300 -0
- package/dist/core/lsp/language-map.js.map +1 -0
- package/dist/core/lsp/manager.d.ts +120 -0
- package/dist/core/lsp/manager.d.ts.map +1 -0
- package/dist/core/lsp/manager.js +636 -0
- package/dist/core/lsp/manager.js.map +1 -0
- package/dist/core/lsp/navigation.d.ts +32 -0
- package/dist/core/lsp/navigation.d.ts.map +1 -0
- package/dist/core/lsp/navigation.js +327 -0
- package/dist/core/lsp/navigation.js.map +1 -0
- package/dist/core/lsp/portable-path.d.ts +18 -0
- package/dist/core/lsp/portable-path.d.ts.map +1 -0
- package/dist/core/lsp/portable-path.js +83 -0
- package/dist/core/lsp/portable-path.js.map +1 -0
- package/dist/core/lsp/refactor.d.ts +32 -0
- package/dist/core/lsp/refactor.d.ts.map +1 -0
- package/dist/core/lsp/refactor.js +519 -0
- package/dist/core/lsp/refactor.js.map +1 -0
- package/dist/core/lsp/transport.d.ts +39 -0
- package/dist/core/lsp/transport.d.ts.map +1 -0
- package/dist/core/lsp/transport.js +261 -0
- package/dist/core/lsp/transport.js.map +1 -0
- package/dist/core/messages.d.ts +34 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +140 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +148 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +812 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +115 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +498 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/output-guard.d.ts +7 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +89 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +209 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +2341 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +57 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +353 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +33 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/remote-workspace-protocol/contract.d.ts +456 -0
- package/dist/core/remote-workspace-protocol/contract.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/contract.js +809 -0
- package/dist/core/remote-workspace-protocol/contract.js.map +1 -0
- package/dist/core/remote-workspace-protocol/session.d.ts +247 -0
- package/dist/core/remote-workspace-protocol/session.d.ts.map +1 -0
- package/dist/core/remote-workspace-protocol/session.js +1839 -0
- package/dist/core/remote-workspace-protocol/session.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +32 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +257 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +200 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +1209 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/rules.d.ts +40 -0
- package/dist/core/rules.d.ts.map +1 -0
- package/dist/core/rules.js +57 -0
- package/dist/core/rules.js.map +1 -0
- package/dist/core/sandbox/command.d.ts +27 -0
- package/dist/core/sandbox/command.d.ts.map +1 -0
- package/dist/core/sandbox/command.js +124 -0
- package/dist/core/sandbox/command.js.map +1 -0
- package/dist/core/sandbox/docker.d.ts +169 -0
- package/dist/core/sandbox/docker.d.ts.map +1 -0
- package/dist/core/sandbox/docker.js +633 -0
- package/dist/core/sandbox/docker.js.map +1 -0
- package/dist/core/sandbox/lima.d.ts +38 -0
- package/dist/core/sandbox/lima.d.ts.map +1 -0
- package/dist/core/sandbox/lima.js +324 -0
- package/dist/core/sandbox/lima.js.map +1 -0
- package/dist/core/session/constants.d.ts +2 -0
- package/dist/core/session/constants.d.ts.map +1 -0
- package/dist/core/session/constants.js +2 -0
- package/dist/core/session/constants.js.map +1 -0
- package/dist/core/session/context-metadata.d.ts +5 -0
- package/dist/core/session/context-metadata.d.ts.map +1 -0
- package/dist/core/session/context-metadata.js +55 -0
- package/dist/core/session/context-metadata.js.map +1 -0
- package/dist/core/session/context.d.ts +14 -0
- package/dist/core/session/context.d.ts.map +1 -0
- package/dist/core/session/context.js +117 -0
- package/dist/core/session/context.js.map +1 -0
- package/dist/core/session/ids.d.ts +9 -0
- package/dist/core/session/ids.d.ts.map +1 -0
- package/dist/core/session/ids.js +21 -0
- package/dist/core/session/ids.js.map +1 -0
- package/dist/core/session/in-memory-session-manager.d.ts +17 -0
- package/dist/core/session/in-memory-session-manager.d.ts.map +1 -0
- package/dist/core/session/in-memory-session-manager.js +40 -0
- package/dist/core/session/in-memory-session-manager.js.map +1 -0
- package/dist/core/session/in-memory-session.d.ts +7 -0
- package/dist/core/session/in-memory-session.d.ts.map +1 -0
- package/dist/core/session/in-memory-session.js +11 -0
- package/dist/core/session/in-memory-session.js.map +1 -0
- package/dist/core/session/jsonl-errors.d.ts +36 -0
- package/dist/core/session/jsonl-errors.d.ts.map +1 -0
- package/dist/core/session/jsonl-errors.js +49 -0
- package/dist/core/session/jsonl-errors.js.map +1 -0
- package/dist/core/session/jsonl-helpers.d.ts +20 -0
- package/dist/core/session/jsonl-helpers.d.ts.map +1 -0
- package/dist/core/session/jsonl-helpers.js +21 -0
- package/dist/core/session/jsonl-helpers.js.map +1 -0
- package/dist/core/session/local-session-manager.d.ts +30 -0
- package/dist/core/session/local-session-manager.d.ts.map +1 -0
- package/dist/core/session/local-session-manager.js +205 -0
- package/dist/core/session/local-session-manager.js.map +1 -0
- package/dist/core/session/local-session.d.ts +9 -0
- package/dist/core/session/local-session.d.ts.map +1 -0
- package/dist/core/session/local-session.js +15 -0
- package/dist/core/session/local-session.js.map +1 -0
- package/dist/core/session/migrations.d.ts +11 -0
- package/dist/core/session/migrations.d.ts.map +1 -0
- package/dist/core/session/migrations.js +78 -0
- package/dist/core/session/migrations.js.map +1 -0
- package/dist/core/session/remote-session-client.d.ts +83 -0
- package/dist/core/session/remote-session-client.d.ts.map +1 -0
- package/dist/core/session/remote-session-client.js +224 -0
- package/dist/core/session/remote-session-client.js.map +1 -0
- package/dist/core/session/remote-session-manager.d.ts +32 -0
- package/dist/core/session/remote-session-manager.d.ts.map +1 -0
- package/dist/core/session/remote-session-manager.js +124 -0
- package/dist/core/session/remote-session-manager.js.map +1 -0
- package/dist/core/session/remote-session.d.ts +20 -0
- package/dist/core/session/remote-session.d.ts.map +1 -0
- package/dist/core/session/remote-session.js +33 -0
- package/dist/core/session/remote-session.js.map +1 -0
- package/dist/core/session/session-manager.d.ts +18 -0
- package/dist/core/session/session-manager.d.ts.map +1 -0
- package/dist/core/session/session-manager.js +2 -0
- package/dist/core/session/session-manager.js.map +1 -0
- package/dist/core/session/session.d.ts +140 -0
- package/dist/core/session/session.d.ts.map +1 -0
- package/dist/core/session/session.js +461 -0
- package/dist/core/session/session.js.map +1 -0
- package/dist/core/session/stores/in-memory-session-store.d.ts +39 -0
- package/dist/core/session/stores/in-memory-session-store.d.ts.map +1 -0
- package/dist/core/session/stores/in-memory-session-store.js +168 -0
- package/dist/core/session/stores/in-memory-session-store.js.map +1 -0
- package/dist/core/session/stores/jsonl-session-store.d.ts +97 -0
- package/dist/core/session/stores/jsonl-session-store.d.ts.map +1 -0
- package/dist/core/session/stores/jsonl-session-store.js +1140 -0
- package/dist/core/session/stores/jsonl-session-store.js.map +1 -0
- package/dist/core/session/stores/remote-session-store.d.ts +44 -0
- package/dist/core/session/stores/remote-session-store.d.ts.map +1 -0
- package/dist/core/session/stores/remote-session-store.js +159 -0
- package/dist/core/session/stores/remote-session-store.js.map +1 -0
- package/dist/core/session/stores/session-store.d.ts +42 -0
- package/dist/core/session/stores/session-store.d.ts.map +1 -0
- package/dist/core/session/stores/session-store.js +2 -0
- package/dist/core/session/stores/session-store.js.map +1 -0
- package/dist/core/session/types.d.ts +141 -0
- package/dist/core/session/types.d.ts.map +1 -0
- package/dist/core/session/types.js +2 -0
- package/dist/core/session/types.js.map +1 -0
- package/dist/core/session/usage-ledger.d.ts +18 -0
- package/dist/core/session/usage-ledger.d.ts.map +1 -0
- package/dist/core/session/usage-ledger.js +68 -0
- package/dist/core/session/usage-ledger.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/settings-manager.d.ts +318 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +991 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +40 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +57 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +15 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +36 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +26 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +27 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +32 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +131 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +9 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/timings.d.ts +10 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +41 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +51 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +310 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/compress-context.d.ts +27 -0
- package/dist/core/tools/compress-context.d.ts.map +1 -0
- package/dist/core/tools/compress-context.js +142 -0
- package/dist/core/tools/compress-context.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +82 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +327 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +50 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +324 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +60 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +22 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +268 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +27 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +332 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/hash-store.d.ts +12 -0
- package/dist/core/tools/hash-store.d.ts.map +1 -0
- package/dist/core/tools/hash-store.js +48 -0
- package/dist/core/tools/hash-store.js.map +1 -0
- package/dist/core/tools/hashline/apply.d.ts +40 -0
- package/dist/core/tools/hashline/apply.d.ts.map +1 -0
- package/dist/core/tools/hashline/apply.js +261 -0
- package/dist/core/tools/hashline/apply.js.map +1 -0
- package/dist/core/tools/hashline/hash.d.ts +56 -0
- package/dist/core/tools/hashline/hash.d.ts.map +1 -0
- package/dist/core/tools/hashline/hash.js +196 -0
- package/dist/core/tools/hashline/hash.js.map +1 -0
- package/dist/core/tools/hashline/parse.d.ts +8 -0
- package/dist/core/tools/hashline/parse.d.ts.map +1 -0
- package/dist/core/tools/hashline/parse.js +41 -0
- package/dist/core/tools/hashline/parse.js.map +1 -0
- package/dist/core/tools/hashline/resolve.d.ts +51 -0
- package/dist/core/tools/hashline/resolve.d.ts.map +1 -0
- package/dist/core/tools/hashline/resolve.js +187 -0
- package/dist/core/tools/hashline/resolve.js.map +1 -0
- package/dist/core/tools/hashline-utils.d.ts +6 -0
- package/dist/core/tools/hashline-utils.d.ts.map +1 -0
- package/dist/core/tools/hashline-utils.js +23 -0
- package/dist/core/tools/hashline-utils.js.map +1 -0
- package/dist/core/tools/index.d.ts +36 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +141 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +21 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +156 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/operations.d.ts +201 -0
- package/dist/core/tools/operations.d.ts.map +1 -0
- package/dist/core/tools/operations.js +697 -0
- package/dist/core/tools/operations.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +54 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +184 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +9 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +99 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +32 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +318 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +33 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +61 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/replace-diff.d.ts +16 -0
- package/dist/core/tools/replace-diff.d.ts.map +1 -0
- package/dist/core/tools/replace-diff.js +117 -0
- package/dist/core/tools/replace-diff.js.map +1 -0
- package/dist/core/tools/replace-normalize.d.ts +2 -0
- package/dist/core/tools/replace-normalize.d.ts.map +1 -0
- package/dist/core/tools/replace-normalize.js +73 -0
- package/dist/core/tools/replace-normalize.js.map +1 -0
- package/dist/core/tools/replace-render.d.ts +51 -0
- package/dist/core/tools/replace-render.d.ts.map +1 -0
- package/dist/core/tools/replace-render.js +162 -0
- package/dist/core/tools/replace-render.js.map +1 -0
- package/dist/core/tools/runtime.d.ts +2 -0
- package/dist/core/tools/runtime.d.ts.map +1 -0
- package/dist/core/tools/runtime.js +6 -0
- package/dist/core/tools/runtime.js.map +1 -0
- package/dist/core/tools/session-history.d.ts +55 -0
- package/dist/core/tools/session-history.d.ts.map +1 -0
- package/dist/core/tools/session-history.js +649 -0
- package/dist/core/tools/session-history.js.map +1 -0
- package/dist/core/tools/subagent-agents.d.ts +29 -0
- package/dist/core/tools/subagent-agents.d.ts.map +1 -0
- package/dist/core/tools/subagent-agents.js +223 -0
- package/dist/core/tools/subagent-agents.js.map +1 -0
- package/dist/core/tools/subagent.d.ts +185 -0
- package/dist/core/tools/subagent.d.ts.map +1 -0
- package/dist/core/tools/subagent.js +1309 -0
- package/dist/core/tools/subagent.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +34 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +39 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +215 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/websearch.d.ts +33 -0
- package/dist/core/tools/websearch.d.ts.map +1 -0
- package/dist/core/tools/websearch.js +341 -0
- package/dist/core/tools/websearch.js.map +1 -0
- package/dist/core/tools/workspace-tool-host.d.ts +102 -0
- package/dist/core/tools/workspace-tool-host.d.ts.map +1 -0
- package/dist/core/tools/workspace-tool-host.js +348 -0
- package/dist/core/tools/workspace-tool-host.js.map +1 -0
- package/dist/core/tools/write.d.ts +16 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +204 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/core/workspace-identity.d.ts +7 -0
- package/dist/core/workspace-identity.d.ts.map +1 -0
- package/dist/core/workspace-identity.js +2 -0
- package/dist/core/workspace-identity.js.map +1 -0
- package/dist/daemon/command.d.ts +6 -0
- package/dist/daemon/command.d.ts.map +1 -0
- package/dist/daemon/command.js +58 -0
- package/dist/daemon/command.js.map +1 -0
- package/dist/daemon/config.d.ts +43 -0
- package/dist/daemon/config.d.ts.map +1 -0
- package/dist/daemon/config.js +304 -0
- package/dist/daemon/config.js.map +1 -0
- package/dist/daemon/help.d.ts +2 -0
- package/dist/daemon/help.d.ts.map +1 -0
- package/dist/daemon/help.js +42 -0
- package/dist/daemon/help.js.map +1 -0
- package/dist/daemon/lsp-config.d.ts +4 -0
- package/dist/daemon/lsp-config.d.ts.map +1 -0
- package/dist/daemon/lsp-config.js +155 -0
- package/dist/daemon/lsp-config.js.map +1 -0
- package/dist/daemon/security.d.ts +19 -0
- package/dist/daemon/security.d.ts.map +1 -0
- package/dist/daemon/security.js +175 -0
- package/dist/daemon/security.js.map +1 -0
- package/dist/daemon/server.d.ts +20 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +400 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/workspace-runtime.d.ts +46 -0
- package/dist/daemon/workspace-runtime.d.ts.map +1 -0
- package/dist/daemon/workspace-runtime.js +673 -0
- package/dist/daemon/workspace-runtime.js.map +1 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +39 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +763 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +35 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +412 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +29 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +149 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +36 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +173 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +18 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +54 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +74 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +514 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +25 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +85 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +80 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +118 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +22 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +128 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +61 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +83 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +36 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +227 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/hook-execution.d.ts +19 -0
- package/dist/modes/interactive/components/hook-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/hook-execution.js +184 -0
- package/dist/modes/interactive/components/hook-execution.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +55 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +176 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts +4 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +14 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +228 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +52 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +296 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +50 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +300 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +22 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +144 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +108 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +835 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +81 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +455 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +51 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +67 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +306 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +127 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1098 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +16 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +49 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +557 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +5859 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +86 -0
- package/dist/modes/interactive/theme/light.json +85 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +106 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +1030 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/json-event.d.ts +28 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +12 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts +29 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +142 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +321 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +755 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +963 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +652 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +4 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +488 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +25 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +23 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +74 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +15 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +88 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +13 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +248 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +11 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +20 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +4 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +171 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/directory-completions.d.ts +5 -0
- package/dist/utils/directory-completions.d.ts.map +1 -0
- package/dist/utils/directory-completions.js +64 -0
- package/dist/utils/directory-completions.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +6 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +166 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +27 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +237 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/grip-user-agent.d.ts +2 -0
- package/dist/utils/grip-user-agent.d.ts.map +1 -0
- package/dist/utils/grip-user-agent.js +5 -0
- package/dist/utils/grip-user-agent.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +12 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +43 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-process.d.ts +18 -0
- package/dist/utils/image-process.d.ts.map +1 -0
- package/dist/utils/image-process.js +83 -0
- package/dist/utils/image-process.js.map +1 -0
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +133 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +19 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +81 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +7 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +110 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/dist/utils/paths.d.ts +31 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +87 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +22 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +125 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/shell.d.ts +28 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +188 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +125 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +5 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +329 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +14 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +91 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +408 -0
- package/docs/custom-provider.md +714 -0
- package/docs/daemon-architecture.md +399 -0
- package/docs/daemon.md +110 -0
- package/docs/development.md +72 -0
- package/docs/docs.json +164 -0
- package/docs/extensions.md +2745 -0
- package/docs/hooks.md +85 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +81 -0
- package/docs/json.md +89 -0
- package/docs/keybindings.md +230 -0
- package/docs/lsp.md +499 -0
- package/docs/migrating-to-grip.md +18 -0
- package/docs/models.md +496 -0
- package/docs/packages.md +228 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +251 -0
- package/docs/quickstart.md +167 -0
- package/docs/rpc.md +1492 -0
- package/docs/rules.md +117 -0
- package/docs/sandbox.md +181 -0
- package/docs/sdk.md +360 -0
- package/docs/session-format.md +414 -0
- package/docs/sessions.md +137 -0
- package/docs/settings.md +371 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +246 -0
- package/docs/terminal-setup.md +112 -0
- package/docs/termux.md +129 -0
- package/docs/themes.md +295 -0
- package/docs/tmux.md +61 -0
- package/docs/tui.md +918 -0
- package/docs/usage.md +304 -0
- package/docs/windows.md +17 -0
- package/examples/README.md +31 -0
- package/examples/daemon-docker/Dockerfile +43 -0
- package/examples/daemon-docker/README.md +45 -0
- package/examples/extensions/README.md +208 -0
- package/examples/extensions/auto-commit-on-exit.ts +46 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +145 -0
- package/examples/extensions/built-in-tool-renderer.ts +259 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +82 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +131 -0
- package/examples/extensions/custom-footer.ts +79 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +707 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +402 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +104 -0
- package/examples/extensions/dirty-repo-guard.ts +59 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +133 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/RULES.md +8 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +16 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/git-merge-and-resolve.ts +125 -0
- package/examples/extensions/github-issue-autocomplete.ts +191 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +104 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +194 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +428 -0
- package/examples/extensions/modal-editor.ts +86 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1374 -0
- package/examples/extensions/overlay-test.ts +171 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +346 -0
- package/examples/extensions/plan-mode/utils.ts +172 -0
- package/examples/extensions/preset.ts +426 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +29 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +125 -0
- package/examples/extensions/question.ts +294 -0
- package/examples/extensions/questionnaire.ts +459 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +320 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +381 -0
- package/examples/extensions/space-invaders.ts +597 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +175 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +1083 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +186 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1091 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +306 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +141 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +200 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/remote-session-server/README.md +71 -0
- package/examples/remote-session-server/server.ts +353 -0
- package/examples/rpc-extension-ui.ts +642 -0
- package/examples/sandbox-docker/Dockerfile +274 -0
- package/examples/sandbox-docker/README.md +88 -0
- package/examples/sdk/01-minimal.ts +27 -0
- package/examples/sdk/02-custom-model.ts +54 -0
- package/examples/sdk/03-custom-prompt.ts +76 -0
- package/examples/sdk/04-skills.ts +60 -0
- package/examples/sdk/05-tools.ts +55 -0
- package/examples/sdk/06-extensions.ts +94 -0
- package/examples/sdk/07-context-files.ts +47 -0
- package/examples/sdk/08-prompt-templates.ts +56 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +50 -0
- package/examples/sdk/10-settings.ts +58 -0
- package/examples/sdk/11-sessions.ts +54 -0
- package/examples/sdk/12-full-control.ts +79 -0
- package/examples/sdk/13-session-runtime.ts +49 -0
- package/examples/sdk/README.md +94 -0
- package/npm-shrinkwrap.json +1878 -0
- package/package.json +102 -5
package/docs/hooks.md
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Hooks
|
|
2
|
+
|
|
3
|
+
Grip supports host-local automation with a Phase 0 Claude Code-compatible hook schema. Hooks are separate from Grip extensions. Native Grip settings are preferred; Claude settings remain supported for compatibility.
|
|
4
|
+
|
|
5
|
+
## Configuration and precedence
|
|
6
|
+
|
|
7
|
+
For every new session, `GripAgent` captures an immutable active hook snapshot. `/reload` rereads the same trusted file-backed sources and replaces that snapshot after resolution succeeds. Trusted user sources are discovered in this order:
|
|
8
|
+
|
|
9
|
+
1. `<agentDir>/settings.json` (native Grip settings; normally `~/.grip/agent/settings.json`)
|
|
10
|
+
2. `~/.claude/settings.json` (Claude compatibility)
|
|
11
|
+
|
|
12
|
+
Project sources are disabled by default. When the interactive CLI starts in a local repository containing project hooks, it asks whether to **Don't trust**, **Trust once**, or **Trust always**. Trust once applies to the current session, including `/reload`. Trust always stores the canonical repository location in `<agentDir>/trusted-project-hooks.json` (normally `~/.grip/agent/trusted-project-hooks.json`) and trusts all future hook changes at that location without prompting again. `--trust-project-hooks` bypasses the prompt. Embedding hosts must explicitly set `trustProjectHooks: true`. Trusted project sources are appended in this order:
|
|
13
|
+
|
|
14
|
+
1. `<cwd>/.grip/settings.json` (native Grip settings)
|
|
15
|
+
2. `<cwd>/.claude/settings.json` (Claude compatibility)
|
|
16
|
+
3. `<cwd>/.claude/settings.local.json` (Claude compatibility local override)
|
|
17
|
+
|
|
18
|
+
Handlers are additive in source order. Exact duplicate event/matcher/handler combinations execute once, with the earlier native Grip source preferred over its Claude compatibility counterpart. `disableAllHooks` retains final-included-source precedence. Initial project discovery requires local built-in operations or a custom backend identity explicitly reporting `local`; unknown and remote startup backends fail closed. After an approved local snapshot is loaded, project/local command hooks follow the active workspace backend: host-local while local, and container/remote-local after a Docker daemon or sandbox transition. Host-injected snapshots are trusted host configuration and do not use discovery.
|
|
19
|
+
|
|
20
|
+
SDK hosts can use `CreateGripAgentOptions.hooks` to disable discovery, override the home directory used for Claude compatibility, inject a snapshot, or impose HTTP URL/environment ceilings. Native user hooks follow the active Grip `agentDir`. Injected snapshots are cloned and recursively frozen; `/reload` retains the injected snapshot rather than reading settings files. `loadHooks()` likewise defaults to user-only discovery; callers must explicitly select project/local sources. The complete parsing/execution types and helpers are exported from `@greppleai/grip/hooks`; only stable host options are exported at the package root.
|
|
21
|
+
Example:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"hooks": {
|
|
26
|
+
"PreToolUse": [
|
|
27
|
+
{
|
|
28
|
+
"matcher": "Bash|Write",
|
|
29
|
+
"hooks": [{ "type": "command", "command": "./check-tool.sh", "timeout": 10 }]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Supported events
|
|
37
|
+
|
|
38
|
+
| Event | Timing and behavior |
|
|
39
|
+
|---|---|
|
|
40
|
+
| `SessionStart` | Lazily, once, immediately before the session's first submitted prompt in interactive, print, JSON, RPC, and SDK modes. |
|
|
41
|
+
| `UserPromptSubmit` | On raw submitted text, before extension commands/input handlers, skill/rule/template expansion, prompt persistence, or provider submission. Blocking rejects the submission without persisting the prompt; the completed hook execution is still recorded in the audit trail. Context output is inserted once as hidden model-visible custom context. |
|
|
42
|
+
| `PreToolUse` | After Grip's initial argument validation and before extension `tool_call`. Deny/block prevents execution. `ask` and `defer` also fail closed with distinct diagnostics because Grip has no permission engine. For Read/Edit/Write, Grip's `path` is exposed as Claude `file_path`, lexically resolved to an absolute path with the active backend's path flavor. Local POSIX `~` paths use the host home; remote or otherwise unknown homes fail closed. `updatedInput` fully replaces the arguments; `file_path` is safely mapped back to Grip `path` under the same home rule and revalidated against the active tool schema. Invalid or unsupported replacement fails closed. Deny-time additional context is included once in the blocked tool result feedback. |
|
|
43
|
+
| `PostToolUse` | After successful execution. Post ordering is: built-in LSP synchronization, extension `tool_result`, then this hook. It therefore observes the extension-adjusted result. |
|
|
44
|
+
| `PostToolUseFailure` | At the same post position when execution has failed. It cannot turn a failure into a successful execution. |
|
|
45
|
+
| `Stop` | After retry and auto-compaction decisions, before session settlement. Receives the final assistant text directly. Blocking or additional context inserts hidden, model-visible custom hook feedback and continues the loop. Continued calls set `stop_hook_active`. Grip normally allows at most eight consecutive hook continuations; a hook can continue beyond that while reporting decreasing `continuationProgress` as described below. |
|
|
46
|
+
| `StopFailure` | Emitted for a final assistant failure after retry/compaction decisions. Its output cannot continue the loop. |
|
|
47
|
+
| `PreCompact` / `PostCompact` | Around successful manual and automatic compaction. Trigger is `manual` or `auto`; `PostCompact` receives the saved summary. A blocking `PreCompact` cancels compaction. |
|
|
48
|
+
| `SessionEnd` | Once during `GripAgent` session replacement or disposal, before extension shutdown and session disposal. Default shared budget is 1.5 seconds; an explicit handler timeout may raise it, capped at 60 seconds. |
|
|
49
|
+
|
|
50
|
+
Common input fields include a stable Grip session ID, the host repository cwd, a UUID `prompt_id` for the submitted prompt and its work, and a local file-backed session reference as `transcript_path` when available (otherwise an empty string). Hooks receive no remote transcript fetch. Built-in names are normalized to Claude names (`Read`, `Bash`, `Edit`, `Write`, `WebSearch`, `Grep`, and `Glob`); custom tool names are unchanged. File-tool inputs still use the active workspace backend's lexical paths.
|
|
51
|
+
|
|
52
|
+
Matchers support match-all, exact comma/pipe alternatives, and JavaScript regular expressions. `UserPromptSubmit` and `Stop` ignore matchers, matching Claude behavior. Tool `if` conditions support the common tool/argument glob form.
|
|
53
|
+
|
|
54
|
+
## Handlers and output
|
|
55
|
+
|
|
56
|
+
Phase 0 executes synchronous `command` and `http` handlers. Matching handlers run concurrently; their results are aggregated deterministically in settings-source/order order. Command handlers receive JSON on stdin. HTTP handlers receive a JSON POST, reject redirects, and stream response bodies into the configured bound. Only structured JSON from successful HTTP responses is actionable; 2xx plain text is diagnosed and ignored. Plain text from successful command `SessionStart` and `UserPromptSubmit` handlers becomes context. Object-looking malformed stdout is diagnosed and discarded. Structured JSON supports common controls, but `hookSpecificOutput` fields apply only when `hookEventName` matches the active event. `systemMessage` is aggregated for every supported event and emitted only as host-facing diagnostic output; it is never added to model context. Supported model-context controls include:
|
|
57
|
+
- `additionalContext`
|
|
58
|
+
- `permissionDecision`, `permissionDecisionReason`, and `updatedInput` for `PreToolUse`
|
|
59
|
+
- `updatedToolOutput` for `PostToolUse` (built-in tools conservatively accept strings only; custom tools may use valid `{ content, details? }` shapes)
|
|
60
|
+
- `updatedMCPToolOutput` only for `mcp__` tools
|
|
61
|
+
|
|
62
|
+
`continue:false` is aggregate termination, not an event block. In particular, Stop settles without a continuation. Stop continuation is requested only by `decision:"block"`, exit status 2, or Stop `additionalContext`. Pre-tool context is attached once to its corresponding result; post-tool context and block reasons are returned as model feedback.
|
|
63
|
+
|
|
64
|
+
A Stop handler may set `hookSpecificOutput.continuationProgress` to a finite nonnegative number representing remaining work, where lower is better. Grip sums progress reported by matching Stop handlers. The ordinary eight-continuation limit remains when progress is absent or stalled. Beyond eight continuations, Grip keeps running while the aggregate metric establishes a new low, tolerating up to three consecutive equal or higher reports so short regressions do not terminate a converging loop. A fourth report without a new low settles the session. Progress state is local to the current prompt continuation chain and resets when the chain settles, fails, aborts, or a new prompt starts.
|
|
65
|
+
Exit status 2 blocks only events with compatible preflight semantics. Timeouts, process failures, malformed output, and HTTP failures are nonfatal/fail-open unless a valid blocking result was returned. Stdout/stderr are bounded to 1 MiB each by default, while every individual model-visible context/reason field is independently capped at 10,000 characters. The session owns cancellation for all hooks; replacement/disposal cancels outstanding work, and active tool hooks also compose with the agent signal. User-aborted assistant runs do not emit Stop or StopFailure.
|
|
66
|
+
|
|
67
|
+
## Interactive visibility
|
|
68
|
+
|
|
69
|
+
The interactive TUI adds distinctly colored cards for hook events that execute at least one matching handler. Cards start collapsed, showing the event, subject/tool-name counts, aggregate completed/failed/cancelled call counts, and the configured expansion shortcut. Command labels, source paths, detailed statuses/timings, and returned prompt bodies are hidden until expanded. Press **Ctrl+O** (the configurable `app.tools.expand` action) to expand or collapse hook details together with ordinary tool output. New cards and cards reconstructed by `/reload` or transcript navigation inherit the current expansion state.
|
|
70
|
+
|
|
71
|
+
Within one agent turn, tool-hook activity is grouped into separate `PreToolUse`, `PostToolUse`, and `PostToolUseFailure` cards; non-tool lifecycle events remain standalone. When expanded, each unique handler is shown on its own line, while repeated handlers with the same type, displayed target, and exact source are aggregated with invocation/status counts and an approximate average execution time to one decimal place. Cards deduplicate explicit returned model-visible prompts while preserving occurrence counts. Non-actionable raw stdout and stderr are not rendered; successful plain command output accepted as model context is shown as a returned prompt. Collapsing is a presentation choice, not redaction: hook execution, model-visible context, and stored audit data are unchanged.
|
|
72
|
+
|
|
73
|
+
Hook cards are persisted in JSONL as displayable, context-excluded audit messages. This preserves their original transcript positions across `/reload`, resume, and process restarts without adding them to model context. The interactive TUI renders at most the latest 200 hook cards from the active context; older audit entries remain in session storage. Print, JSON, and RPC modes do not render hook cards.
|
|
74
|
+
|
|
75
|
+
Use `/hooks disable` to skip subsequent hook events for the current interactive session and `/hooks enable` to resume dispatch. Disabling hooks does not cancel a handler already executing, skipped events are not replayed, and each newly created or resumed session starts enabled. `/reload` preserves the current enabled/disabled state, refreshes hook diagnostics, and does not synthesize hook `SessionEnd` or `SessionStart` events. If hook resolution throws, the previous active snapshot remains in use. The command is user-only and excluded from model-visible slash-command catalogs.
|
|
76
|
+
|
|
77
|
+
Not implemented in Phase 0: `prompt`, `agent`, and `mcp_tool` handlers; asynchronous/background handlers; prompt/agent/MCP lifecycle events; and permission events. Unsupported handlers are diagnosed and never executed.
|
|
78
|
+
|
|
79
|
+
## Security and locality
|
|
80
|
+
|
|
81
|
+
Hooks are trusted code. Interactive project settings are not discovered until the user approves them; the host-only SDK grant and `--trust-project-hooks` are explicit alternatives. Initial remote backends do not discover project settings. Review both `.grip` and compatibility `.claude` hook configuration before granting trust. **Trust always is location-based and includes arbitrary future hook changes at that repository path.**
|
|
82
|
+
|
|
83
|
+
Project/local command hooks execute through the active workspace backend. Locally they run as the host user; after a sandbox or remote transition they execute inside that backend with its cwd and sanitized backend environment. They never fall back to host execution when a non-local backend is unavailable. Project/local HTTP hooks are rejected on non-local backends because proxying them through host networking would escape isolation. User hooks and host-injected snapshots remain host-owned even when tools are remote. File-tool input paths are lexically normalized using the active backend's POSIX/Windows semantics without probing the remote filesystem.
|
|
84
|
+
|
|
85
|
+
Hook environments remove OpenTelemetry variables and Grip credential-like variables. This is defense in depth, not a general secret sandbox: locally executing hooks retain the authority of the Grip host user, while sandbox/remote project hooks retain the authority granted by that backend. Host HTTP destinations honor merged `allowedHttpHookUrls` settings policy and any host URL ceiling, require HTTPS except for literal loopback destinations, and reject redirects. HTTP header interpolation is restricted by the handler `allowedEnvVars`, merged `httpHookAllowedEnvVars` policy, and any host environment ceiling. Host and backend command execution applies bounded output, cancellation, timeout, and process-tree cleanup.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/index.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Grip Documentation
|
|
2
|
+
|
|
3
|
+
Grip is a minimal terminal coding harness. It is designed to stay small at the core while being extended through TypeScript extensions, skills, rules, prompt templates, themes, and Grip packages.
|
|
4
|
+
|
|
5
|
+
## Quick start
|
|
6
|
+
|
|
7
|
+
When the package is available in your registry, install Grip with npm:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g --ignore-scripts @greppleai/grip
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`--ignore-scripts` disables dependency lifecycle scripts during install. Grip does not require install scripts for normal npm installs. This repository rename does not verify publication or ownership of the new npm scope.
|
|
14
|
+
|
|
15
|
+
The former installer at `https://pi.dev/install.sh` belongs to the old Pi distribution; it is not a verified Grip installation method. Do not replace the hostname with a guessed endpoint.
|
|
16
|
+
|
|
17
|
+
To uninstall Grip itself after an npm install, use:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm uninstall -g @greppleai/grip
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
For pnpm, Yarn, or Bun installs, use the matching global remove command: `pnpm remove -g @greppleai/grip`, `yarn global remove @greppleai/grip`, or `bun uninstall -g @greppleai/grip`.
|
|
24
|
+
|
|
25
|
+
Then run it in a project directory:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
grip
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Authenticate with `/login` for subscription providers, or set an API key such as `ANTHROPIC_API_KEY` before starting Grip.
|
|
32
|
+
|
|
33
|
+
For the full first-run flow, see [Quickstart](quickstart.md). Upgrading from the previous project identity? Read [Migrating to Grip](migrating-to-grip.md); existing configuration and sessions are not moved automatically.
|
|
34
|
+
|
|
35
|
+
## Start here
|
|
36
|
+
|
|
37
|
+
- [Quickstart](quickstart.md) - install, authenticate, and run a first session.
|
|
38
|
+
- [Migrating to Grip](migrating-to-grip.md) - manual migration from the old CLI, packages, and configuration paths.
|
|
39
|
+
- [Using Grip](usage.md) - interactive mode, slash commands, context files, and CLI reference.
|
|
40
|
+
- [Providers](providers.md) - subscription and API-key setup for built-in providers.
|
|
41
|
+
- [Settings](settings.md) - global and project settings.
|
|
42
|
+
- [Language Server Protocol](lsp.md) - configure spawned servers, attached endpoints, host connections, and remote-backend path mappings.
|
|
43
|
+
- [Remote Daemon](daemon.md) - run `grip --daemon` as a confined remote workspace runtime.
|
|
44
|
+
- [Docker Sandbox](sandbox.md) - hidden user-only `/sandbox` command for Docker-backed workspace execution.
|
|
45
|
+
- [Keybindings](keybindings.md) - default shortcuts and custom keybindings.
|
|
46
|
+
- [Sessions](sessions.md) - session management, branching, and tree navigation.
|
|
47
|
+
- [Compaction](compaction.md) - context compaction and branch summarization.
|
|
48
|
+
|
|
49
|
+
## Customization
|
|
50
|
+
|
|
51
|
+
- [Extensions](extensions.md) - TypeScript modules for tools, commands, events, and custom UI.
|
|
52
|
+
- [Skills](skills.md) - Agent Skills for reusable on-demand capabilities.
|
|
53
|
+
- [Rules](rules.md) - on-demand mandatory constraints and policies.
|
|
54
|
+
- [Prompt templates](prompt-templates.md) - reusable prompts that expand from slash commands.
|
|
55
|
+
- [Themes](themes.md) - built-in and custom terminal themes.
|
|
56
|
+
- [Grip packages](packages.md) - bundle and share extensions, skills, rules, prompts, and themes.
|
|
57
|
+
- [Custom models](models.md) - add model entries for supported provider APIs.
|
|
58
|
+
- [Custom providers](custom-provider.md) - implement custom APIs and OAuth flows.
|
|
59
|
+
|
|
60
|
+
## Programmatic usage
|
|
61
|
+
|
|
62
|
+
- [SDK](sdk.md) - embed Grip in Node.js applications.
|
|
63
|
+
- [RPC mode](rpc.md) - integrate over stdin/stdout JSONL.
|
|
64
|
+
- [JSON event stream mode](json.md) - print mode with structured events.
|
|
65
|
+
- [TUI components](tui.md) - build custom terminal UI for extensions.
|
|
66
|
+
|
|
67
|
+
## Reference
|
|
68
|
+
|
|
69
|
+
- [Session format](session-format.md) - JSONL session file format, entry types, and session APIs.
|
|
70
|
+
|
|
71
|
+
## Platform setup
|
|
72
|
+
|
|
73
|
+
- [Windows](windows.md)
|
|
74
|
+
- [Termux on Android](termux.md)
|
|
75
|
+
- [tmux](tmux.md)
|
|
76
|
+
- [Terminal setup](terminal-setup.md)
|
|
77
|
+
- [Shell aliases](shell-aliases.md)
|
|
78
|
+
|
|
79
|
+
## Development
|
|
80
|
+
|
|
81
|
+
- [Development](development.md) - local setup, project structure, and debugging.
|
package/docs/json.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# JSON Event Stream Mode
|
|
2
|
+
|
|
3
|
+
```bash
|
|
4
|
+
grip --mode json "Your prompt"
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Outputs all session events as JSON lines to stdout. Useful for integrating Grip into other tools or custom UIs.
|
|
8
|
+
|
|
9
|
+
## Event Types
|
|
10
|
+
|
|
11
|
+
Wire events use [`JsonAgentSessionEvent`](../src/modes/json-event.ts). It matches
|
|
12
|
+
[`AgentSessionEvent`](../src/core/agent-session.ts) except that streaming message updates omit cumulative snapshots:
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
type WithoutPartial<T> = T extends { partial: unknown } ? Omit<T, "partial"> : T;
|
|
16
|
+
|
|
17
|
+
type JsonAgentSessionEvent =
|
|
18
|
+
| Exclude<AgentSessionEvent, { type: "message_update" }>
|
|
19
|
+
| {
|
|
20
|
+
type: "message_update";
|
|
21
|
+
assistantMessageEvent: WithoutPartial<AssistantMessageEvent>;
|
|
22
|
+
};
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`queue_update` emits the full pending steering and follow-up queues whenever they change. `compaction_start` and `compaction_end` cover both manual and automatic compaction.
|
|
26
|
+
|
|
27
|
+
Other base events come from [`AgentEvent`](../../agent/src/types.ts):
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
type AgentEvent =
|
|
31
|
+
// Agent lifecycle
|
|
32
|
+
| { type: "agent_start" }
|
|
33
|
+
| { type: "agent_end"; messages: AgentMessage[] }
|
|
34
|
+
// Turn lifecycle
|
|
35
|
+
| { type: "turn_start" }
|
|
36
|
+
| { type: "turn_end"; message: AgentMessage; toolResults: ToolResultMessage[] }
|
|
37
|
+
// Message lifecycle
|
|
38
|
+
| { type: "message_start"; message: AgentMessage }
|
|
39
|
+
| { type: "message_update"; message: AgentMessage; assistantMessageEvent: AssistantMessageEvent }
|
|
40
|
+
| { type: "message_end"; message: AgentMessage }
|
|
41
|
+
// Tool execution
|
|
42
|
+
| { type: "tool_execution_start"; toolCallId: string; toolName: string; args: any }
|
|
43
|
+
| { type: "tool_execution_update"; toolCallId: string; toolName: string; args: any; partialResult: any }
|
|
44
|
+
| { type: "tool_execution_end"; toolCallId: string; toolName: string; result: any; isError: boolean };
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Message Types
|
|
48
|
+
|
|
49
|
+
Base messages from [`packages/ai/src/types.ts`](../../ai/src/types.ts):
|
|
50
|
+
- `UserMessage`
|
|
51
|
+
- `AssistantMessage`
|
|
52
|
+
- `ToolResultMessage`
|
|
53
|
+
|
|
54
|
+
Extended messages re-exported by [`core/messages.ts`](../src/core/messages.ts) from `@greppleai/grip-agent-core`:
|
|
55
|
+
- `BashExecutionMessage`
|
|
56
|
+
- `CustomMessage`
|
|
57
|
+
- `BranchSummaryMessage`
|
|
58
|
+
- `CompactionSummaryMessage`
|
|
59
|
+
- `CompactionSummaryMessage` (line 62)
|
|
60
|
+
|
|
61
|
+
## Output Format
|
|
62
|
+
|
|
63
|
+
Each line is a JSON object. Writes are serialized through the stdout queue, and provider event delivery waits for queued JSON output to drain. The first line is the session header:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{"type":"session","version":3,"id":"uuid","timestamp":"...","cwd":"/path"}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Followed by events as they occur:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{"type":"agent_start"}
|
|
73
|
+
{"type":"turn_start"}
|
|
74
|
+
{"type":"message_start","message":{"role":"assistant","content":[],...}}
|
|
75
|
+
{"type":"message_update","assistantMessageEvent":{"type":"text_delta","contentIndex":0,"delta":"Hello"}}
|
|
76
|
+
{"type":"message_end","message":{...}}
|
|
77
|
+
{"type":"turn_end","message":{...},"toolResults":[]}
|
|
78
|
+
{"type":"agent_end","messages":[...]}
|
|
79
|
+
```
|
|
80
|
+
`message_update` records are delta-only. They omit both the cumulative `message` field and
|
|
81
|
+
`assistantMessageEvent.partial` to keep stream size linear. Use `contentIndex` and `delta`
|
|
82
|
+
to assemble live text, thinking, or tool-call arguments if needed. `message_end` contains
|
|
83
|
+
the final authoritative message.
|
|
84
|
+
|
|
85
|
+
## Example
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
grip --mode json "List files" 2>/dev/null | jq -c 'select(.type == "message_end")'
|
|
89
|
+
```
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# Keybindings
|
|
2
|
+
|
|
3
|
+
All keyboard shortcuts can be customized via `~/.grip/agent/keybindings.json`. Each action can be bound to one or more keys.
|
|
4
|
+
|
|
5
|
+
The config file uses the same namespaced keybinding ids that Grip uses internally and that extension authors use in `keyHint()` and injected `keybindings` managers.
|
|
6
|
+
|
|
7
|
+
Older configs using pre-namespaced ids such as `cursorUp` or `expandTools` are migrated automatically to the namespaced ids on startup.
|
|
8
|
+
|
|
9
|
+
After editing `keybindings.json`, run `/reload` in Grip to apply the changes without restarting the session.
|
|
10
|
+
|
|
11
|
+
## Key Format
|
|
12
|
+
|
|
13
|
+
`modifier+key` where modifiers are `ctrl`, `shift`, `alt`, `super` (combinable) and keys are:
|
|
14
|
+
|
|
15
|
+
- **Letters:** `a-z`
|
|
16
|
+
- **Digits:** `0-9`
|
|
17
|
+
- **Special:** `escape`, `esc`, `enter`, `return`, `tab`, `space`, `backspace`, `delete`, `insert`, `clear`, `home`, `end`, `pageUp`, `pageDown`, `up`, `down`, `left`, `right`
|
|
18
|
+
- **Function:** `f1`-`f12`
|
|
19
|
+
- **Symbols:** `` ` ``, `-`, `=`, `[`, `]`, `\`, `;`, `'`, `,`, `.`, `/`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `(`, `)`, `_`, `+`, `|`, `~`, `{`, `}`, `:`, `<`, `>`, `?`
|
|
20
|
+
|
|
21
|
+
Modifier combinations: `ctrl+shift+x`, `alt+ctrl+x`, `ctrl+shift+alt+x`, `super+k`, `ctrl+super+k`, `ctrl+1`, etc.
|
|
22
|
+
|
|
23
|
+
`super` bindings require a terminal that reports the modifier separately, typically through the Kitty keyboard protocol. They may not work in terminals without that support.
|
|
24
|
+
|
|
25
|
+
## All Actions
|
|
26
|
+
|
|
27
|
+
### TUI Editor Cursor Movement
|
|
28
|
+
|
|
29
|
+
| Keybinding id | Default | Description |
|
|
30
|
+
|--------|---------|-------------|
|
|
31
|
+
| `tui.editor.cursorUp` | `up` | Move cursor up; browse older history when empty or already browsing at the top |
|
|
32
|
+
| `tui.editor.cursorDown` | `down` | Move cursor down; browse newer history at the bottom while browsing |
|
|
33
|
+
| `tui.editor.historyPrevious` | *(none)* | Select the previous prompt history entry |
|
|
34
|
+
| `tui.editor.historyNext` | *(none)* | Select the next prompt history entry |
|
|
35
|
+
| `tui.editor.cursorLeft` | `left`, `ctrl+b` | Move cursor left |
|
|
36
|
+
| `tui.editor.cursorRight` | `right`, `ctrl+f` | Move cursor right |
|
|
37
|
+
| `tui.editor.cursorWordLeft` | `alt+left`, `ctrl+left`, `alt+b` | Move cursor word left |
|
|
38
|
+
| `tui.editor.cursorWordRight` | `alt+right`, `ctrl+right`, `alt+f` | Move cursor word right |
|
|
39
|
+
| `tui.editor.cursorLineStart` | `home`, `ctrl+home`, `ctrl+a` | Move to line start |
|
|
40
|
+
| `tui.editor.cursorLineEnd` | `end`, `ctrl+end`, `ctrl+e` | Move to line end |
|
|
41
|
+
| `tui.editor.jumpForward` | `ctrl+]` | Jump forward to character |
|
|
42
|
+
| `tui.editor.jumpBackward` | `ctrl+alt+]` | Jump backward to character |
|
|
43
|
+
| `tui.editor.pageUp` | `pageUp`, `ctrl+pageUp` | Scroll up by page |
|
|
44
|
+
| `tui.editor.pageDown` | `pageDown`, `ctrl+pageDown` | Scroll down by page |
|
|
45
|
+
|
|
46
|
+
The dedicated history actions always change history entries, regardless of the cursor position in a multiline prompt. Explicit history bindings take precedence over application actions while the main editor is focused, so binding `tui.editor.historyPrevious` to `ctrl+p` overrides model cycling in that context without changing `Ctrl+P` in selectors.
|
|
47
|
+
|
|
48
|
+
### TUI Editor Deletion
|
|
49
|
+
|
|
50
|
+
| Keybinding id | Default | Description |
|
|
51
|
+
|--------|---------|-------------|
|
|
52
|
+
| `tui.editor.deleteCharBackward` | `backspace` | Delete character backward |
|
|
53
|
+
| `tui.editor.deleteCharForward` | `delete`, `ctrl+d` | Delete character forward |
|
|
54
|
+
| `tui.editor.deleteWordBackward` | `ctrl+w`, `alt+backspace` | Delete word backward |
|
|
55
|
+
| `tui.editor.deleteWordForward` | `alt+d`, `alt+delete` | Delete word forward |
|
|
56
|
+
| `tui.editor.deleteToLineStart` | `ctrl+u` | Delete to line start |
|
|
57
|
+
| `tui.editor.deleteToLineEnd` | `ctrl+k` | Delete to line end |
|
|
58
|
+
|
|
59
|
+
### TUI Input
|
|
60
|
+
|
|
61
|
+
| Keybinding id | Default | Description |
|
|
62
|
+
|--------|---------|-------------|
|
|
63
|
+
| `tui.input.newLine` | `shift+enter` | Insert new line |
|
|
64
|
+
| `tui.input.submit` | `enter` | Submit input |
|
|
65
|
+
| `tui.input.tab` | `tab` | Tab / autocomplete |
|
|
66
|
+
|
|
67
|
+
### TUI Kill Ring
|
|
68
|
+
|
|
69
|
+
| Keybinding id | Default | Description |
|
|
70
|
+
|--------|---------|-------------|
|
|
71
|
+
| `tui.editor.yank` | `ctrl+y` | Paste most recently deleted text |
|
|
72
|
+
| `tui.editor.yankPop` | `alt+y` | Cycle through deleted text after yank |
|
|
73
|
+
| `tui.editor.undo` | `ctrl+-` | Undo last edit |
|
|
74
|
+
|
|
75
|
+
### TUI Clipboard and Selection
|
|
76
|
+
|
|
77
|
+
| Keybinding id | Default | Description |
|
|
78
|
+
|--------|---------|-------------|
|
|
79
|
+
| `tui.input.copy` | `ctrl+c` | Copy selection |
|
|
80
|
+
| `tui.select.up` | `up` | Move selection up |
|
|
81
|
+
| `tui.select.down` | `down` | Move selection down |
|
|
82
|
+
| `tui.select.pageUp` | `pageUp` | Page up in list |
|
|
83
|
+
| `tui.select.pageDown` | `pageDown` | Page down in list |
|
|
84
|
+
| `tui.select.confirm` | `enter` | Confirm selection |
|
|
85
|
+
| `tui.select.cancel` | `escape`, `ctrl+c` | Cancel selection |
|
|
86
|
+
|
|
87
|
+
### TUI Fullscreen Viewport
|
|
88
|
+
|
|
89
|
+
These actions apply when interactive mode uses `--tui-mode fullscreen` and target the primary transcript scroll region. Two-finger trackpad and mouse-wheel input scroll the region under the pointer, falling back to the transcript over the fixed editor/status/footer dock. Clicking an OSC 8 hyperlink opens it in the default handler. Dragging with the primary mouse button selects text and copies it to the clipboard; holding at the transcript's top or bottom edge auto-scrolls into off-screen content.
|
|
90
|
+
|
|
91
|
+
Fullscreen transcript bindings take precedence over editor bindings. The default unmodified navigation keys therefore control the transcript in fullscreen mode, while their `ctrl` variants continue to control the editor. Outside fullscreen mode, both variants control the editor.
|
|
92
|
+
|
|
93
|
+
| Key | Default mode | Fullscreen mode |
|
|
94
|
+
|-----|--------------|-----------------|
|
|
95
|
+
| `home`, `end` | Editor | Transcript |
|
|
96
|
+
| `ctrl+home`, `ctrl+end` | Editor | Editor |
|
|
97
|
+
| `pageUp`, `pageDown` | Editor | Transcript |
|
|
98
|
+
| `ctrl+pageUp`, `ctrl+pageDown` | Editor | Editor |
|
|
99
|
+
|
|
100
|
+
This routing remains configurable through the ordinary action bindings. For example, `"tui.altScreen.pageUp": "ctrl+pageUp"` makes `pageUp` control the editor and `ctrl+pageUp` control the transcript in fullscreen mode. Bind `tui.altScreen.halfPageUp` and `tui.altScreen.halfPageDown` for smaller transcript steps while keeping the full-page bindings. Setting `"tui.altScreen.pageUp": []` disables that transcript shortcut entirely. User bindings replace the defaults for that action.
|
|
101
|
+
|
|
102
|
+
| Keybinding id | Default | Description |
|
|
103
|
+
|--------|---------|-------------|
|
|
104
|
+
| `tui.altScreen.pageUp` | `pageUp` | Scroll the transcript up by one page |
|
|
105
|
+
| `tui.altScreen.pageDown` | `pageDown` | Scroll the transcript down by one page |
|
|
106
|
+
| `tui.altScreen.halfPageUp` | *(none)* | Scroll the transcript up by half a page |
|
|
107
|
+
| `tui.altScreen.halfPageDown` | *(none)* | Scroll the transcript down by half a page |
|
|
108
|
+
| `tui.altScreen.previousPrompt` | `ctrl+shift+up` | Jump to the previous marked message |
|
|
109
|
+
| `tui.altScreen.nextPrompt` | `ctrl+shift+down` | Jump to the next marked message |
|
|
110
|
+
| `tui.altScreen.top` | `home` | Scroll to the beginning of the transcript |
|
|
111
|
+
| `tui.altScreen.bottom` | `end` | Scroll to the transcript end and follow new output |
|
|
112
|
+
|
|
113
|
+
### Application
|
|
114
|
+
|
|
115
|
+
| Keybinding id | Default | Description |
|
|
116
|
+
|--------|---------|-------------|
|
|
117
|
+
| `app.interrupt` | `escape` | Cancel / abort |
|
|
118
|
+
| `app.clear` | `ctrl+c` | Clear editor (first) / exit (second) |
|
|
119
|
+
| `app.exit` | `ctrl+d` | Exit (when editor empty) |
|
|
120
|
+
| `app.suspend` | `ctrl+z` (none on Windows) | Suspend to background |
|
|
121
|
+
| `app.editor.external` | `ctrl+g` | Open in external editor (`externalEditor`, `$VISUAL`, `$EDITOR`, Notepad on Windows, or `nano` elsewhere) |
|
|
122
|
+
| `app.clipboard.pasteImage` | `ctrl+v` (`alt+v` on Windows) | Paste image or text from clipboard |
|
|
123
|
+
|
|
124
|
+
### Sessions
|
|
125
|
+
|
|
126
|
+
| Keybinding id | Default | Description |
|
|
127
|
+
|--------|---------|-------------|
|
|
128
|
+
| `app.session.new` | *(none)* | Start a new session (`/new`) |
|
|
129
|
+
| `app.session.tree` | *(none)* | Open session tree navigator (`/tree`) |
|
|
130
|
+
| `app.session.fork` | *(none)* | Fork current session (`/fork`) |
|
|
131
|
+
| `app.session.resume` | *(none)* | Open session resume picker (`/resume`) |
|
|
132
|
+
| `app.session.togglePath` | `ctrl+p` | Toggle path display |
|
|
133
|
+
| `app.session.toggleSort` | `ctrl+s` | Toggle sort mode |
|
|
134
|
+
| `app.session.toggleNamedFilter` | `ctrl+n` | Toggle named-only filter |
|
|
135
|
+
| `app.session.rename` | `ctrl+r` | Rename session |
|
|
136
|
+
| `app.session.delete` | `ctrl+d` | Delete session |
|
|
137
|
+
| `app.session.deleteNoninvasive` | `ctrl+backspace` | Delete session when query is empty |
|
|
138
|
+
|
|
139
|
+
### Models and Thinking
|
|
140
|
+
|
|
141
|
+
| Keybinding id | Default | Description |
|
|
142
|
+
|--------|---------|-------------|
|
|
143
|
+
| `app.model.select` | `ctrl+l` | Open model selector |
|
|
144
|
+
| `app.model.cycleForward` | `ctrl+p` | Cycle to next model |
|
|
145
|
+
| `app.model.cycleBackward` | `shift+ctrl+p` | Cycle to previous model |
|
|
146
|
+
| `app.thinking.cycle` | `shift+tab` | Cycle thinking level |
|
|
147
|
+
| `app.thinking.toggle` | `ctrl+t` | Collapse or expand thinking blocks |
|
|
148
|
+
|
|
149
|
+
### Display and Message Queue
|
|
150
|
+
|
|
151
|
+
| Keybinding id | Default | Description |
|
|
152
|
+
|--------|---------|-------------|
|
|
153
|
+
| `app.tools.expand` | `ctrl+o` | Collapse or expand tool output and hook details |
|
|
154
|
+
| `app.message.copy` | `ctrl+x` | Copy the last assistant message, or the selected entry in `/tree` |
|
|
155
|
+
| `app.message.followUp` | `alt+enter` | Queue follow-up message |
|
|
156
|
+
| `app.message.dequeue` | `alt+up` | Restore queued messages to editor |
|
|
157
|
+
|
|
158
|
+
### Tree Navigation
|
|
159
|
+
|
|
160
|
+
| Keybinding id | Default | Description |
|
|
161
|
+
|--------|---------|-------------|
|
|
162
|
+
| `app.tree.foldOrUp` | `ctrl+left`, `alt+left` | Fold current branch segment, or jump to the previous segment start |
|
|
163
|
+
| `app.tree.unfoldOrDown` | `ctrl+right`, `alt+right` | Unfold current branch segment, or jump to the next segment start or branch end |
|
|
164
|
+
| `app.tree.editLabel` | `shift+l` | Edit the label on the selected tree node |
|
|
165
|
+
| `app.tree.toggleLabelTimestamp` | `shift+t` | Toggle label timestamps in the tree |
|
|
166
|
+
| `app.tree.filter.default` | `ctrl+d` | Set tree filter to default view |
|
|
167
|
+
| `app.tree.filter.noTools` | `ctrl+t` | Toggle tree filter that hides tool results |
|
|
168
|
+
| `app.tree.filter.userOnly` | `ctrl+u` | Toggle tree filter that shows only user messages |
|
|
169
|
+
| `app.tree.filter.labeledOnly` | `ctrl+l` | Toggle tree filter that shows only labeled entries |
|
|
170
|
+
| `app.tree.filter.all` | `ctrl+a` | Toggle tree filter that shows all entries |
|
|
171
|
+
| `app.tree.filter.cycleForward` | `ctrl+o` | Cycle tree filter forward |
|
|
172
|
+
| `app.tree.filter.cycleBackward` | `shift+ctrl+o` | Cycle tree filter backward |
|
|
173
|
+
|
|
174
|
+
### Scoped Models Selector
|
|
175
|
+
|
|
176
|
+
Used inside the scoped models selector (opened via `/scoped-models`).
|
|
177
|
+
|
|
178
|
+
| Keybinding id | Default | Description |
|
|
179
|
+
|--------|---------|-------------|
|
|
180
|
+
| `app.models.save` | `ctrl+s` | Save current model selection to settings |
|
|
181
|
+
| `app.models.enableAll` | `ctrl+a` | Enable all models (or all matching the current search) |
|
|
182
|
+
| `app.models.clearAll` | `ctrl+x` | Clear all models (or all matching the current search) |
|
|
183
|
+
| `app.models.toggleProvider` | `ctrl+p` | Toggle all models for the current provider |
|
|
184
|
+
| `app.models.reorderUp` | `alt+up` | Move the selected model up in the cycle order |
|
|
185
|
+
| `app.models.reorderDown` | `alt+down` | Move the selected model down in the cycle order |
|
|
186
|
+
|
|
187
|
+
## Custom Configuration
|
|
188
|
+
|
|
189
|
+
Create `~/.grip/agent/keybindings.json`:
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{
|
|
193
|
+
"tui.editor.historyPrevious": "ctrl+p",
|
|
194
|
+
"tui.editor.historyNext": "ctrl+n",
|
|
195
|
+
"tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Each action can have a single key or an array of keys. User config overrides defaults.
|
|
200
|
+
|
|
201
|
+
On native Windows, `app.suspend` has no default binding because Windows terminals do not support Unix job control. If you bind it manually, Grip shows a status message instead of suspending. In WSL, the normal Linux `ctrl+z`/`fg` behavior still applies.
|
|
202
|
+
|
|
203
|
+
### Emacs Example
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"tui.editor.historyPrevious": "ctrl+p",
|
|
208
|
+
"tui.editor.historyNext": "ctrl+n",
|
|
209
|
+
"tui.editor.cursorLeft": ["left", "ctrl+b"],
|
|
210
|
+
"tui.editor.cursorRight": ["right", "ctrl+f"],
|
|
211
|
+
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
|
|
212
|
+
"tui.editor.cursorWordRight": ["alt+right", "alt+f"],
|
|
213
|
+
"tui.editor.deleteCharForward": ["delete", "ctrl+d"],
|
|
214
|
+
"tui.editor.deleteCharBackward": ["backspace", "ctrl+h"],
|
|
215
|
+
"tui.input.newLine": ["shift+enter", "ctrl+j"]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Vim Example
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"tui.editor.cursorUp": ["up", "alt+k"],
|
|
224
|
+
"tui.editor.cursorDown": ["down", "alt+j"],
|
|
225
|
+
"tui.editor.cursorLeft": ["left", "alt+h"],
|
|
226
|
+
"tui.editor.cursorRight": ["right", "alt+l"],
|
|
227
|
+
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
|
|
228
|
+
"tui.editor.cursorWordRight": ["alt+right", "alt+w"]
|
|
229
|
+
}
|
|
230
|
+
```
|