@m4ike1/ion-coding-agent 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5747 -0
- package/README.md +738 -0
- package/dist/bun/cli.d.ts +5 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +5 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +36 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/bun/runtime-setup.d.ts +2 -0
- package/dist/bun/runtime-setup.d.ts.map +1 -0
- package/dist/bun/runtime-setup.js +9 -0
- package/dist/bun/runtime-setup.js.map +1 -0
- package/dist/bun/sandbox-env-setup.d.ts +2 -0
- package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
- package/dist/bun/sandbox-env-setup.js +4 -0
- package/dist/bun/sandbox-env-setup.js.map +1 -0
- package/dist/bundle/chunks/anthropic-messages-RPVA4Z4Y.js +6 -0
- package/dist/bundle/chunks/anthropic.js +75 -0
- package/dist/bundle/chunks/azure-openai-responses-AJS3XTKL.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +78 -0
- package/dist/bundle/chunks/chunk-2MOZ6JBC.js +2 -0
- package/dist/bundle/chunks/chunk-3BIJ3AQO.js +12 -0
- package/dist/bundle/chunks/chunk-47K3I3YT.js +6 -0
- package/dist/bundle/chunks/chunk-4BN67GCJ.js +1664 -0
- package/dist/bundle/chunks/chunk-4PN6UIWX.js +2 -0
- package/dist/bundle/chunks/chunk-4TQA6ATT.js +4 -0
- package/dist/bundle/chunks/chunk-5NVSYJOG.js +2 -0
- package/dist/bundle/chunks/chunk-7OJL7DR5.js +2 -0
- package/dist/bundle/chunks/chunk-BEER2HEL.js +2 -0
- package/dist/bundle/chunks/chunk-CQX3HQAT.js +2 -0
- package/dist/bundle/chunks/chunk-FBMFFBV2.js +2 -0
- package/dist/bundle/chunks/chunk-GAZIWLQB.js +2 -0
- package/dist/bundle/chunks/chunk-HFYRAIWC.js +44 -0
- package/dist/bundle/chunks/chunk-IH7HUXWH.js +2 -0
- package/dist/bundle/chunks/chunk-LPP2XRBR.js +11 -0
- package/dist/bundle/chunks/chunk-LUTYILPM.js +25 -0
- package/dist/bundle/chunks/chunk-Q3ZNVFWD.js +42 -0
- package/dist/bundle/chunks/chunk-QNBVCBN3.js +2 -0
- package/dist/bundle/chunks/chunk-SWVWKUIA.js +2 -0
- package/dist/bundle/chunks/chunk-SY4QP6EI.js +2 -0
- package/dist/bundle/chunks/chunk-TVAWBPPS.js +2 -0
- package/dist/bundle/chunks/chunk-WPN6KEON.js +2 -0
- package/dist/bundle/chunks/chunk-WRID246J.js +2 -0
- package/dist/bundle/chunks/github-copilot.js +2 -0
- package/dist/bundle/chunks/google-generative-ai-S7SD5HC7.js +2 -0
- package/dist/bundle/chunks/google-vertex-NUNHA7QM.js +2 -0
- package/dist/bundle/chunks/https-proxy-agent-O2332S4O.js +13 -0
- package/dist/bundle/chunks/image-resize-worker.js +2 -0
- package/dist/bundle/chunks/ion-messages-KTW6MD7U.js +8 -0
- package/dist/bundle/chunks/kimi-coding.js +2 -0
- package/dist/bundle/chunks/lib-D4EQQPRR.js +9 -0
- package/dist/bundle/chunks/mistral-conversations-C7I3G2LA.js +5 -0
- package/dist/bundle/chunks/multipart-parser-PL2BXRDT.js +3 -0
- package/dist/bundle/chunks/node-7OQEATQA.js +2 -0
- package/dist/bundle/chunks/node-QIUI6CIW.js +16 -0
- package/dist/bundle/chunks/openai-codex-responses-2KRULDYR.js +10 -0
- package/dist/bundle/chunks/openai-codex.js +75 -0
- package/dist/bundle/chunks/openai-completions-64KX63FN.js +7 -0
- package/dist/bundle/chunks/openai-responses-QF3PPSTS.js +2 -0
- package/dist/bundle/chunks/openrouter-images-GQVXT3PO.js +2 -0
- package/dist/bundle/chunks/openrouter.js +75 -0
- package/dist/bundle/chunks/radius.js +75 -0
- package/dist/bundle/chunks/src-AZ7LBHGY.js +4 -0
- package/dist/bundle/chunks/xai.js +2 -0
- package/dist/bundle/cli.js +3 -0
- package/dist/bundle/index.js +2 -0
- package/dist/bundle/rpc-entry.js +3 -0
- package/dist/cli/args.d.ts +61 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +440 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/auth-check.d.ts +19 -0
- package/dist/cli/auth-check.d.ts.map +1 -0
- package/dist/cli/auth-check.js +50 -0
- package/dist/cli/auth-check.js.map +1 -0
- package/dist/cli/auth-command.d.ts +24 -0
- package/dist/cli/auth-command.d.ts.map +1 -0
- package/dist/cli/auth-command.js +103 -0
- package/dist/cli/auth-command.js.map +1 -0
- package/dist/cli/config-selector.d.ts +16 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +32 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/credential-print.d.ts +13 -0
- package/dist/cli/credential-print.d.ts.map +1 -0
- package/dist/cli/credential-print.js +76 -0
- package/dist/cli/credential-print.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 +71 -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/project-trust.d.ts +10 -0
- package/dist/cli/project-trust.d.ts.map +1 -0
- package/dist/cli/project-trust.js +48 -0
- package/dist/cli/project-trust.js.map +1 -0
- package/dist/cli/session-picker.d.ts +10 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +36 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli/setup.d.ts +2 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +12 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +20 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +185 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +122 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +609 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +119 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +317 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +86 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +134 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +725 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2968 -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 +72 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +426 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/cache-stats.d.ts +49 -0
- package/dist/core/cache-stats.d.ts.map +1 -0
- package/dist/core/cache-stats.js +101 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +98 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +251 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +145 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +690 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +38 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +142 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +4 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +11 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -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/experimental.d.ts +2 -0
- package/dist/core/experimental.d.ts.map +1 -0
- package/dist/core/experimental.js +4 -0
- package/dist/core/experimental.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 +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +226 -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 +1871 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -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/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +23 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +655 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +178 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +1011 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1375 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +54 -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 +41 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +64 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +338 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +98 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ion-manifest.d.ts +8 -0
- package/dist/core/ion-manifest.d.ts.map +1 -0
- package/dist/core/ion-manifest.js +26 -0
- package/dist/core/ion-manifest.js.map +1 -0
- package/dist/core/keybindings.d.ts +475 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +321 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +123 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-config.d.ts +591 -0
- package/dist/core/model-config.d.ts.map +1 -0
- package/dist/core/model-config.js +259 -0
- package/dist/core/model-config.js.map +1 -0
- package/dist/core/model-registry.d.ts +49 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +115 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +124 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +591 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/model-runtime.d.ts +101 -0
- package/dist/core/model-runtime.d.ts.map +1 -0
- package/dist/core/model-runtime.js +606 -0
- package/dist/core/model-runtime.js.map +1 -0
- package/dist/core/models-store.d.ts +22 -0
- package/dist/core/models-store.d.ts.map +1 -0
- package/dist/core/models-store.js +115 -0
- package/dist/core/models-store.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 +216 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +2207 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/project-trust.d.ts +15 -0
- package/dist/core/project-trust.d.ts.map +1 -0
- package/dist/core/project-trust.js +59 -0
- package/dist/core/project-trust.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +54 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +236 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-attribution.d.ts +4 -0
- package/dist/core/provider-attribution.d.ts.map +1 -0
- package/dist/core/provider-attribution.js +72 -0
- package/dist/core/provider-attribution.js.map +1 -0
- package/dist/core/provider-composer.d.ts +58 -0
- package/dist/core/provider-composer.d.ts.map +1 -0
- package/dist/core/provider-composer.js +402 -0
- package/dist/core/provider-composer.js.map +1 -0
- package/dist/core/radius.d.ts +2 -0
- package/dist/core/radius.d.ts.map +1 -0
- package/dist/core/radius.js +2 -0
- package/dist/core/radius.js.map +1 -0
- package/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -0
- package/dist/core/remote-catalog-provider.js +137 -0
- package/dist/core/remote-catalog-provider.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +247 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +221 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +875 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/runtime-credentials.d.ts +15 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -0
- package/dist/core/runtime-credentials.js +39 -0
- package/dist/core/runtime-credentials.js.map +1 -0
- package/dist/core/sdk.d.ts +108 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +285 -0
- package/dist/core/sdk.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/session-export.d.ts +4 -0
- package/dist/core/session-export.d.ts.map +1 -0
- package/dist/core/session-export.js +32 -0
- package/dist/core/session-export.js.map +1 -0
- package/dist/core/session-index.d.ts +67 -0
- package/dist/core/session-index.d.ts.map +1 -0
- package/dist/core/session-index.js +376 -0
- package/dist/core/session-index.js.map +1 -0
- package/dist/core/session-manager.d.ts +376 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1587 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/session-naming-runtime.d.ts +153 -0
- package/dist/core/session-naming-runtime.d.ts.map +1 -0
- package/dist/core/session-naming-runtime.js +336 -0
- package/dist/core/session-naming-runtime.js.map +1 -0
- package/dist/core/settings-diagnostics.d.ts +9 -0
- package/dist/core/settings-diagnostics.d.ts.map +1 -0
- package/dist/core/settings-diagnostics.js +21 -0
- package/dist/core/settings-diagnostics.js.map +1 -0
- package/dist/core/settings-manager.d.ts +375 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +1110 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +412 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +17 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +33 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +118 -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 +87 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +295 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +101 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +421 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +44 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +147 -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 +52 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +42 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +251 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +53 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +463 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +49 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +147 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +48 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +224 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +52 -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 +10 -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/powershell.d.ts +16 -0
- package/dist/core/tools/powershell.d.ts.map +1 -0
- package/dist/core/tools/powershell.js +39 -0
- package/dist/core/tools/powershell.js.map +1 -0
- package/dist/core/tools/read.d.ts +39 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +165 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +65 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/renderers/bash.d.ts +12 -0
- package/dist/core/tools/renderers/bash.d.ts.map +1 -0
- package/dist/core/tools/renderers/bash.js +130 -0
- package/dist/core/tools/renderers/bash.js.map +1 -0
- package/dist/core/tools/renderers/edit.d.ts +23 -0
- package/dist/core/tools/renderers/edit.d.ts.map +1 -0
- package/dist/core/tools/renderers/edit.js +167 -0
- package/dist/core/tools/renderers/edit.js.map +1 -0
- package/dist/core/tools/renderers/find.d.ts +10 -0
- package/dist/core/tools/renderers/find.d.ts.map +1 -0
- package/dist/core/tools/renderers/find.js +64 -0
- package/dist/core/tools/renderers/find.js.map +1 -0
- package/dist/core/tools/renderers/grep.d.ts +10 -0
- package/dist/core/tools/renderers/grep.d.ts.map +1 -0
- package/dist/core/tools/renderers/grep.js +69 -0
- package/dist/core/tools/renderers/grep.js.map +1 -0
- package/dist/core/tools/renderers/index.d.ts +29 -0
- package/dist/core/tools/renderers/index.d.ts.map +1 -0
- package/dist/core/tools/renderers/index.js +50 -0
- package/dist/core/tools/renderers/index.js.map +1 -0
- package/dist/core/tools/renderers/ls.d.ts +10 -0
- package/dist/core/tools/renderers/ls.d.ts.map +1 -0
- package/dist/core/tools/renderers/ls.js +66 -0
- package/dist/core/tools/renderers/ls.js.map +1 -0
- package/dist/core/tools/renderers/read.d.ts +11 -0
- package/dist/core/tools/renderers/read.d.ts.map +1 -0
- package/dist/core/tools/renderers/read.js +129 -0
- package/dist/core/tools/renderers/read.js.map +1 -0
- package/dist/core/tools/renderers/webfetch.d.ts +11 -0
- package/dist/core/tools/renderers/webfetch.d.ts.map +1 -0
- package/dist/core/tools/renderers/webfetch.js +89 -0
- package/dist/core/tools/renderers/webfetch.js.map +1 -0
- package/dist/core/tools/renderers/write.d.ts +10 -0
- package/dist/core/tools/renderers/write.d.ts.map +1 -0
- package/dist/core/tools/renderers/write.js +153 -0
- package/dist/core/tools/renderers/write.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 +36 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -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/webextract.d.ts +36 -0
- package/dist/core/tools/webextract.d.ts.map +1 -0
- package/dist/core/tools/webextract.js +130 -0
- package/dist/core/tools/webextract.js.map +1 -0
- package/dist/core/tools/webfetch.d.ts +104 -0
- package/dist/core/tools/webfetch.d.ts.map +1 -0
- package/dist/core/tools/webfetch.js +231 -0
- package/dist/core/tools/webfetch.js.map +1 -0
- package/dist/core/tools/write.d.ts +30 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +61 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/core/trust-manager.d.ts +36 -0
- package/dist/core/trust-manager.d.ts.map +1 -0
- package/dist/core/trust-manager.js +203 -0
- package/dist/core/trust-manager.js.map +1 -0
- package/dist/core/usage-totals.d.ts +19 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +52 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/core/webfetch/backend-exa.d.ts +65 -0
- package/dist/core/webfetch/backend-exa.d.ts.map +1 -0
- package/dist/core/webfetch/backend-exa.js +282 -0
- package/dist/core/webfetch/backend-exa.js.map +1 -0
- package/dist/core/webfetch/backend-firecrawl.d.ts +59 -0
- package/dist/core/webfetch/backend-firecrawl.d.ts.map +1 -0
- package/dist/core/webfetch/backend-firecrawl.js +339 -0
- package/dist/core/webfetch/backend-firecrawl.js.map +1 -0
- package/dist/core/webfetch/backend-undici.d.ts +21 -0
- package/dist/core/webfetch/backend-undici.d.ts.map +1 -0
- package/dist/core/webfetch/backend-undici.js +109 -0
- package/dist/core/webfetch/backend-undici.js.map +1 -0
- package/dist/core/webfetch/backend.d.ts +45 -0
- package/dist/core/webfetch/backend.d.ts.map +1 -0
- package/dist/core/webfetch/backend.js +9 -0
- package/dist/core/webfetch/backend.js.map +1 -0
- package/dist/core/webfetch/doc-store.d.ts +45 -0
- package/dist/core/webfetch/doc-store.d.ts.map +1 -0
- package/dist/core/webfetch/doc-store.js +57 -0
- package/dist/core/webfetch/doc-store.js.map +1 -0
- package/dist/core/webfetch/guardrails.d.ts +75 -0
- package/dist/core/webfetch/guardrails.d.ts.map +1 -0
- package/dist/core/webfetch/guardrails.js +195 -0
- package/dist/core/webfetch/guardrails.js.map +1 -0
- package/dist/core/webfetch/robots.d.ts +46 -0
- package/dist/core/webfetch/robots.d.ts.map +1 -0
- package/dist/core/webfetch/robots.js +153 -0
- package/dist/core/webfetch/robots.js.map +1 -0
- package/dist/core/webfetch/search-intent.d.ts +59 -0
- package/dist/core/webfetch/search-intent.d.ts.map +1 -0
- package/dist/core/webfetch/search-intent.js +89 -0
- package/dist/core/webfetch/search-intent.js.map +1 -0
- package/dist/core/webfetch/search-tags.d.ts +23 -0
- package/dist/core/webfetch/search-tags.d.ts.map +1 -0
- package/dist/core/webfetch/search-tags.js +118 -0
- package/dist/core/webfetch/search-tags.js.map +1 -0
- package/dist/env-compat.d.ts +2 -0
- package/dist/env-compat.d.ts.map +1 -0
- package/dist/env-compat.js +17 -0
- package/dist/env-compat.js.map +1 -0
- package/dist/extensions/cue/autocomplete.d.ts +126 -0
- package/dist/extensions/cue/autocomplete.d.ts.map +1 -0
- package/dist/extensions/cue/autocomplete.js +744 -0
- package/dist/extensions/cue/autocomplete.js.map +1 -0
- package/dist/extensions/cue/index.d.ts +3 -0
- package/dist/extensions/cue/index.d.ts.map +1 -0
- package/dist/extensions/cue/index.js +341 -0
- package/dist/extensions/cue/index.js.map +1 -0
- package/dist/extensions/index.d.ts +13 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +18 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/llama/client.d.ts +67 -0
- package/dist/extensions/llama/client.d.ts.map +1 -0
- package/dist/extensions/llama/client.js +309 -0
- package/dist/extensions/llama/client.js.map +1 -0
- package/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/llama/huggingface.d.ts.map +1 -0
- package/dist/extensions/llama/huggingface.js +141 -0
- package/dist/extensions/llama/huggingface.js.map +1 -0
- package/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/llama/index.d.ts.map +1 -0
- package/dist/extensions/llama/index.js +219 -0
- package/dist/extensions/llama/index.js.map +1 -0
- package/dist/extensions/llama/provider.d.ts +12 -0
- package/dist/extensions/llama/provider.d.ts.map +1 -0
- package/dist/extensions/llama/provider.js +146 -0
- package/dist/extensions/llama/provider.js.map +1 -0
- package/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/llama/ui.d.ts.map +1 -0
- package/dist/extensions/llama/ui.js +416 -0
- package/dist/extensions/llama/ui.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +17 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +820 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +288 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +10 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/chat-viewport.d.ts +20 -0
- package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
- package/dist/modes/interactive/chat-viewport.js +28 -0
- package/dist/modes/interactive/chat-viewport.js.map +1 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +333 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +26 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +171 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +175 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -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 +102 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +770 -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 +30 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +115 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-entry.js +52 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +22 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +87 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +140 -0
- package/dist/modes/interactive/components/daxnuts.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 +133 -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/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +40 -0
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +21 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +98 -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/first-time-setup.d.ts +25 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +103 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +32 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +230 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +34 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +35 -0
- package/dist/modes/interactive/components/index.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 +52 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +188 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -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 +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +75 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +60 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +361 -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 +163 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +326 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +98 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +891 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +98 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +745 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-submenu.js +165 -0
- package/dist/modes/interactive/components/settings-submenu.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/status-indicator.d.ts +30 -0
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
- package/dist/modes/interactive/components/status-indicator.js +67 -0
- package/dist/modes/interactive/components/status-indicator.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 +23 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +109 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +80 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +328 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +94 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1245 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/trust-selector.js +91 -0
- package/dist/modes/interactive/components/trust-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/external-editor.d.ts +12 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -0
- package/dist/modes/interactive/external-editor.js +38 -0
- package/dist/modes/interactive/external-editor.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +471 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +5735 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.js +34 -0
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
- package/dist/modes/interactive/model-search.d.ts +12 -0
- package/dist/modes/interactive/model-search.d.ts.map +1 -0
- package/dist/modes/interactive/model-search.js +15 -0
- package/dist/modes/interactive/model-search.js.map +1 -0
- package/dist/modes/interactive/session-share.d.ts +16 -0
- package/dist/modes/interactive/session-share.d.ts.map +1 -0
- package/dist/modes/interactive/session-share.js +184 -0
- package/dist/modes/interactive/session-share.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +91 -0
- package/dist/modes/interactive/theme/light.json +90 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +41 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.js +130 -0
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
- package/dist/modes/interactive/theme/theme-json.d.ts +84 -0
- package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-json.js +130 -0
- package/dist/modes/interactive/theme/theme-json.js.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.json +356 -0
- package/dist/modes/interactive/theme/theme.d.ts +131 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +991 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/interactive/tui-renderer.d.ts +21 -0
- package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
- package/dist/modes/interactive/tui-renderer.js +66 -0
- package/dist/modes/interactive/tui-renderer.js.map +1 -0
- package/dist/modes/json-event.d.ts +34 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +29 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -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 +254 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +495 -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 +657 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +469 -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 +9 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +961 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/rpc-entry.d.ts +3 -0
- package/dist/rpc-entry.d.ts.map +1 -0
- package/dist/rpc-entry.js +12 -0
- package/dist/rpc-entry.js.map +1 -0
- package/dist/utils/abort.d.ts +5 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +48 -0
- package/dist/utils/abort.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 +52 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +22 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +165 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +18 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +106 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-command.d.ts +7 -0
- package/dist/utils/clipboard-command.d.ts.map +1 -0
- package/dist/utils/clipboard-command.js +45 -0
- package/dist/utils/clipboard-command.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +228 -0
- package/dist/utils/clipboard-image.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 +84 -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/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +157 -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 +27 -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 +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +195 -0
- package/dist/utils/git.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 +10 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +45 -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 +124 -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 +16 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +97 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/ion-user-agent.d.ts +2 -0
- package/dist/utils/ion-user-agent.d.ts.map +1 -0
- package/dist/utils/ion-user-agent.js +5 -0
- package/dist/utils/ion-user-agent.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/management-http.d.ts +25 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +54 -0
- package/dist/utils/management-http.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 +34 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +114 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/shell.d.ts +34 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +216 -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 +13 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +177 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/text.d.ts +8 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +9 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/tool-result-images.d.ts +19 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +45 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +19 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +382 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +19 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +79 -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/browser-extension.md +108 -0
- package/docs/compaction.md +444 -0
- package/docs/containerization.md +156 -0
- package/docs/custom-provider.md +777 -0
- package/docs/development.md +90 -0
- package/docs/docs.json +164 -0
- package/docs/environment-variables.md +101 -0
- package/docs/extensions.md +3033 -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 +85 -0
- package/docs/json.md +98 -0
- package/docs/keybindings.md +239 -0
- package/docs/llama-cpp.md +101 -0
- package/docs/models.md +574 -0
- package/docs/packages.md +228 -0
- package/docs/prompt-templates.md +96 -0
- package/docs/providers.md +321 -0
- package/docs/quickstart.md +168 -0
- package/docs/rpc.md +1618 -0
- package/docs/sdk.md +1226 -0
- package/docs/security.md +59 -0
- package/docs/session-format.md +450 -0
- package/docs/sessions.md +145 -0
- package/docs/settings.md +408 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +241 -0
- package/docs/terminal-setup.md +192 -0
- package/docs/termux.md +126 -0
- package/docs/themes.md +322 -0
- package/docs/tmux.md +63 -0
- package/docs/tui.md +961 -0
- package/docs/usage.md +327 -0
- package/docs/webfetch.md +119 -0
- package/docs/windows.md +39 -0
- package/examples/README.md +28 -0
- package/examples/extensions/README.md +213 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +117 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +611 -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 +405 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -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 +132 -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 +55 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +81 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/entry-renderer.ts +41 -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 +115 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/gondolin/index.ts +531 -0
- package/examples/extensions/gondolin/package-lock.json +185 -0
- package/examples/extensions/gondolin/package.json +19 -0
- package/examples/extensions/handoff.ts +190 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform-streaming.ts +39 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/kimi-deferred-tools.ts +61 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +57 -0
- package/examples/extensions/overlay-qa-tests.ts +1450 -0
- package/examples/extensions/overlay-test.ts +153 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +66 -0
- package/examples/extensions/plan-mode/index.ts +390 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +436 -0
- package/examples/extensions/project-trust.ts +64 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +118 -0
- package/examples/extensions/question.ts +278 -0
- package/examples/extensions/questionnaire.ts +440 -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 +321 -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 +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +177 -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 +157 -0
- package/examples/extensions/subagent/index.ts +1038 -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 +199 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +146 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -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/plugins/ion-example-plugin/README.md +38 -0
- package/examples/plugins/ion-example-plugin/package.json +10 -0
- package/examples/plugins/ion-example-plugin/src/contract.ts +13 -0
- package/examples/plugins/ion-example-plugin/src/session.ts +23 -0
- package/examples/plugins/ion-example-plugin/src/tui.ts +31 -0
- package/examples/rpc-extension-ui.ts +641 -0
- package/examples/sdk/01-minimal.ts +26 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +70 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +48 -0
- package/examples/sdk/06-extensions.ts +94 -0
- package/examples/sdk/07-context-files.ts +42 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +52 -0
- package/examples/sdk/12-full-control.ts +74 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +140 -0
- package/npm-shrinkwrap.json +1912 -0
- package/package.json +108 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Naming Runtime — a small, isolated harness-native mini runtime that
|
|
3
|
+
* generates exactly one session name per session from the first eligible user
|
|
4
|
+
* prompt, then permanently steps down.
|
|
5
|
+
*
|
|
6
|
+
* Architecture:
|
|
7
|
+
*
|
|
8
|
+
* HARNESS
|
|
9
|
+
* │
|
|
10
|
+
* ┌──────────┴───────────┐
|
|
11
|
+
* │ │
|
|
12
|
+
* Session Naming Runtime Main Agent
|
|
13
|
+
* │ │
|
|
14
|
+
* Minimal Context Full Context
|
|
15
|
+
* Minimal Instructions System Prompt
|
|
16
|
+
* Same Active Model Same Active Model
|
|
17
|
+
* No Tools Tools
|
|
18
|
+
* One Job Actual Task
|
|
19
|
+
* │
|
|
20
|
+
* ▼
|
|
21
|
+
* Session Name
|
|
22
|
+
* │
|
|
23
|
+
* ▼
|
|
24
|
+
* DISABLED
|
|
25
|
+
*
|
|
26
|
+
* The runtime never sees the main agent's system prompt, conversation history,
|
|
27
|
+
* tools, or permissions. Naming runs through {@link completeSummarization} —
|
|
28
|
+
* the same choke point as compaction summaries — with a purpose-built naming
|
|
29
|
+
* context, `toolChoice: "none"`, and no cache writes, so it costs a fraction
|
|
30
|
+
* of a normal agent turn.
|
|
31
|
+
*
|
|
32
|
+
* Lifecycle: pending → waiting → naming → named → disabled.
|
|
33
|
+
* - pending: constructed for a brand-new session, not yet accepting prompts.
|
|
34
|
+
* - waiting: ready; the first eligible prompt whose model execution actually
|
|
35
|
+
* starts becomes the naming source. Prompts aborted before model execution
|
|
36
|
+
* starts are ignored and leave the runtime waiting.
|
|
37
|
+
* - naming: one bounded naming operation in flight (model attempts +
|
|
38
|
+
* deterministic fallback).
|
|
39
|
+
* - named: a name was installed.
|
|
40
|
+
* - disabled: terminal. Manual naming (`:name`) also lands here immediately.
|
|
41
|
+
*/
|
|
42
|
+
import { contentText } from "@m4ike1/ion-ai";
|
|
43
|
+
import { completeSummarization } from "./compaction/compaction.js";
|
|
44
|
+
export const SESSION_NAMING_MAX_ATTEMPTS = 3;
|
|
45
|
+
/** Model candidates may not exceed 6 words. */
|
|
46
|
+
export const SESSION_NAMING_MAX_WORDS = 6;
|
|
47
|
+
/** Model candidates may not exceed 60 characters. */
|
|
48
|
+
export const SESSION_NAMING_MAX_CHARS = 60;
|
|
49
|
+
/** Only this much of the source prompt is sent to the naming model. */
|
|
50
|
+
export const SESSION_NAMING_MAX_SOURCE_CHARS = 2000;
|
|
51
|
+
/** Small response budget — a title needs a handful of tokens. */
|
|
52
|
+
const SESSION_NAMING_MAX_TOKENS = 64;
|
|
53
|
+
const SESSION_NAMING_SYSTEM_PROMPT = `You are a session-name generator. Generate a concise title describing the user's primary intent or topic, not a copy of their words. Prefer 2-5 words, at most 6. Reply with ONLY the title: no quotes, no punctuation, no sentences, no questions, no explanation.`;
|
|
54
|
+
/** Titles that carry no useful information. Accepted only via explicit manual naming. */
|
|
55
|
+
const GENERIC_TITLES = new Set([
|
|
56
|
+
"chat",
|
|
57
|
+
"session",
|
|
58
|
+
"new session",
|
|
59
|
+
"new chat",
|
|
60
|
+
"untitled",
|
|
61
|
+
"question",
|
|
62
|
+
"help",
|
|
63
|
+
"help me",
|
|
64
|
+
"research",
|
|
65
|
+
"work",
|
|
66
|
+
"conversation",
|
|
67
|
+
]);
|
|
68
|
+
/** Normalize a title for comparison: case-insensitive with collapsed whitespace. */
|
|
69
|
+
export function normalizeSessionNameForComparison(name) {
|
|
70
|
+
return name.trim().toLowerCase().replace(/\s+/g, " ");
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Whether raw input is eligible as a naming source. Commands (`:`/`/`) are
|
|
74
|
+
* harness metadata, not session content; empty input names nothing.
|
|
75
|
+
*/
|
|
76
|
+
export function isNamingEligiblePrompt(text) {
|
|
77
|
+
const firstLine = text.split("\n")[0]?.trim() ?? "";
|
|
78
|
+
if (!firstLine)
|
|
79
|
+
return false;
|
|
80
|
+
if (firstLine.startsWith(":") || firstLine.startsWith("/"))
|
|
81
|
+
return false;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Normalize a raw model candidate: trim, collapse whitespace, strip wrapping
|
|
86
|
+
* quotes, drop trailing sentence punctuation.
|
|
87
|
+
*/
|
|
88
|
+
export function normalizeTitleCandidate(raw) {
|
|
89
|
+
let name = raw.trim().replace(/\s+/g, " ");
|
|
90
|
+
for (let i = 0; i < 2; i++) {
|
|
91
|
+
name = name.replace(/[.!?;:]+$/, "").trim();
|
|
92
|
+
const quoted = /^["'](.*)["']$/.exec(name);
|
|
93
|
+
if (!quoted)
|
|
94
|
+
break;
|
|
95
|
+
name = (quoted[1] ?? "").trim();
|
|
96
|
+
}
|
|
97
|
+
name = name.replace(/[.!?;:]+$/, "").trim();
|
|
98
|
+
return name;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Harness-side validation for a normalized model candidate. `existing` holds
|
|
102
|
+
* comparison-normalized names. Generic titles are rejected here — they remain
|
|
103
|
+
* acceptable when the user supplies them explicitly via manual naming, which
|
|
104
|
+
* bypasses the runtime entirely.
|
|
105
|
+
*/
|
|
106
|
+
export function validateTitleCandidate(name, existing) {
|
|
107
|
+
if (!name)
|
|
108
|
+
return { valid: false, collision: false, feedback: "empty title" };
|
|
109
|
+
if (name.length > SESSION_NAMING_MAX_CHARS) {
|
|
110
|
+
return {
|
|
111
|
+
valid: false,
|
|
112
|
+
collision: false,
|
|
113
|
+
feedback: `over ${SESSION_NAMING_MAX_CHARS} characters`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const words = name.split(" ").filter(Boolean);
|
|
117
|
+
if (words.length > SESSION_NAMING_MAX_WORDS) {
|
|
118
|
+
return {
|
|
119
|
+
valid: false,
|
|
120
|
+
collision: false,
|
|
121
|
+
feedback: `over ${SESSION_NAMING_MAX_WORDS} words`,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (/[\r\n]/.test(name) || /[{}[\]<>]/.test(name)) {
|
|
125
|
+
return { valid: false, collision: false, feedback: "forbidden characters" };
|
|
126
|
+
}
|
|
127
|
+
if (GENERIC_TITLES.has(normalizeSessionNameForComparison(name))) {
|
|
128
|
+
return { valid: false, collision: false, feedback: "too generic" };
|
|
129
|
+
}
|
|
130
|
+
if (existing.has(normalizeSessionNameForComparison(name))) {
|
|
131
|
+
return { valid: false, collision: true, feedback: "already in use" };
|
|
132
|
+
}
|
|
133
|
+
return { valid: true };
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Deterministic fallback title derived from the source prompt: first line,
|
|
137
|
+
* markdown stripped, truncated. Returns undefined when nothing usable remains.
|
|
138
|
+
*/
|
|
139
|
+
export function deriveFallbackTitle(text) {
|
|
140
|
+
const firstLine = text.split("\n")[0]?.trim() ?? "";
|
|
141
|
+
if (!firstLine || firstLine.startsWith(":") || firstLine.startsWith("/"))
|
|
142
|
+
return undefined;
|
|
143
|
+
const cleaned = normalizeTitleCandidate(firstLine
|
|
144
|
+
.replace(/^#+\s*/, "")
|
|
145
|
+
.replace(/[*_`~]/g, "")
|
|
146
|
+
.replace(/^\[.*?\]\(.*?\)$/, ""));
|
|
147
|
+
if (!cleaned)
|
|
148
|
+
return undefined;
|
|
149
|
+
return cleaned.length > 50 ? `${cleaned.slice(0, 47)}...` : cleaned;
|
|
150
|
+
}
|
|
151
|
+
/** Append ` #2`, ` #3`, … until the name no longer collides. */
|
|
152
|
+
export function uniquifySessionName(base, existing) {
|
|
153
|
+
if (!existing.has(normalizeSessionNameForComparison(base)))
|
|
154
|
+
return base;
|
|
155
|
+
let counter = 2;
|
|
156
|
+
while (existing.has(normalizeSessionNameForComparison(`${base} #${counter}`))) {
|
|
157
|
+
counter++;
|
|
158
|
+
if (counter > 9999)
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
return `${base} #${counter}`;
|
|
162
|
+
}
|
|
163
|
+
export class SessionNamingRuntime {
|
|
164
|
+
state = "pending";
|
|
165
|
+
pendingPrompt;
|
|
166
|
+
epoch = 0;
|
|
167
|
+
namingAbort;
|
|
168
|
+
maxAttempts;
|
|
169
|
+
deps;
|
|
170
|
+
constructor(deps) {
|
|
171
|
+
this.deps = deps;
|
|
172
|
+
this.maxAttempts = deps.maxAttempts ?? SESSION_NAMING_MAX_ATTEMPTS;
|
|
173
|
+
}
|
|
174
|
+
getState() {
|
|
175
|
+
return this.state;
|
|
176
|
+
}
|
|
177
|
+
/** Mark the runtime ready to accept the first eligible prompt. */
|
|
178
|
+
start() {
|
|
179
|
+
if (this.state === "pending")
|
|
180
|
+
this.state = "waiting";
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Permanently step down. Abandons any in-flight naming operation (its late
|
|
184
|
+
* result is discarded via the epoch check) and releases candidate state.
|
|
185
|
+
* Called after successful naming and on explicit manual naming.
|
|
186
|
+
*/
|
|
187
|
+
disable() {
|
|
188
|
+
this.epoch++;
|
|
189
|
+
this.namingAbort?.abort();
|
|
190
|
+
this.namingAbort = undefined;
|
|
191
|
+
this.pendingPrompt = undefined;
|
|
192
|
+
this.state = "disabled";
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Record a submitted user prompt. Only the waiting state accepts one, and a
|
|
196
|
+
* newer submission replaces any pending candidate — prompts are never
|
|
197
|
+
* combined and aborted-prompt residue is never retained.
|
|
198
|
+
*/
|
|
199
|
+
notePromptSubmitted(text) {
|
|
200
|
+
if (this.state !== "waiting")
|
|
201
|
+
return;
|
|
202
|
+
if (!isNamingEligiblePrompt(text))
|
|
203
|
+
return;
|
|
204
|
+
this.pendingPrompt = text;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Record that the model's execution actually started for the current run
|
|
208
|
+
* (first assistant stream event). The pending candidate becomes the naming
|
|
209
|
+
* source at this point and the one naming operation fires immediately, so
|
|
210
|
+
* it runs in the background while the main agent works. Ignored unless a
|
|
211
|
+
* candidate is pending.
|
|
212
|
+
*/
|
|
213
|
+
notifyModelExecutionStarted() {
|
|
214
|
+
if (this.state !== "waiting" || this.pendingPrompt === undefined)
|
|
215
|
+
return;
|
|
216
|
+
const candidate = this.pendingPrompt;
|
|
217
|
+
this.pendingPrompt = undefined;
|
|
218
|
+
this.state = "naming";
|
|
219
|
+
void this.runNaming(candidate);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Settle the pending prompt after its run completes. Only clears a
|
|
223
|
+
* candidate whose model execution never started (e.g. aborted beforehand)
|
|
224
|
+
* so no stale text is retained; the naming decision itself already
|
|
225
|
+
* happened at execution start.
|
|
226
|
+
*/
|
|
227
|
+
notePromptSettled() {
|
|
228
|
+
if (this.state !== "waiting")
|
|
229
|
+
return;
|
|
230
|
+
this.pendingPrompt = undefined;
|
|
231
|
+
}
|
|
232
|
+
install(name) {
|
|
233
|
+
this.state = "named";
|
|
234
|
+
try {
|
|
235
|
+
this.deps.installName(name);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// Naming must never degrade the main session.
|
|
239
|
+
}
|
|
240
|
+
this.pendingPrompt = undefined;
|
|
241
|
+
this.namingAbort = undefined;
|
|
242
|
+
this.state = "disabled";
|
|
243
|
+
}
|
|
244
|
+
async runNaming(candidatePrompt) {
|
|
245
|
+
const epoch = this.epoch;
|
|
246
|
+
const active = () => this.state === "naming" && this.epoch === epoch;
|
|
247
|
+
let existing;
|
|
248
|
+
try {
|
|
249
|
+
existing = new Set((await this.deps.listExistingNames()).map(normalizeSessionNameForComparison));
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
existing = new Set();
|
|
253
|
+
}
|
|
254
|
+
const avoid = [];
|
|
255
|
+
for (let attempt = 1; attempt <= this.maxAttempts; attempt++) {
|
|
256
|
+
let raw;
|
|
257
|
+
try {
|
|
258
|
+
if (!active())
|
|
259
|
+
return;
|
|
260
|
+
const model = this.deps.getModel();
|
|
261
|
+
if (!model)
|
|
262
|
+
break;
|
|
263
|
+
const auth = await this.deps.getRequestAuth(model);
|
|
264
|
+
if (!active())
|
|
265
|
+
return;
|
|
266
|
+
raw = await this.generateCandidate(model, auth, candidatePrompt, avoid);
|
|
267
|
+
if (!active())
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
if (raw === undefined)
|
|
274
|
+
break;
|
|
275
|
+
const normalized = normalizeTitleCandidate(raw);
|
|
276
|
+
const validation = validateTitleCandidate(normalized, existing);
|
|
277
|
+
if (validation.valid) {
|
|
278
|
+
this.install(normalized);
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
avoid.push(validation.collision
|
|
282
|
+
? `The title "${normalized}" is already in use. Generate a different title for the same subject — prefer semantic rephrasing or a distinctive qualifier.`
|
|
283
|
+
: `The suggestion "${normalized}" was rejected (${validation.feedback}). Follow the constraints exactly.`);
|
|
284
|
+
}
|
|
285
|
+
if (!active())
|
|
286
|
+
return;
|
|
287
|
+
const fallback = deriveFallbackTitle(candidatePrompt);
|
|
288
|
+
if (fallback === undefined) {
|
|
289
|
+
// Nothing usable to name from — leave the session unnamed.
|
|
290
|
+
this.state = "named";
|
|
291
|
+
this.state = "disabled";
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
this.install(uniquifySessionName(fallback, existing));
|
|
295
|
+
}
|
|
296
|
+
async generateCandidate(model, auth, candidatePrompt, avoid) {
|
|
297
|
+
const source = candidatePrompt.length > SESSION_NAMING_MAX_SOURCE_CHARS
|
|
298
|
+
? `${candidatePrompt.slice(0, SESSION_NAMING_MAX_SOURCE_CHARS)}…`
|
|
299
|
+
: candidatePrompt;
|
|
300
|
+
let userText = `Generate a concise session title for the following user request. Reply with ONLY the title.\n\n<USER PROMPT>\n${source}\n</USER PROMPT>`;
|
|
301
|
+
if (avoid.length > 0) {
|
|
302
|
+
userText += `\n\nConstraints from previous attempts:\n- ${avoid.join("\n- ")}`;
|
|
303
|
+
}
|
|
304
|
+
const context = {
|
|
305
|
+
systemPrompt: SESSION_NAMING_SYSTEM_PROMPT,
|
|
306
|
+
messages: [
|
|
307
|
+
{
|
|
308
|
+
role: "user",
|
|
309
|
+
content: [{ type: "text", text: userText }],
|
|
310
|
+
timestamp: Date.now(),
|
|
311
|
+
},
|
|
312
|
+
],
|
|
313
|
+
};
|
|
314
|
+
this.namingAbort = new AbortController();
|
|
315
|
+
let response;
|
|
316
|
+
try {
|
|
317
|
+
response = await completeSummarization(model, context, {
|
|
318
|
+
apiKey: auth.apiKey,
|
|
319
|
+
headers: auth.headers,
|
|
320
|
+
env: auth.env,
|
|
321
|
+
signal: this.namingAbort.signal,
|
|
322
|
+
maxTokens: SESSION_NAMING_MAX_TOKENS,
|
|
323
|
+
}, this.deps.streamFunction, this.deps.getRetryPolicy?.());
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
return undefined;
|
|
327
|
+
}
|
|
328
|
+
if (response.stopReason !== "stop")
|
|
329
|
+
return undefined;
|
|
330
|
+
if (response.content.some((block) => block.type === "toolCall"))
|
|
331
|
+
return undefined;
|
|
332
|
+
const text = contentText(response.content, "").trim();
|
|
333
|
+
return text || undefined;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=session-naming-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-naming-runtime.js","sourceRoot":"","sources":["../../src/core/session-naming-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Session Naming Runtime — a small, isolated harness-native mini runtime that\n * generates exactly one session name per session from the first eligible user\n * prompt, then permanently steps down.\n *\n * Architecture:\n *\n * HARNESS\n * │\n * ┌──────────┴───────────┐\n * │ │\n * Session Naming Runtime Main Agent\n * │ │\n * Minimal Context Full Context\n * Minimal Instructions System Prompt\n * Same Active Model Same Active Model\n * No Tools Tools\n * One Job Actual Task\n * │\n * ▼\n * Session Name\n * │\n * ▼\n * DISABLED\n *\n * The runtime never sees the main agent's system prompt, conversation history,\n * tools, or permissions. Naming runs through {@link completeSummarization} —\n * the same choke point as compaction summaries — with a purpose-built naming\n * context, `toolChoice: \"none\"`, and no cache writes, so it costs a fraction\n * of a normal agent turn.\n *\n * Lifecycle: pending → waiting → naming → named → disabled.\n * - pending: constructed for a brand-new session, not yet accepting prompts.\n * - waiting: ready; the first eligible prompt whose model execution actually\n * starts becomes the naming source. Prompts aborted before model execution\n * starts are ignored and leave the runtime waiting.\n * - naming: one bounded naming operation in flight (model attempts +\n * deterministic fallback).\n * - named: a name was installed.\n * - disabled: terminal. Manual naming (`:name`) also lands here immediately.\n */\n\nimport type { StreamFn } from \"@m4ike1/ion-agent-core\";\nimport { contentText, type RetryPolicy } from \"@m4ike1/ion-ai\";\nimport type { AssistantMessage, Context, Model } from \"@m4ike1/ion-ai/compat\";\nimport { completeSummarization } from \"./compaction/compaction.ts\";\n\nexport type SessionNamingState = \"pending\" | \"waiting\" | \"naming\" | \"named\" | \"disabled\";\n\n/** Request credentials for a standalone naming call. Mirrors the summarization auth shape. */\nexport interface SessionNamingRequestAuth {\n\tmodel: Model<any>;\n\tapiKey?: string;\n\theaders?: Record<string, string>;\n\tenv?: Record<string, string>;\n}\n\nexport interface SessionNamingRuntimeDeps {\n\t/** Owning session id (recorded as runtime metadata only). */\n\tsessionId: string;\n\t/** Resolve the currently active model at the moment naming starts. Never cached. */\n\tgetModel: () => Model<any> | undefined;\n\t/** Resolve request credentials for the given model. */\n\tgetRequestAuth: (model: Model<any>) => Promise<SessionNamingRequestAuth>;\n\t/** Session stream function so request behavior stays consistent. Optional. */\n\tstreamFunction?: StreamFn;\n\t/** Retry policy for transient stream drops. Optional. */\n\tgetRetryPolicy?: () => RetryPolicy | undefined;\n\t/** All existing session display names (any project scope the harness deems relevant). */\n\tlistExistingNames: () => Promise<string[]>;\n\t/** Install the final name (persistence + UI refresh owned by the caller). */\n\tinstallName: (name: string) => void;\n\t/** Maximum model generation attempts before the deterministic fallback. Defaults to 3. */\n\tmaxAttempts?: number;\n}\n\nexport const SESSION_NAMING_MAX_ATTEMPTS = 3;\n/** Model candidates may not exceed 6 words. */\nexport const SESSION_NAMING_MAX_WORDS = 6;\n/** Model candidates may not exceed 60 characters. */\nexport const SESSION_NAMING_MAX_CHARS = 60;\n/** Only this much of the source prompt is sent to the naming model. */\nexport const SESSION_NAMING_MAX_SOURCE_CHARS = 2000;\n/** Small response budget — a title needs a handful of tokens. */\nconst SESSION_NAMING_MAX_TOKENS = 64;\n\nconst SESSION_NAMING_SYSTEM_PROMPT = `You are a session-name generator. Generate a concise title describing the user's primary intent or topic, not a copy of their words. Prefer 2-5 words, at most 6. Reply with ONLY the title: no quotes, no punctuation, no sentences, no questions, no explanation.`;\n\n/** Titles that carry no useful information. Accepted only via explicit manual naming. */\nconst GENERIC_TITLES = new Set([\n\t\"chat\",\n\t\"session\",\n\t\"new session\",\n\t\"new chat\",\n\t\"untitled\",\n\t\"question\",\n\t\"help\",\n\t\"help me\",\n\t\"research\",\n\t\"work\",\n\t\"conversation\",\n]);\n\n/** Normalize a title for comparison: case-insensitive with collapsed whitespace. */\nexport function normalizeSessionNameForComparison(name: string): string {\n\treturn name.trim().toLowerCase().replace(/\\s+/g, \" \");\n}\n\n/**\n * Whether raw input is eligible as a naming source. Commands (`:`/`/`) are\n * harness metadata, not session content; empty input names nothing.\n */\nexport function isNamingEligiblePrompt(text: string): boolean {\n\tconst firstLine = text.split(\"\\n\")[0]?.trim() ?? \"\";\n\tif (!firstLine) return false;\n\tif (firstLine.startsWith(\":\") || firstLine.startsWith(\"/\")) return false;\n\treturn true;\n}\n\n/**\n * Normalize a raw model candidate: trim, collapse whitespace, strip wrapping\n * quotes, drop trailing sentence punctuation.\n */\nexport function normalizeTitleCandidate(raw: string): string {\n\tlet name = raw.trim().replace(/\\s+/g, \" \");\n\tfor (let i = 0; i < 2; i++) {\n\t\tname = name.replace(/[.!?;:]+$/, \"\").trim();\n\t\tconst quoted = /^[\"'](.*)[\"']$/.exec(name);\n\t\tif (!quoted) break;\n\t\tname = (quoted[1] ?? \"\").trim();\n\t}\n\tname = name.replace(/[.!?;:]+$/, \"\").trim();\n\treturn name;\n}\n\nexport type TitleValidation = { valid: true } | { valid: false; collision: boolean; feedback: string };\n\n/**\n * Harness-side validation for a normalized model candidate. `existing` holds\n * comparison-normalized names. Generic titles are rejected here — they remain\n * acceptable when the user supplies them explicitly via manual naming, which\n * bypasses the runtime entirely.\n */\nexport function validateTitleCandidate(name: string, existing: Set<string>): TitleValidation {\n\tif (!name) return { valid: false, collision: false, feedback: \"empty title\" };\n\tif (name.length > SESSION_NAMING_MAX_CHARS) {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\tcollision: false,\n\t\t\tfeedback: `over ${SESSION_NAMING_MAX_CHARS} characters`,\n\t\t};\n\t}\n\tconst words = name.split(\" \").filter(Boolean);\n\tif (words.length > SESSION_NAMING_MAX_WORDS) {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\tcollision: false,\n\t\t\tfeedback: `over ${SESSION_NAMING_MAX_WORDS} words`,\n\t\t};\n\t}\n\tif (/[\\r\\n]/.test(name) || /[{}[\\]<>]/.test(name)) {\n\t\treturn { valid: false, collision: false, feedback: \"forbidden characters\" };\n\t}\n\tif (GENERIC_TITLES.has(normalizeSessionNameForComparison(name))) {\n\t\treturn { valid: false, collision: false, feedback: \"too generic\" };\n\t}\n\tif (existing.has(normalizeSessionNameForComparison(name))) {\n\t\treturn { valid: false, collision: true, feedback: \"already in use\" };\n\t}\n\treturn { valid: true };\n}\n\n/**\n * Deterministic fallback title derived from the source prompt: first line,\n * markdown stripped, truncated. Returns undefined when nothing usable remains.\n */\nexport function deriveFallbackTitle(text: string): string | undefined {\n\tconst firstLine = text.split(\"\\n\")[0]?.trim() ?? \"\";\n\tif (!firstLine || firstLine.startsWith(\":\") || firstLine.startsWith(\"/\")) return undefined;\n\tconst cleaned = normalizeTitleCandidate(\n\t\tfirstLine\n\t\t\t.replace(/^#+\\s*/, \"\")\n\t\t\t.replace(/[*_`~]/g, \"\")\n\t\t\t.replace(/^\\[.*?\\]\\(.*?\\)$/, \"\"),\n\t);\n\tif (!cleaned) return undefined;\n\treturn cleaned.length > 50 ? `${cleaned.slice(0, 47)}...` : cleaned;\n}\n\n/** Append ` #2`, ` #3`, … until the name no longer collides. */\nexport function uniquifySessionName(base: string, existing: Set<string>): string {\n\tif (!existing.has(normalizeSessionNameForComparison(base))) return base;\n\tlet counter = 2;\n\twhile (existing.has(normalizeSessionNameForComparison(`${base} #${counter}`))) {\n\t\tcounter++;\n\t\tif (counter > 9999) break;\n\t}\n\treturn `${base} #${counter}`;\n}\n\nexport class SessionNamingRuntime {\n\tprivate state: SessionNamingState = \"pending\";\n\tprivate pendingPrompt: string | undefined;\n\tprivate epoch = 0;\n\tprivate namingAbort: AbortController | undefined;\n\tprivate readonly maxAttempts: number;\n\tprivate readonly deps: SessionNamingRuntimeDeps;\n\n\tconstructor(deps: SessionNamingRuntimeDeps) {\n\t\tthis.deps = deps;\n\t\tthis.maxAttempts = deps.maxAttempts ?? SESSION_NAMING_MAX_ATTEMPTS;\n\t}\n\n\tgetState(): SessionNamingState {\n\t\treturn this.state;\n\t}\n\n\t/** Mark the runtime ready to accept the first eligible prompt. */\n\tstart(): void {\n\t\tif (this.state === \"pending\") this.state = \"waiting\";\n\t}\n\n\t/**\n\t * Permanently step down. Abandons any in-flight naming operation (its late\n\t * result is discarded via the epoch check) and releases candidate state.\n\t * Called after successful naming and on explicit manual naming.\n\t */\n\tdisable(): void {\n\t\tthis.epoch++;\n\t\tthis.namingAbort?.abort();\n\t\tthis.namingAbort = undefined;\n\t\tthis.pendingPrompt = undefined;\n\t\tthis.state = \"disabled\";\n\t}\n\n\t/**\n\t * Record a submitted user prompt. Only the waiting state accepts one, and a\n\t * newer submission replaces any pending candidate — prompts are never\n\t * combined and aborted-prompt residue is never retained.\n\t */\n\tnotePromptSubmitted(text: string): void {\n\t\tif (this.state !== \"waiting\") return;\n\t\tif (!isNamingEligiblePrompt(text)) return;\n\t\tthis.pendingPrompt = text;\n\t}\n\n\t/**\n\t * Record that the model's execution actually started for the current run\n\t * (first assistant stream event). The pending candidate becomes the naming\n\t * source at this point and the one naming operation fires immediately, so\n\t * it runs in the background while the main agent works. Ignored unless a\n\t * candidate is pending.\n\t */\n\tnotifyModelExecutionStarted(): void {\n\t\tif (this.state !== \"waiting\" || this.pendingPrompt === undefined) return;\n\t\tconst candidate = this.pendingPrompt;\n\t\tthis.pendingPrompt = undefined;\n\t\tthis.state = \"naming\";\n\t\tvoid this.runNaming(candidate);\n\t}\n\n\t/**\n\t * Settle the pending prompt after its run completes. Only clears a\n\t * candidate whose model execution never started (e.g. aborted beforehand)\n\t * so no stale text is retained; the naming decision itself already\n\t * happened at execution start.\n\t */\n\tnotePromptSettled(): void {\n\t\tif (this.state !== \"waiting\") return;\n\t\tthis.pendingPrompt = undefined;\n\t}\n\n\tprivate install(name: string): void {\n\t\tthis.state = \"named\";\n\t\ttry {\n\t\t\tthis.deps.installName(name);\n\t\t} catch {\n\t\t\t// Naming must never degrade the main session.\n\t\t}\n\t\tthis.pendingPrompt = undefined;\n\t\tthis.namingAbort = undefined;\n\t\tthis.state = \"disabled\";\n\t}\n\n\tprivate async runNaming(candidatePrompt: string): Promise<void> {\n\t\tconst epoch = this.epoch;\n\t\tconst active = () => this.state === \"naming\" && this.epoch === epoch;\n\t\tlet existing: Set<string>;\n\t\ttry {\n\t\t\texisting = new Set((await this.deps.listExistingNames()).map(normalizeSessionNameForComparison));\n\t\t} catch {\n\t\t\texisting = new Set();\n\t\t}\n\t\tconst avoid: string[] = [];\n\t\tfor (let attempt = 1; attempt <= this.maxAttempts; attempt++) {\n\t\t\tlet raw: string | undefined;\n\t\t\ttry {\n\t\t\t\tif (!active()) return;\n\t\t\t\tconst model = this.deps.getModel();\n\t\t\t\tif (!model) break;\n\t\t\t\tconst auth = await this.deps.getRequestAuth(model);\n\t\t\t\tif (!active()) return;\n\t\t\t\traw = await this.generateCandidate(model, auth, candidatePrompt, avoid);\n\t\t\t\tif (!active()) return;\n\t\t\t} catch {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (raw === undefined) break;\n\t\t\tconst normalized = normalizeTitleCandidate(raw);\n\t\t\tconst validation = validateTitleCandidate(normalized, existing);\n\t\t\tif (validation.valid) {\n\t\t\t\tthis.install(normalized);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tavoid.push(\n\t\t\t\tvalidation.collision\n\t\t\t\t\t? `The title \"${normalized}\" is already in use. Generate a different title for the same subject — prefer semantic rephrasing or a distinctive qualifier.`\n\t\t\t\t\t: `The suggestion \"${normalized}\" was rejected (${validation.feedback}). Follow the constraints exactly.`,\n\t\t\t);\n\t\t}\n\t\tif (!active()) return;\n\t\tconst fallback = deriveFallbackTitle(candidatePrompt);\n\t\tif (fallback === undefined) {\n\t\t\t// Nothing usable to name from — leave the session unnamed.\n\t\t\tthis.state = \"named\";\n\t\t\tthis.state = \"disabled\";\n\t\t\treturn;\n\t\t}\n\t\tthis.install(uniquifySessionName(fallback, existing));\n\t}\n\n\tprivate async generateCandidate(\n\t\tmodel: Model<any>,\n\t\tauth: SessionNamingRequestAuth,\n\t\tcandidatePrompt: string,\n\t\tavoid: string[],\n\t): Promise<string | undefined> {\n\t\tconst source =\n\t\t\tcandidatePrompt.length > SESSION_NAMING_MAX_SOURCE_CHARS\n\t\t\t\t? `${candidatePrompt.slice(0, SESSION_NAMING_MAX_SOURCE_CHARS)}…`\n\t\t\t\t: candidatePrompt;\n\t\tlet userText = `Generate a concise session title for the following user request. Reply with ONLY the title.\\n\\n<USER PROMPT>\\n${source}\\n</USER PROMPT>`;\n\t\tif (avoid.length > 0) {\n\t\t\tuserText += `\\n\\nConstraints from previous attempts:\\n- ${avoid.join(\"\\n- \")}`;\n\t\t}\n\t\tconst context: Context = {\n\t\t\tsystemPrompt: SESSION_NAMING_SYSTEM_PROMPT,\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\trole: \"user\",\n\t\t\t\t\tcontent: [{ type: \"text\", text: userText }],\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tthis.namingAbort = new AbortController();\n\t\tlet response: AssistantMessage;\n\t\ttry {\n\t\t\tresponse = await completeSummarization(\n\t\t\t\tmodel,\n\t\t\t\tcontext,\n\t\t\t\t{\n\t\t\t\t\tapiKey: auth.apiKey,\n\t\t\t\t\theaders: auth.headers,\n\t\t\t\t\tenv: auth.env,\n\t\t\t\t\tsignal: this.namingAbort.signal,\n\t\t\t\t\tmaxTokens: SESSION_NAMING_MAX_TOKENS,\n\t\t\t\t},\n\t\t\t\tthis.deps.streamFunction,\n\t\t\t\tthis.deps.getRetryPolicy?.(),\n\t\t\t);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (response.stopReason !== \"stop\") return undefined;\n\t\tif (response.content.some((block) => block.type === \"toolCall\")) return undefined;\n\t\tconst text = contentText(response.content, \"\").trim();\n\t\treturn text || undefined;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentSessionRuntimeDiagnostic } from "./agent-session-services.ts";
|
|
2
|
+
import type { SettingsManager } from "./settings-manager.ts";
|
|
3
|
+
export declare function collectSettingsDiagnostics(settingsManager: SettingsManager): AgentSessionRuntimeDiagnostic[];
|
|
4
|
+
/**
|
|
5
|
+
* Remove duplicate type/message diagnostics while preserving their first occurrence.
|
|
6
|
+
* Startup and runtime settings managers can report the same file error.
|
|
7
|
+
*/
|
|
8
|
+
export declare function deduplicateDiagnostics(diagnostics: readonly AgentSessionRuntimeDiagnostic[]): AgentSessionRuntimeDiagnostic[];
|
|
9
|
+
//# sourceMappingURL=settings-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-diagnostics.d.ts","sourceRoot":"","sources":["../../src/core/settings-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,eAAe,GAAG,6BAA6B,EAAE,CAK5G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,WAAW,EAAE,SAAS,6BAA6B,EAAE,GACnD,6BAA6B,EAAE,CAQjC","sourcesContent":["import type { AgentSessionRuntimeDiagnostic } from \"./agent-session-services.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\n\nexport function collectSettingsDiagnostics(settingsManager: SettingsManager): AgentSessionRuntimeDiagnostic[] {\n\treturn settingsManager.drainErrors().map(({ scope, path, error }) => ({\n\t\ttype: \"warning\",\n\t\tmessage: path ? `Invalid settings file ${path}: ${error.message}` : `Invalid ${scope} settings: ${error.message}`,\n\t}));\n}\n\n/**\n * Remove duplicate type/message diagnostics while preserving their first occurrence.\n * Startup and runtime settings managers can report the same file error.\n */\nexport function deduplicateDiagnostics(\n\tdiagnostics: readonly AgentSessionRuntimeDiagnostic[],\n): AgentSessionRuntimeDiagnostic[] {\n\tconst seen = new Set<string>();\n\treturn diagnostics.filter((diagnostic) => {\n\t\tconst key = `${diagnostic.type}\\0${diagnostic.message}`;\n\t\tif (seen.has(key)) return false;\n\t\tseen.add(key);\n\t\treturn true;\n\t});\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function collectSettingsDiagnostics(settingsManager) {
|
|
2
|
+
return settingsManager.drainErrors().map(({ scope, path, error }) => ({
|
|
3
|
+
type: "warning",
|
|
4
|
+
message: path ? `Invalid settings file ${path}: ${error.message}` : `Invalid ${scope} settings: ${error.message}`,
|
|
5
|
+
}));
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Remove duplicate type/message diagnostics while preserving their first occurrence.
|
|
9
|
+
* Startup and runtime settings managers can report the same file error.
|
|
10
|
+
*/
|
|
11
|
+
export function deduplicateDiagnostics(diagnostics) {
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
return diagnostics.filter((diagnostic) => {
|
|
14
|
+
const key = `${diagnostic.type}\0${diagnostic.message}`;
|
|
15
|
+
if (seen.has(key))
|
|
16
|
+
return false;
|
|
17
|
+
seen.add(key);
|
|
18
|
+
return true;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=settings-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-diagnostics.js","sourceRoot":"","sources":["../../src/core/settings-diagnostics.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,0BAA0B,CAAC,eAAgC,EAAmC;IAC7G,OAAO,eAAe,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,cAAc,KAAK,CAAC,OAAO,EAAE;KACjH,CAAC,CAAC,CAAC;AAAA,CACJ;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACrC,WAAqD,EACnB;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IAAA,CACZ,CAAC,CAAC;AAAA,CACH","sourcesContent":["import type { AgentSessionRuntimeDiagnostic } from \"./agent-session-services.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\n\nexport function collectSettingsDiagnostics(settingsManager: SettingsManager): AgentSessionRuntimeDiagnostic[] {\n\treturn settingsManager.drainErrors().map(({ scope, path, error }) => ({\n\t\ttype: \"warning\",\n\t\tmessage: path ? `Invalid settings file ${path}: ${error.message}` : `Invalid ${scope} settings: ${error.message}`,\n\t}));\n}\n\n/**\n * Remove duplicate type/message diagnostics while preserving their first occurrence.\n * Startup and runtime settings managers can report the same file error.\n */\nexport function deduplicateDiagnostics(\n\tdiagnostics: readonly AgentSessionRuntimeDiagnostic[],\n): AgentSessionRuntimeDiagnostic[] {\n\tconst seen = new Set<string>();\n\treturn diagnostics.filter((diagnostic) => {\n\t\tconst key = `${diagnostic.type}\\0${diagnostic.message}`;\n\t\tif (seen.has(key)) return false;\n\t\tseen.add(key);\n\t\treturn true;\n\t});\n}\n"]}
|