@relay-harness/coding-agent 0.0.0-stage → 1.0.2
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 +6111 -0
- package/README.md +80 -2
- 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 +12 -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-TXWUAW5N.js +6 -0
- package/dist/bundle/chunks/anthropic.js +75 -0
- package/dist/bundle/chunks/azure-openai-responses-EJG46ESA.js +2 -0
- package/dist/bundle/chunks/bedrock-converse-stream.js +83 -0
- package/dist/bundle/chunks/chunk-3QND5D7W.js +82 -0
- package/dist/bundle/chunks/chunk-3XNI2SB6.js +15 -0
- package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
- package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
- package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
- package/dist/bundle/chunks/chunk-A3JYRWB6.js +2 -0
- package/dist/bundle/chunks/chunk-C47CLQZK.js +2 -0
- package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
- package/dist/bundle/chunks/chunk-EQ2HXQGJ.js +2 -0
- package/dist/bundle/chunks/chunk-F5ZABL6Z.js +20 -0
- package/dist/bundle/chunks/chunk-H3QXYIF7.js +31 -0
- package/dist/bundle/chunks/chunk-H6S6DQTM.js +2 -0
- package/dist/bundle/chunks/chunk-ISNO4JTR.js +127 -0
- package/dist/bundle/chunks/chunk-KJUDFE6Y.js +11 -0
- package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
- package/dist/bundle/chunks/chunk-LD2P6SFZ.js +2 -0
- package/dist/bundle/chunks/chunk-MP5FU7MG.js +20 -0
- package/dist/bundle/chunks/chunk-O7R77OAK.js +2 -0
- package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
- package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
- package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
- package/dist/bundle/chunks/chunk-PTRF7IZB.js +2 -0
- package/dist/bundle/chunks/chunk-RZ4KG4BP.js +44 -0
- package/dist/bundle/chunks/chunk-S3GGRYIO.js +6 -0
- package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
- package/dist/bundle/chunks/chunk-TRDNDS6A.js +4 -0
- package/dist/bundle/chunks/chunk-USJZMAIR.js +2 -0
- package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
- package/dist/bundle/chunks/chunk-WMTXXI7H.js +4 -0
- package/dist/bundle/chunks/chunk-XDAWU2J5.js +132 -0
- package/dist/bundle/chunks/chunk-XSLAMYCK.js +1297 -0
- package/dist/bundle/chunks/chunk-Z2G7KLPH.js +11 -0
- package/dist/bundle/chunks/cli-K4CNHWOI.js +51 -0
- package/dist/bundle/chunks/cloudflare-workers-ai-system-one-NM3JRRWQ.js +2 -0
- package/dist/bundle/chunks/codemode-worker.js +374 -0
- package/dist/bundle/chunks/easter-egg-3d-TGRCIHA4.js +2 -0
- package/dist/bundle/chunks/execute-6E5DA2QI.js +388 -0
- package/dist/bundle/chunks/github-copilot.js +2 -0
- package/dist/bundle/chunks/google-generative-ai-HYUNEOCJ.js +2 -0
- package/dist/bundle/chunks/google-vertex-J7MDGTNM.js +2 -0
- package/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
- package/dist/bundle/chunks/image-resize-worker.js +2 -0
- package/dist/bundle/chunks/jiti-loader-C3NU2SDH.js +21 -0
- package/dist/bundle/chunks/jiti-static-loader-E6ANQD5T.js +2 -0
- package/dist/bundle/chunks/kimi-coding.js +2 -0
- package/dist/bundle/chunks/lib-TEDK3E5I.js +9 -0
- package/dist/bundle/chunks/llama-cpp-classify-XT44PI3C.js +22 -0
- package/dist/bundle/chunks/meta.js +2 -0
- package/dist/bundle/chunks/mistral-conversations-UD2HHXKZ.js +5 -0
- package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
- package/dist/bundle/chunks/node-N5BSDOA5.js +16 -0
- package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
- package/dist/bundle/chunks/openai-chatgpt.js +75 -0
- package/dist/bundle/chunks/openai-codex-responses-EMHXEJR4.js +10 -0
- package/dist/bundle/chunks/openai-codex.js +75 -0
- package/dist/bundle/chunks/openai-completions-LPKRZYMC.js +7 -0
- package/dist/bundle/chunks/openai-responses-TOOBRHUV.js +3 -0
- package/dist/bundle/chunks/openrouter-images-ZVXWCSIM.js +2 -0
- package/dist/bundle/chunks/openrouter.js +75 -0
- package/dist/bundle/chunks/relay-messages-QRFJXG5X.js +8 -0
- package/dist/bundle/chunks/runtime-O5HLCH3V.js +2 -0
- package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
- package/dist/bundle/chunks/typesafe-system-one-PRR5K6CI.js +2 -0
- package/dist/bundle/chunks/virtual-modules-FNVEVB65.js +2 -0
- package/dist/bundle/chunks/xai.js +2 -0
- package/dist/bundle/cli-runtime.js +3 -0
- package/dist/bundle/cli.js +5 -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 +454 -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 +193 -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 +108 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +264 -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 +147 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +891 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +3553 -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 +106 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/bug-report.d.ts +176 -0
- package/dist/core/bug-report.d.ts.map +1 -0
- package/dist/core/bug-report.js +292 -0
- package/dist/core/bug-report.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 +112 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/cache-warmer.d.ts +103 -0
- package/dist/core/cache-warmer.d.ts.map +1 -0
- package/dist/core/cache-warmer.js +356 -0
- package/dist/core/cache-warmer.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 +744 -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 +39 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +149 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/crash-log.d.ts +27 -0
- package/dist/core/crash-log.d.ts.map +1 -0
- package/dist/core/crash-log.js +140 -0
- package/dist/core/crash-log.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 +1076 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1918 -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/jiti-loader.d.ts +2 -0
- package/dist/core/extensions/jiti-loader.d.ts.map +1 -0
- package/dist/core/extensions/jiti-loader.js +4 -0
- package/dist/core/extensions/jiti-loader.js.map +1 -0
- package/dist/core/extensions/jiti-static-loader.d.ts +2 -0
- package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -0
- package/dist/core/extensions/jiti-static-loader.js +4 -0
- package/dist/core/extensions/jiti-static-loader.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 +701 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +213 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +1239 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1720 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +48 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/virtual-modules.d.ts +3 -0
- package/dist/core/extensions/virtual-modules.d.ts.map +1 -0
- package/dist/core/extensions/virtual-modules.js +38 -0
- package/dist/core/extensions/virtual-modules.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +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/harness-core.d.ts +50 -0
- package/dist/core/harness-core.d.ts.map +1 -0
- package/dist/core/harness-core.js +240 -0
- package/dist/core/harness-core.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 +14 -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/keybindings.d.ts +428 -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/mcp-servers.d.ts +125 -0
- package/dist/core/mcp-servers.d.ts.map +1 -0
- package/dist/core/mcp-servers.js +198 -0
- package/dist/core/mcp-servers.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 +124 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-config.d.ts +759 -0
- package/dist/core/model-config.d.ts.map +1 -0
- package/dist/core/model-config.js +293 -0
- package/dist/core/model-config.js.map +1 -0
- package/dist/core/model-registry.d.ts +63 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +144 -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 +589 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/model-runtime.d.ts +142 -0
- package/dist/core/model-runtime.d.ts.map +1 -0
- package/dist/core/model-runtime.js +732 -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/nested-tool-calls.d.ts +102 -0
- package/dist/core/nested-tool-calls.d.ts.map +1 -0
- package/dist/core/nested-tool-calls.js +178 -0
- package/dist/core/nested-tool-calls.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 +217 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +2224 -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 +59 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +262 -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 +80 -0
- package/dist/core/provider-composer.d.ts.map +1 -0
- package/dist/core/provider-composer.js +484 -0
- package/dist/core/provider-composer.js.map +1 -0
- package/dist/core/relay-manifest.d.ts +8 -0
- package/dist/core/relay-manifest.d.ts.map +1 -0
- package/dist/core/relay-manifest.js +26 -0
- package/dist/core/relay-manifest.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 +227 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +1005 -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 +315 -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 +8 -0
- package/dist/core/session-export.d.ts.map +1 -0
- package/dist/core/session-export.js +33 -0
- package/dist/core/session-export.js.map +1 -0
- package/dist/core/session-manager.d.ts +416 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1523 -0
- package/dist/core/session-manager.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 +421 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +1120 -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 +408 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +15 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +29 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +26 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +35 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +71 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +147 -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 +100 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +333 -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 +41 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +252 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +43 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +129 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +41 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +126 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +63 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +214 -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 +42 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +169 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +30 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +91 -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 +117 -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 +28 -0
- package/dist/core/tools/renderers/index.d.ts.map +1 -0
- package/dist/core/tools/renderers/index.js +47 -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 +58 -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 +130 -0
- package/dist/core/tools/renderers/read.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 +16 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +38 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +84 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +244 -0
- package/dist/core/tools/truncate.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 +204 -0
- package/dist/core/trust-manager.js.map +1 -0
- package/dist/core/usage-totals.d.ts +21 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +79 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/core/virtual-models.d.ts +117 -0
- package/dist/core/virtual-models.d.ts.map +1 -0
- package/dist/core/virtual-models.js +124 -0
- package/dist/core/virtual-models.js.map +1 -0
- package/dist/core/workspace-probe.d.ts +8 -0
- package/dist/core/workspace-probe.d.ts.map +1 -0
- package/dist/core/workspace-probe.js +65 -0
- package/dist/core/workspace-probe.js.map +1 -0
- package/dist/extensions/codemode/execute.d.ts +16 -0
- package/dist/extensions/codemode/execute.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.js +577 -0
- package/dist/extensions/codemode/execute.js.map +1 -0
- package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
- package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.lazy.js +3 -0
- package/dist/extensions/codemode/execute.lazy.js.map +1 -0
- package/dist/extensions/codemode/index.d.ts +21 -0
- package/dist/extensions/codemode/index.d.ts.map +1 -0
- package/dist/extensions/codemode/index.js +31 -0
- package/dist/extensions/codemode/index.js.map +1 -0
- package/dist/extensions/codemode/renderer.d.ts +12 -0
- package/dist/extensions/codemode/renderer.d.ts.map +1 -0
- package/dist/extensions/codemode/renderer.js +137 -0
- package/dist/extensions/codemode/renderer.js.map +1 -0
- package/dist/extensions/codemode/tool.d.ts +123 -0
- package/dist/extensions/codemode/tool.d.ts.map +1 -0
- package/dist/extensions/codemode/tool.js +268 -0
- package/dist/extensions/codemode/tool.js.map +1 -0
- package/dist/extensions/codemode/worker.d.ts +7 -0
- package/dist/extensions/codemode/worker.d.ts.map +1 -0
- package/dist/extensions/codemode/worker.js +7 -0
- package/dist/extensions/codemode/worker.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +19 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/intake/docx.d.ts +42 -0
- package/dist/extensions/intake/docx.d.ts.map +1 -0
- package/dist/extensions/intake/docx.js +148 -0
- package/dist/extensions/intake/docx.js.map +1 -0
- package/dist/extensions/intake/index.d.ts +17 -0
- package/dist/extensions/intake/index.d.ts.map +1 -0
- package/dist/extensions/intake/index.js +88 -0
- package/dist/extensions/intake/index.js.map +1 -0
- package/dist/extensions/intake/prompt.d.ts +6 -0
- package/dist/extensions/intake/prompt.d.ts.map +1 -0
- package/dist/extensions/intake/prompt.js +41 -0
- package/dist/extensions/intake/prompt.js.map +1 -0
- package/dist/extensions/intake/questionnaire.d.ts +84 -0
- package/dist/extensions/intake/questionnaire.d.ts.map +1 -0
- package/dist/extensions/intake/questionnaire.js +472 -0
- package/dist/extensions/intake/questionnaire.js.map +1 -0
- package/dist/extensions/laya/assessment.d.ts +34 -0
- package/dist/extensions/laya/assessment.d.ts.map +1 -0
- package/dist/extensions/laya/assessment.js +171 -0
- package/dist/extensions/laya/assessment.js.map +1 -0
- package/dist/extensions/laya/index.d.ts +34 -0
- package/dist/extensions/laya/index.d.ts.map +1 -0
- package/dist/extensions/laya/index.js +516 -0
- package/dist/extensions/laya/index.js.map +1 -0
- package/dist/extensions/laya/model-manifest.d.ts +7 -0
- package/dist/extensions/laya/model-manifest.d.ts.map +1 -0
- package/dist/extensions/laya/model-manifest.js +48 -0
- package/dist/extensions/laya/model-manifest.js.map +1 -0
- package/dist/extensions/laya/policy.d.ts +130 -0
- package/dist/extensions/laya/policy.d.ts.map +1 -0
- package/dist/extensions/laya/policy.js +222 -0
- package/dist/extensions/laya/policy.js.map +1 -0
- package/dist/extensions/laya/questions.d.ts +60 -0
- package/dist/extensions/laya/questions.d.ts.map +1 -0
- package/dist/extensions/laya/questions.js +189 -0
- package/dist/extensions/laya/questions.js.map +1 -0
- package/dist/extensions/laya/routers.d.ts +17 -0
- package/dist/extensions/laya/routers.d.ts.map +1 -0
- package/dist/extensions/laya/routers.js +119 -0
- package/dist/extensions/laya/routers.js.map +1 -0
- package/dist/extensions/laya/runtime.d.ts +68 -0
- package/dist/extensions/laya/runtime.d.ts.map +1 -0
- package/dist/extensions/laya/runtime.js +179 -0
- package/dist/extensions/laya/runtime.js.map +1 -0
- package/dist/extensions/laya/seed.d.ts +39 -0
- package/dist/extensions/laya/seed.d.ts.map +1 -0
- package/dist/extensions/laya/seed.js +358 -0
- package/dist/extensions/laya/seed.js.map +1 -0
- package/dist/extensions/laya/server.d.ts +26 -0
- package/dist/extensions/laya/server.d.ts.map +1 -0
- package/dist/extensions/laya/server.js +117 -0
- package/dist/extensions/laya/server.js.map +1 -0
- package/dist/extensions/laya/telemetry.d.ts +94 -0
- package/dist/extensions/laya/telemetry.d.ts.map +1 -0
- package/dist/extensions/laya/telemetry.js +107 -0
- package/dist/extensions/laya/telemetry.js.map +1 -0
- package/dist/extensions/llama/client.d.ts +69 -0
- package/dist/extensions/llama/client.d.ts.map +1 -0
- package/dist/extensions/llama/client.js +313 -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 +213 -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/extensions/mcp/cli.d.ts +21 -0
- package/dist/extensions/mcp/cli.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.js +503 -0
- package/dist/extensions/mcp/cli.js.map +1 -0
- package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
- package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.lazy.js +3 -0
- package/dist/extensions/mcp/cli.lazy.js.map +1 -0
- package/dist/extensions/mcp/config.d.ts +84 -0
- package/dist/extensions/mcp/config.d.ts.map +1 -0
- package/dist/extensions/mcp/config.js +194 -0
- package/dist/extensions/mcp/config.js.map +1 -0
- package/dist/extensions/mcp/index.d.ts +79 -0
- package/dist/extensions/mcp/index.d.ts.map +1 -0
- package/dist/extensions/mcp/index.js +1101 -0
- package/dist/extensions/mcp/index.js.map +1 -0
- package/dist/extensions/mcp/log.d.ts +16 -0
- package/dist/extensions/mcp/log.d.ts.map +1 -0
- package/dist/extensions/mcp/log.js +66 -0
- package/dist/extensions/mcp/log.js.map +1 -0
- package/dist/extensions/mcp/oauth.d.ts +98 -0
- package/dist/extensions/mcp/oauth.d.ts.map +1 -0
- package/dist/extensions/mcp/oauth.js +366 -0
- package/dist/extensions/mcp/oauth.js.map +1 -0
- package/dist/extensions/mcp/resources.d.ts +43 -0
- package/dist/extensions/mcp/resources.d.ts.map +1 -0
- package/dist/extensions/mcp/resources.js +262 -0
- package/dist/extensions/mcp/resources.js.map +1 -0
- package/dist/extensions/mcp/runtime.d.ts +98 -0
- package/dist/extensions/mcp/runtime.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.js +395 -0
- package/dist/extensions/mcp/runtime.js.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.js +3 -0
- package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
- package/dist/extensions/mcp/tools.d.ts +86 -0
- package/dist/extensions/mcp/tools.d.ts.map +1 -0
- package/dist/extensions/mcp/tools.js +252 -0
- package/dist/extensions/mcp/tools.js.map +1 -0
- package/dist/extensions/mcp/ui.d.ts +60 -0
- package/dist/extensions/mcp/ui.d.ts.map +1 -0
- package/dist/extensions/mcp/ui.js +178 -0
- package/dist/extensions/mcp/ui.js.map +1 -0
- package/dist/extensions/tool-search/index.d.ts +12 -0
- package/dist/extensions/tool-search/index.d.ts.map +1 -0
- package/dist/extensions/tool-search/index.js +15 -0
- package/dist/extensions/tool-search/index.js.map +1 -0
- package/dist/extensions/tool-search/tool.d.ts +73 -0
- package/dist/extensions/tool-search/tool.d.ts.map +1 -0
- package/dist/extensions/tool-search/tool.js +189 -0
- package/dist/extensions/tool-search/tool.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +16 -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 +282 -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/bug-report.d.ts +16 -0
- package/dist/modes/interactive/bug-report.d.ts.map +1 -0
- package/dist/modes/interactive/bug-report.js +171 -0
- package/dist/modes/interactive/bug-report.js.map +1 -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 +37 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +335 -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 +158 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/auth-url.d.ts +14 -0
- package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
- package/dist/modes/interactive/components/auth-url.js +37 -0
- package/dist/modes/interactive/components/auth-url.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 +51 -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 +52 -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 +771 -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/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/easter-egg-3d.d.ts +104 -0
- package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.js +1141 -0
- package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js +23 -0
- package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +24 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +103 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +25 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +67 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +87 -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 +109 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +39 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +265 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +33 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +34 -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 +54 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +194 -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 +39 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +166 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/relay-logo.d.ts +22 -0
- package/dist/modes/interactive/components/relay-logo.d.ts.map +1 -0
- package/dist/modes/interactive/components/relay-logo.js +63 -0
- package/dist/modes/interactive/components/relay-logo.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 +95 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +893 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +96 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +742 -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 +54 -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/themed-text.d.ts +17 -0
- package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/themed-text.js +29 -0
- package/dist/modes/interactive/components/themed-text.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 +68 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +314 -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 +1254 -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 +50 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +48 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +66 -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 +482 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +5861 -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 +119 -0
- package/dist/modes/interactive/session-share.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +78 -0
- package/dist/modes/interactive/theme/light.json +78 -0
- package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/system-theme.js +546 -0
- package/dist/modes/interactive/theme/system-theme.js.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +81 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.js +210 -0
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
- package/dist/modes/interactive/theme/theme-json.d.ts +85 -0
- package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-json.js +132 -0
- package/dist/modes/interactive/theme/theme-json.js.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.json +361 -0
- package/dist/modes/interactive/theme/theme.d.ts +158 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +912 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/interactive/tui-renderer.d.ts +22 -0
- package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
- package/dist/modes/interactive/tui-renderer.js +67 -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 +499 -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 +655 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +478 -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 +8 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +524 -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 +11 -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 +176 -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 +214 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard.d.ts +6 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +156 -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 +22 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +84 -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/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/output-files.d.ts +15 -0
- package/dist/utils/output-files.d.ts.map +1 -0
- package/dist/utils/output-files.js +30 -0
- package/dist/utils/output-files.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 +115 -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/relay-user-agent.d.ts +2 -0
- package/dist/utils/relay-user-agent.d.ts.map +1 -0
- package/dist/utils/relay-user-agent.js +5 -0
- package/dist/utils/relay-user-agent.js.map +1 -0
- package/dist/utils/shell.d.ts +32 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +189 -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 +179 -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 +21 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +48 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +13 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +343 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +17 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +74 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/wsl.d.ts +3 -0
- package/dist/utils/wsl.d.ts.map +1 -0
- package/dist/utils/wsl.js +15 -0
- package/dist/utils/wsl.js.map +1 -0
- package/dist/utils/zip.d.ts +7 -0
- package/dist/utils/zip.d.ts.map +1 -0
- package/dist/utils/zip.js +60 -0
- package/dist/utils/zip.js.map +1 -0
- package/docs/cli-integration.md +106 -0
- package/docs/cli.md +316 -0
- package/docs/codemode.md +207 -0
- package/docs/compaction.md +463 -0
- package/docs/configuration.md +47 -0
- package/docs/containerization.md +154 -0
- package/docs/custom-provider.md +173 -0
- package/docs/docs.json +224 -0
- package/docs/environment-variables.md +97 -0
- package/docs/extensions.md +274 -0
- package/docs/harness-core.md +99 -0
- package/docs/how-relay-works.md +49 -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 +39 -0
- package/docs/intake.md +40 -0
- package/docs/json.md +226 -0
- package/docs/keybindings.md +194 -0
- package/docs/laya.md +112 -0
- package/docs/llama-cpp.md +114 -0
- package/docs/mcp.md +258 -0
- package/docs/message-types.md +261 -0
- package/docs/models.md +205 -0
- package/docs/packages.md +129 -0
- package/docs/prompt-templates.md +59 -0
- package/docs/providers.md +187 -0
- package/docs/quickstart.md +126 -0
- package/docs/rpc-commands.md +860 -0
- package/docs/rpc-extension-ui.md +200 -0
- package/docs/rpc.md +193 -0
- package/docs/sdk.md +147 -0
- package/docs/security.md +99 -0
- package/docs/session-format.md +293 -0
- package/docs/sessions.md +66 -0
- package/docs/settings.md +205 -0
- package/docs/shell-aliases.md +93 -0
- package/docs/skills.md +93 -0
- package/docs/slash-commands.md +61 -0
- package/docs/terminal-setup.md +219 -0
- package/docs/termux.md +121 -0
- package/docs/themes.md +136 -0
- package/docs/tmux.md +55 -0
- package/docs/tui.md +125 -0
- package/docs/usage.md +94 -0
- package/docs/virtual-models.md +114 -0
- package/docs/windows.md +67 -0
- package/examples/README.md +39 -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 +225 -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 +617 -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/debug-provider.ts +90 -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_relay.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/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/jev-router.ts +113 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +354 -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 +49 -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 +196 -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/security-auditor.md +20 -0
- package/examples/extensions/subagent/agents/verifier.md +31 -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-and-verify.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/subagent/skills/delegate/SKILL.md +48 -0
- package/examples/extensions/subagent/skills/security-audit/SKILL.md +108 -0
- package/examples/extensions/subagent/skills/security-audit/references/categories.md +130 -0
- package/examples/extensions/subagent/skills/security-audit/references/report.md +38 -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/relay-example-plugin/README.md +38 -0
- package/examples/plugins/relay-example-plugin/package.json +10 -0
- package/examples/plugins/relay-example-plugin/src/contract.ts +13 -0
- package/examples/plugins/relay-example-plugin/src/session.ts +24 -0
- package/examples/plugins/relay-example-plugin/src/tui.ts +31 -0
- package/examples/rpc-client.ts +35 -0
- package/examples/rpc-extension-ui.ts +661 -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/14-codemode-mcp.ts +61 -0
- package/examples/sdk/README.md +141 -0
- package/package.json +107 -5
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed questions Laya answers about each request, in one classifier call.
|
|
3
|
+
*
|
|
4
|
+
* Stage A (task intelligence) describes the task. Stage B (execution intelligence) recommends how
|
|
5
|
+
* to run it. The questions use abstract tiers and efforts, never model names: the model registry
|
|
6
|
+
* maps tiers to concrete models, so models can change without retraining Laya. The provider is not
|
|
7
|
+
* a question: it depends on credentials and quota, which only the harness knows.
|
|
8
|
+
*
|
|
9
|
+
* These definitions are the contract with the trained checkpoint. `layaDecisionsFile()` exports
|
|
10
|
+
* them in the laya-trainer format; train and serve with the same wording.
|
|
11
|
+
*/
|
|
12
|
+
export const TASK_TYPES = [
|
|
13
|
+
"question",
|
|
14
|
+
"code_edit",
|
|
15
|
+
"bug_fix",
|
|
16
|
+
"refactor",
|
|
17
|
+
"feature",
|
|
18
|
+
"test",
|
|
19
|
+
"architecture",
|
|
20
|
+
"debugging",
|
|
21
|
+
"security",
|
|
22
|
+
"research",
|
|
23
|
+
"documentation",
|
|
24
|
+
];
|
|
25
|
+
export const TASK_SCOPES = [
|
|
26
|
+
"single_line",
|
|
27
|
+
"single_file",
|
|
28
|
+
"module",
|
|
29
|
+
"multi_module",
|
|
30
|
+
"repository",
|
|
31
|
+
"multi_repository",
|
|
32
|
+
];
|
|
33
|
+
export const CAPABILITY_TIERS = ["fast", "balanced", "strong", "frontier"];
|
|
34
|
+
export const REASONING_EFFORTS = ["minimal", "low", "medium", "high", "extra_high"];
|
|
35
|
+
export const VALIDATION_LEVELS = ["none", "syntax", "compile", "unit_test", "integration_test", "review"];
|
|
36
|
+
export const AGENTS = {
|
|
37
|
+
"software-engineer": "general implementation tasks that fit no specialist below",
|
|
38
|
+
"backend-engineer": "APIs, services, business rules, queues, server-side code",
|
|
39
|
+
"frontend-engineer": "web UI, components, styling, browser behavior, accessibility",
|
|
40
|
+
"mobile-engineer": "iOS, Android, React Native or Flutter apps",
|
|
41
|
+
"devops-engineer": "CI/CD, builds, containers, infrastructure, deployment, release scripts",
|
|
42
|
+
"database-engineer": "schemas, migrations, queries, indexes, data modeling",
|
|
43
|
+
"security-engineer": "vulnerabilities, authentication, authorization, secrets, hardening",
|
|
44
|
+
"software-architect": "system design, module boundaries, cross-cutting architectural decisions",
|
|
45
|
+
"qa-engineer": "writing or fixing tests, test strategy, flaky tests, coverage",
|
|
46
|
+
researcher: "investigating, comparing options or explaining code without changing it",
|
|
47
|
+
};
|
|
48
|
+
export const AGENT_IDS = Object.keys(AGENTS);
|
|
49
|
+
/** Tool needs, asked as independent yes/no questions to avoid a combinatorial choice. */
|
|
50
|
+
export const TOOL_REQUIREMENTS = {
|
|
51
|
+
requires_write: "Does the task require creating or editing files?",
|
|
52
|
+
requires_shell: "Does the task require running shell commands other than tests?",
|
|
53
|
+
requires_tests: "Does the task require running tests, type checks, or builds?",
|
|
54
|
+
requires_web: "Does the task require searching or reading the web?",
|
|
55
|
+
requires_browser: "Does the task require driving a browser or checking a running UI?",
|
|
56
|
+
requires_database: "Does the task require querying or changing a database?",
|
|
57
|
+
requires_git: "Does the task require git operations such as commits, branches, or history?",
|
|
58
|
+
};
|
|
59
|
+
export const TOOL_REQUIREMENT_IDS = Object.keys(TOOL_REQUIREMENTS);
|
|
60
|
+
export const COMPLEXITY_LEVELS = ["trivial", "simple", "moderate", "complex", "expert"];
|
|
61
|
+
export const RISK_LEVELS = [
|
|
62
|
+
"low: easy to undo, no user impact",
|
|
63
|
+
"moderate: visible behavior change",
|
|
64
|
+
"high: data, money, availability or many users affected",
|
|
65
|
+
"critical: production data, security or irreversible operations",
|
|
66
|
+
];
|
|
67
|
+
export const AMBIGUITY_LEVELS = [
|
|
68
|
+
"clear: the request states what to do",
|
|
69
|
+
"partial: some details must be inferred",
|
|
70
|
+
"open: the goal or approach must be clarified or explored first",
|
|
71
|
+
];
|
|
72
|
+
export const REASONING_LEVELS = [
|
|
73
|
+
"recall: answer is direct knowledge",
|
|
74
|
+
"routine: a known recipe",
|
|
75
|
+
"multi-step: several dependent steps",
|
|
76
|
+
"deep: careful analysis of interactions",
|
|
77
|
+
"novel: design or debugging without a known recipe",
|
|
78
|
+
];
|
|
79
|
+
const yesNo = (instructions, yes, no) => ({
|
|
80
|
+
type: "bool",
|
|
81
|
+
instructions,
|
|
82
|
+
criteria: { true: yes, false: no },
|
|
83
|
+
});
|
|
84
|
+
export const LAYA_QUESTIONS = {
|
|
85
|
+
task_type: {
|
|
86
|
+
type: "choice",
|
|
87
|
+
instructions: "What kind of software engineering task does the request ask for?",
|
|
88
|
+
criteria: {
|
|
89
|
+
question: "a question to answer, no change requested",
|
|
90
|
+
code_edit: "a small, explicit change: rename, text, config value, formatting",
|
|
91
|
+
bug_fix: "fix behavior that is wrong and reproducible",
|
|
92
|
+
refactor: "restructure code without changing behavior",
|
|
93
|
+
feature: "add new behavior or capability",
|
|
94
|
+
test: "write, fix or extend tests",
|
|
95
|
+
architecture: "design or evaluate structure across modules or systems",
|
|
96
|
+
debugging: "investigate a failure whose cause is unknown",
|
|
97
|
+
security: "find or fix a vulnerability, or change auth, secrets or permissions",
|
|
98
|
+
research: "explore, compare options or explain code without changing it",
|
|
99
|
+
documentation: "write or update docs, comments, READMEs or changelogs",
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
complexity: {
|
|
103
|
+
type: "score",
|
|
104
|
+
instructions: "How complex is the task?",
|
|
105
|
+
criteria: COMPLEXITY_LEVELS,
|
|
106
|
+
},
|
|
107
|
+
scope: {
|
|
108
|
+
type: "choice",
|
|
109
|
+
instructions: "How much of the codebase does the task touch?",
|
|
110
|
+
criteria: {
|
|
111
|
+
single_line: "one line or one value",
|
|
112
|
+
single_file: "one file",
|
|
113
|
+
module: "several files of one module or package",
|
|
114
|
+
multi_module: "several modules or packages",
|
|
115
|
+
repository: "the whole repository",
|
|
116
|
+
multi_repository: "more than one repository or service",
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
risk: {
|
|
120
|
+
type: "score",
|
|
121
|
+
instructions: "How risky is a wrong result?",
|
|
122
|
+
criteria: RISK_LEVELS,
|
|
123
|
+
},
|
|
124
|
+
ambiguity: {
|
|
125
|
+
type: "score",
|
|
126
|
+
instructions: "How ambiguous is the request?",
|
|
127
|
+
criteria: AMBIGUITY_LEVELS,
|
|
128
|
+
},
|
|
129
|
+
reasoning_requirement: {
|
|
130
|
+
type: "score",
|
|
131
|
+
instructions: "How much reasoning does the task need?",
|
|
132
|
+
criteria: REASONING_LEVELS,
|
|
133
|
+
},
|
|
134
|
+
capability_tier: {
|
|
135
|
+
type: "choice",
|
|
136
|
+
instructions: "What is the cheapest model capability tier likely to solve the task correctly?",
|
|
137
|
+
criteria: {
|
|
138
|
+
fast: "small, fast model: trivial edits, lookups, simple questions",
|
|
139
|
+
balanced: "mid-size model: ordinary features, fixes and refactors",
|
|
140
|
+
strong: "large model: subtle bugs, risky or cross-module changes",
|
|
141
|
+
frontier: "most capable model: novel design, hard debugging, critical systems",
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
reasoning_effort: {
|
|
145
|
+
type: "choice",
|
|
146
|
+
instructions: "How much reasoning effort should the model spend?",
|
|
147
|
+
criteria: {
|
|
148
|
+
minimal: "answer or edit directly",
|
|
149
|
+
low: "brief planning",
|
|
150
|
+
medium: "plan the steps before acting",
|
|
151
|
+
high: "analyze alternatives and edge cases",
|
|
152
|
+
extra_high: "exhaustive analysis of a hard problem",
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
agent: {
|
|
156
|
+
type: "choice",
|
|
157
|
+
instructions: "Which specialist should handle the task?",
|
|
158
|
+
criteria: AGENTS,
|
|
159
|
+
},
|
|
160
|
+
validation_level: {
|
|
161
|
+
type: "choice",
|
|
162
|
+
instructions: "What validation should confirm the result?",
|
|
163
|
+
criteria: {
|
|
164
|
+
none: "nothing to validate: answers, explanations, plans",
|
|
165
|
+
syntax: "check formatting or syntax only: docs, config, text",
|
|
166
|
+
compile: "type check or build",
|
|
167
|
+
unit_test: "run unit tests of the changed code",
|
|
168
|
+
integration_test: "run integration or end-to-end tests",
|
|
169
|
+
review: "careful review of the change: security, architecture, data",
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
...Object.fromEntries(Object.entries(TOOL_REQUIREMENTS).map(([id, instructions]) => [
|
|
173
|
+
id,
|
|
174
|
+
yesNo(instructions, "yes, the task needs it", "no, the task does not need it"),
|
|
175
|
+
])),
|
|
176
|
+
security_sensitive: yesNo("Does the task touch authentication, authorization, secrets, payments, security vulnerabilities, or production data migrations?", "yes, it touches one of these", "no"),
|
|
177
|
+
};
|
|
178
|
+
/** The questions in laya-trainer's `.laya/decisions.json` format (`bool` is `noul` there). */
|
|
179
|
+
export function layaDecisionsFile() {
|
|
180
|
+
return {
|
|
181
|
+
description: "Relay adaptive execution intelligence: task profile, capability tier, effort, agent, tools and validation for a coding request.",
|
|
182
|
+
language: "auto",
|
|
183
|
+
decisions: Object.fromEntries(Object.entries(LAYA_QUESTIONS).map(([id, question]) => [
|
|
184
|
+
id,
|
|
185
|
+
question.type === "bool" ? { ...question, type: "noul" } : question,
|
|
186
|
+
])),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../../src/extensions/laya/questions.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ClassifierQuestion } from \"@relay-harness/ai\";\n\n/**\n * Typed questions Laya answers about each request, in one classifier call.\n *\n * Stage A (task intelligence) describes the task. Stage B (execution intelligence) recommends how\n * to run it. The questions use abstract tiers and efforts, never model names: the model registry\n * maps tiers to concrete models, so models can change without retraining Laya. The provider is not\n * a question: it depends on credentials and quota, which only the harness knows.\n *\n * These definitions are the contract with the trained checkpoint. `layaDecisionsFile()` exports\n * them in the laya-trainer format; train and serve with the same wording.\n */\n\nexport const TASK_TYPES = [\n\t\"question\",\n\t\"code_edit\",\n\t\"bug_fix\",\n\t\"refactor\",\n\t\"feature\",\n\t\"test\",\n\t\"architecture\",\n\t\"debugging\",\n\t\"security\",\n\t\"research\",\n\t\"documentation\",\n] as const;\nexport type TaskType = (typeof TASK_TYPES)[number];\n\nexport const TASK_SCOPES = [\n\t\"single_line\",\n\t\"single_file\",\n\t\"module\",\n\t\"multi_module\",\n\t\"repository\",\n\t\"multi_repository\",\n] as const;\nexport type TaskScope = (typeof TASK_SCOPES)[number];\n\nexport const CAPABILITY_TIERS = [\"fast\", \"balanced\", \"strong\", \"frontier\"] as const;\nexport type CapabilityTier = (typeof CAPABILITY_TIERS)[number];\n\nexport const REASONING_EFFORTS = [\"minimal\", \"low\", \"medium\", \"high\", \"extra_high\"] as const;\nexport type ReasoningEffort = (typeof REASONING_EFFORTS)[number];\n\nexport const VALIDATION_LEVELS = [\"none\", \"syntax\", \"compile\", \"unit_test\", \"integration_test\", \"review\"] as const;\nexport type ValidationLevel = (typeof VALIDATION_LEVELS)[number];\n\nexport const AGENTS = {\n\t\"software-engineer\": \"general implementation tasks that fit no specialist below\",\n\t\"backend-engineer\": \"APIs, services, business rules, queues, server-side code\",\n\t\"frontend-engineer\": \"web UI, components, styling, browser behavior, accessibility\",\n\t\"mobile-engineer\": \"iOS, Android, React Native or Flutter apps\",\n\t\"devops-engineer\": \"CI/CD, builds, containers, infrastructure, deployment, release scripts\",\n\t\"database-engineer\": \"schemas, migrations, queries, indexes, data modeling\",\n\t\"security-engineer\": \"vulnerabilities, authentication, authorization, secrets, hardening\",\n\t\"software-architect\": \"system design, module boundaries, cross-cutting architectural decisions\",\n\t\"qa-engineer\": \"writing or fixing tests, test strategy, flaky tests, coverage\",\n\tresearcher: \"investigating, comparing options or explaining code without changing it\",\n} as const satisfies Record<string, string>;\nexport type AgentId = keyof typeof AGENTS;\nexport const AGENT_IDS = Object.keys(AGENTS) as AgentId[];\n\n/** Tool needs, asked as independent yes/no questions to avoid a combinatorial choice. */\nexport const TOOL_REQUIREMENTS = {\n\trequires_write: \"Does the task require creating or editing files?\",\n\trequires_shell: \"Does the task require running shell commands other than tests?\",\n\trequires_tests: \"Does the task require running tests, type checks, or builds?\",\n\trequires_web: \"Does the task require searching or reading the web?\",\n\trequires_browser: \"Does the task require driving a browser or checking a running UI?\",\n\trequires_database: \"Does the task require querying or changing a database?\",\n\trequires_git: \"Does the task require git operations such as commits, branches, or history?\",\n} as const;\nexport type ToolRequirement = keyof typeof TOOL_REQUIREMENTS;\nexport const TOOL_REQUIREMENT_IDS = Object.keys(TOOL_REQUIREMENTS) as ToolRequirement[];\n\nexport const COMPLEXITY_LEVELS = [\"trivial\", \"simple\", \"moderate\", \"complex\", \"expert\"];\nexport const RISK_LEVELS = [\n\t\"low: easy to undo, no user impact\",\n\t\"moderate: visible behavior change\",\n\t\"high: data, money, availability or many users affected\",\n\t\"critical: production data, security or irreversible operations\",\n];\nexport const AMBIGUITY_LEVELS = [\n\t\"clear: the request states what to do\",\n\t\"partial: some details must be inferred\",\n\t\"open: the goal or approach must be clarified or explored first\",\n];\nexport const REASONING_LEVELS = [\n\t\"recall: answer is direct knowledge\",\n\t\"routine: a known recipe\",\n\t\"multi-step: several dependent steps\",\n\t\"deep: careful analysis of interactions\",\n\t\"novel: design or debugging without a known recipe\",\n];\n\nconst yesNo = (instructions: string, yes: string, no: string): ClassifierQuestion => ({\n\ttype: \"bool\",\n\tinstructions,\n\tcriteria: { true: yes, false: no },\n});\n\nexport const LAYA_QUESTIONS: Record<string, ClassifierQuestion> = {\n\ttask_type: {\n\t\ttype: \"choice\",\n\t\tinstructions: \"What kind of software engineering task does the request ask for?\",\n\t\tcriteria: {\n\t\t\tquestion: \"a question to answer, no change requested\",\n\t\t\tcode_edit: \"a small, explicit change: rename, text, config value, formatting\",\n\t\t\tbug_fix: \"fix behavior that is wrong and reproducible\",\n\t\t\trefactor: \"restructure code without changing behavior\",\n\t\t\tfeature: \"add new behavior or capability\",\n\t\t\ttest: \"write, fix or extend tests\",\n\t\t\tarchitecture: \"design or evaluate structure across modules or systems\",\n\t\t\tdebugging: \"investigate a failure whose cause is unknown\",\n\t\t\tsecurity: \"find or fix a vulnerability, or change auth, secrets or permissions\",\n\t\t\tresearch: \"explore, compare options or explain code without changing it\",\n\t\t\tdocumentation: \"write or update docs, comments, READMEs or changelogs\",\n\t\t},\n\t},\n\tcomplexity: {\n\t\ttype: \"score\",\n\t\tinstructions: \"How complex is the task?\",\n\t\tcriteria: COMPLEXITY_LEVELS,\n\t},\n\tscope: {\n\t\ttype: \"choice\",\n\t\tinstructions: \"How much of the codebase does the task touch?\",\n\t\tcriteria: {\n\t\t\tsingle_line: \"one line or one value\",\n\t\t\tsingle_file: \"one file\",\n\t\t\tmodule: \"several files of one module or package\",\n\t\t\tmulti_module: \"several modules or packages\",\n\t\t\trepository: \"the whole repository\",\n\t\t\tmulti_repository: \"more than one repository or service\",\n\t\t},\n\t},\n\trisk: {\n\t\ttype: \"score\",\n\t\tinstructions: \"How risky is a wrong result?\",\n\t\tcriteria: RISK_LEVELS,\n\t},\n\tambiguity: {\n\t\ttype: \"score\",\n\t\tinstructions: \"How ambiguous is the request?\",\n\t\tcriteria: AMBIGUITY_LEVELS,\n\t},\n\treasoning_requirement: {\n\t\ttype: \"score\",\n\t\tinstructions: \"How much reasoning does the task need?\",\n\t\tcriteria: REASONING_LEVELS,\n\t},\n\tcapability_tier: {\n\t\ttype: \"choice\",\n\t\tinstructions: \"What is the cheapest model capability tier likely to solve the task correctly?\",\n\t\tcriteria: {\n\t\t\tfast: \"small, fast model: trivial edits, lookups, simple questions\",\n\t\t\tbalanced: \"mid-size model: ordinary features, fixes and refactors\",\n\t\t\tstrong: \"large model: subtle bugs, risky or cross-module changes\",\n\t\t\tfrontier: \"most capable model: novel design, hard debugging, critical systems\",\n\t\t},\n\t},\n\treasoning_effort: {\n\t\ttype: \"choice\",\n\t\tinstructions: \"How much reasoning effort should the model spend?\",\n\t\tcriteria: {\n\t\t\tminimal: \"answer or edit directly\",\n\t\t\tlow: \"brief planning\",\n\t\t\tmedium: \"plan the steps before acting\",\n\t\t\thigh: \"analyze alternatives and edge cases\",\n\t\t\textra_high: \"exhaustive analysis of a hard problem\",\n\t\t},\n\t},\n\tagent: {\n\t\ttype: \"choice\",\n\t\tinstructions: \"Which specialist should handle the task?\",\n\t\tcriteria: AGENTS,\n\t},\n\tvalidation_level: {\n\t\ttype: \"choice\",\n\t\tinstructions: \"What validation should confirm the result?\",\n\t\tcriteria: {\n\t\t\tnone: \"nothing to validate: answers, explanations, plans\",\n\t\t\tsyntax: \"check formatting or syntax only: docs, config, text\",\n\t\t\tcompile: \"type check or build\",\n\t\t\tunit_test: \"run unit tests of the changed code\",\n\t\t\tintegration_test: \"run integration or end-to-end tests\",\n\t\t\treview: \"careful review of the change: security, architecture, data\",\n\t\t},\n\t},\n\t...Object.fromEntries(\n\t\tObject.entries(TOOL_REQUIREMENTS).map(([id, instructions]) => [\n\t\t\tid,\n\t\t\tyesNo(instructions, \"yes, the task needs it\", \"no, the task does not need it\"),\n\t\t]),\n\t),\n\tsecurity_sensitive: yesNo(\n\t\t\"Does the task touch authentication, authorization, secrets, payments, security vulnerabilities, or production data migrations?\",\n\t\t\"yes, it touches one of these\",\n\t\t\"no\",\n\t),\n};\n\n/** The questions in laya-trainer's `.laya/decisions.json` format (`bool` is `noul` there). */\nexport function layaDecisionsFile(): {\n\tdescription: string;\n\tlanguage: string;\n\tdecisions: Record<string, unknown>;\n} {\n\treturn {\n\t\tdescription:\n\t\t\t\"Relay adaptive execution intelligence: task profile, capability tier, effort, agent, tools and validation for a coding request.\",\n\t\tlanguage: \"auto\",\n\t\tdecisions: Object.fromEntries(\n\t\t\tObject.entries(LAYA_QUESTIONS).map(([id, question]) => [\n\t\t\t\tid,\n\t\t\t\tquestion.type === \"bool\" ? { ...question, type: \"noul\" } : question,\n\t\t\t]),\n\t\t),\n\t};\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { TaskAssessment } from "./assessment.ts";
|
|
2
|
+
import type { PolicyDecision } from "./policy.ts";
|
|
3
|
+
import { type AgentId, type ToolRequirement } from "./questions.ts";
|
|
4
|
+
export interface SkillInfo {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}
|
|
8
|
+
/** Up to `limit` skills whose name or description matches the agent's keyword family or the request. */
|
|
9
|
+
export declare function selectSkills(skills: readonly SkillInfo[], agent: AgentId, request: string, limit?: number): string[];
|
|
10
|
+
/**
|
|
11
|
+
* Tools to deactivate for this task: tools that match only requirements the task does not have.
|
|
12
|
+
* `bash` serves shell, tests and git, so it stays when any of them is needed.
|
|
13
|
+
*/
|
|
14
|
+
export declare function unneededTools(activeTools: readonly string[], tools: Record<ToolRequirement, boolean>): string[];
|
|
15
|
+
/** The advisory plan sent to the model next to the user's message. */
|
|
16
|
+
export declare function renderPlanMessage(assessment: TaskAssessment, policy: PolicyDecision, skills: readonly string[], enforcedTools: readonly string[]): string;
|
|
17
|
+
//# sourceMappingURL=routers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routers.d.ts","sourceRoot":"","sources":["../../../src/extensions/laya/routers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAU,KAAK,OAAO,EAAE,KAAK,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AA2ClG,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,wGAAwG;AACxG,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAe/G;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAK/G;AAqBD,sEAAsE;AACtE,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,aAAa,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CA0BR"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { AGENTS } from "./questions.js";
|
|
2
|
+
/**
|
|
3
|
+
* Agent, skill and tool routing. Relay has no agent registry, so the agent is a role the plan
|
|
4
|
+
* message asks the model to take. Skills are reduced hierarchically: the agent picks a keyword
|
|
5
|
+
* family, and only skills matching it are named. Tools are advised by default; with
|
|
6
|
+
* `laya.toolRouting: "enforce"` the tools a task clearly does not need are deactivated.
|
|
7
|
+
*/
|
|
8
|
+
const AGENT_SKILL_KEYWORDS = {
|
|
9
|
+
"software-engineer": [
|
|
10
|
+
"code",
|
|
11
|
+
"implement",
|
|
12
|
+
"refactor",
|
|
13
|
+
"typescript",
|
|
14
|
+
"javascript",
|
|
15
|
+
"python",
|
|
16
|
+
"java",
|
|
17
|
+
"golang",
|
|
18
|
+
"rust",
|
|
19
|
+
],
|
|
20
|
+
"backend-engineer": ["api", "backend", "server", "service", "rest", "graphql", "queue", "spring", "node"],
|
|
21
|
+
"frontend-engineer": [
|
|
22
|
+
"frontend",
|
|
23
|
+
"ui",
|
|
24
|
+
"ux",
|
|
25
|
+
"css",
|
|
26
|
+
"react",
|
|
27
|
+
"vue",
|
|
28
|
+
"angular",
|
|
29
|
+
"component",
|
|
30
|
+
"accessibility",
|
|
31
|
+
"design",
|
|
32
|
+
],
|
|
33
|
+
"mobile-engineer": ["mobile", "android", "ios", "swift", "kotlin", "flutter", "react-native"],
|
|
34
|
+
"devops-engineer": ["devops", "ci", "deploy", "docker", "kubernetes", "infra", "terraform", "release"],
|
|
35
|
+
"database-engineer": ["database", "sql", "postgres", "mysql", "migration", "schema", "query", "cockroach"],
|
|
36
|
+
"security-engineer": ["security", "auth", "oauth", "vulnerab", "secret", "crypto", "audit", "compliance"],
|
|
37
|
+
"software-architect": ["architecture", "system-design", "design", "ddd", "distributed", "event", "adr"],
|
|
38
|
+
"qa-engineer": ["test", "qa", "testing", "coverage", "e2e", "playwright", "vitest", "jest"],
|
|
39
|
+
researcher: ["research", "explain", "analysis", "docs", "compare", "documentation"],
|
|
40
|
+
};
|
|
41
|
+
/** Up to `limit` skills whose name or description matches the agent's keyword family or the request. */
|
|
42
|
+
export function selectSkills(skills, agent, request, limit = 3) {
|
|
43
|
+
const keywords = AGENT_SKILL_KEYWORDS[agent];
|
|
44
|
+
const requestWords = new Set(request.toLowerCase().match(/[a-z0-9-]{4,}/g) ?? []);
|
|
45
|
+
return skills
|
|
46
|
+
.map((skill) => {
|
|
47
|
+
const name = skill.name.toLowerCase();
|
|
48
|
+
const text = `${name} ${skill.description.toLowerCase()}`;
|
|
49
|
+
const keywordHits = keywords.filter((keyword) => text.includes(keyword)).length;
|
|
50
|
+
const requestHits = name.split(/[^a-z0-9]+/).filter((part) => requestWords.has(part)).length;
|
|
51
|
+
return { name: skill.name, score: keywordHits + 2 * requestHits };
|
|
52
|
+
})
|
|
53
|
+
.filter((skill) => skill.score > 0)
|
|
54
|
+
.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name))
|
|
55
|
+
.slice(0, limit)
|
|
56
|
+
.map((skill) => skill.name);
|
|
57
|
+
}
|
|
58
|
+
/** Tool name patterns per requirement. Tools matching none of them are never deactivated. */
|
|
59
|
+
const TOOL_PATTERNS = {
|
|
60
|
+
requires_write: /^(edit|write|multi_?edit|apply_patch)$/,
|
|
61
|
+
requires_shell: /^bash$/,
|
|
62
|
+
requires_tests: /^bash$/,
|
|
63
|
+
requires_git: /^bash$/,
|
|
64
|
+
requires_web: /web|fetch|search_web|http/,
|
|
65
|
+
requires_browser: /browser|playwright|puppeteer/,
|
|
66
|
+
requires_database: /sql|database|\bdb\b|postgres|mysql/,
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Tools to deactivate for this task: tools that match only requirements the task does not have.
|
|
70
|
+
* `bash` serves shell, tests and git, so it stays when any of them is needed.
|
|
71
|
+
*/
|
|
72
|
+
export function unneededTools(activeTools, tools) {
|
|
73
|
+
return activeTools.filter((name) => {
|
|
74
|
+
const matched = Object.keys(TOOL_PATTERNS).filter((id) => TOOL_PATTERNS[id].test(name));
|
|
75
|
+
return matched.length > 0 && matched.every((id) => !tools[id]);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const VALIDATION_HINTS = {
|
|
79
|
+
none: "no check needed",
|
|
80
|
+
syntax: "check formatting or syntax of what changed",
|
|
81
|
+
compile: "run the type check or build",
|
|
82
|
+
unit_test: "run the unit tests that cover the change",
|
|
83
|
+
integration_test: "run the integration or end-to-end tests of the affected flow",
|
|
84
|
+
review: "review the change for security, data and architectural impact, then run the relevant tests",
|
|
85
|
+
};
|
|
86
|
+
const TOOL_LABELS = {
|
|
87
|
+
requires_write: "file edits",
|
|
88
|
+
requires_shell: "shell",
|
|
89
|
+
requires_tests: "tests",
|
|
90
|
+
requires_web: "web",
|
|
91
|
+
requires_browser: "browser",
|
|
92
|
+
requires_database: "database",
|
|
93
|
+
requires_git: "git",
|
|
94
|
+
};
|
|
95
|
+
/** The advisory plan sent to the model next to the user's message. */
|
|
96
|
+
export function renderPlanMessage(assessment, policy, skills, enforcedTools) {
|
|
97
|
+
const percent = (value) => `${Math.round(value * 100)}%`;
|
|
98
|
+
const needed = Object.keys(TOOL_LABELS).filter((id) => assessment.tools[id]);
|
|
99
|
+
const notNeeded = Object.keys(TOOL_LABELS).filter((id) => !assessment.tools[id]);
|
|
100
|
+
const lines = [
|
|
101
|
+
"[laya:plan] Execution plan from the harness router for this request (guidance, not a constraint):",
|
|
102
|
+
`- Task: ${assessment.task.type.replaceAll("_", " ")}, scope ${assessment.task.scope.replaceAll("_", " ")}, complexity ${percent(assessment.task.complexity)}, risk ${percent(assessment.task.risk)}.`,
|
|
103
|
+
`- Role: act as ${assessment.agent} (${AGENTS[assessment.agent]}).`,
|
|
104
|
+
];
|
|
105
|
+
if (skills.length > 0)
|
|
106
|
+
lines.push(`- Skills likely relevant: ${skills.join(", ")}. Load one only when a step needs it.`);
|
|
107
|
+
lines.push(`- Tools: ${needed.length > 0 ? `needs ${needed.map((id) => TOOL_LABELS[id]).join(", ")}` : "read-only"}${notNeeded.length > 0 ? `; not expected: ${notNeeded.map((id) => TOOL_LABELS[id]).join(", ")}` : ""}.`);
|
|
108
|
+
if (enforcedTools.length > 0)
|
|
109
|
+
lines.push(`- Deactivated for this request: ${enforcedTools.join(", ")}.`);
|
|
110
|
+
if (policy.validation.level !== "none") {
|
|
111
|
+
lines.push(`- Validation${policy.validation.required ? " (required)" : ""}: ${VALIDATION_HINTS[policy.validation.level]} before reporting completion.`);
|
|
112
|
+
}
|
|
113
|
+
if (policy.rules.length > 0)
|
|
114
|
+
lines.push(`- Sensitive area: ${policy.rules.join(", ")}. Prefer the safest correct change.`);
|
|
115
|
+
if (assessment.task.ambiguity >= 0.75)
|
|
116
|
+
lines.push("- The request is open: confirm the goal before large changes.");
|
|
117
|
+
return lines.join("\n");
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=routers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routers.js","sourceRoot":"","sources":["../../../src/extensions/laya/routers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TaskAssessment } from \"./assessment.ts\";\nimport type { PolicyDecision } from \"./policy.ts\";\nimport { AGENTS, type AgentId, type ToolRequirement, type ValidationLevel } from \"./questions.ts\";\n\n/**\n * Agent, skill and tool routing. Relay has no agent registry, so the agent is a role the plan\n * message asks the model to take. Skills are reduced hierarchically: the agent picks a keyword\n * family, and only skills matching it are named. Tools are advised by default; with\n * `laya.toolRouting: \"enforce\"` the tools a task clearly does not need are deactivated.\n */\n\nconst AGENT_SKILL_KEYWORDS: Record<AgentId, string[]> = {\n\t\"software-engineer\": [\n\t\t\"code\",\n\t\t\"implement\",\n\t\t\"refactor\",\n\t\t\"typescript\",\n\t\t\"javascript\",\n\t\t\"python\",\n\t\t\"java\",\n\t\t\"golang\",\n\t\t\"rust\",\n\t],\n\t\"backend-engineer\": [\"api\", \"backend\", \"server\", \"service\", \"rest\", \"graphql\", \"queue\", \"spring\", \"node\"],\n\t\"frontend-engineer\": [\n\t\t\"frontend\",\n\t\t\"ui\",\n\t\t\"ux\",\n\t\t\"css\",\n\t\t\"react\",\n\t\t\"vue\",\n\t\t\"angular\",\n\t\t\"component\",\n\t\t\"accessibility\",\n\t\t\"design\",\n\t],\n\t\"mobile-engineer\": [\"mobile\", \"android\", \"ios\", \"swift\", \"kotlin\", \"flutter\", \"react-native\"],\n\t\"devops-engineer\": [\"devops\", \"ci\", \"deploy\", \"docker\", \"kubernetes\", \"infra\", \"terraform\", \"release\"],\n\t\"database-engineer\": [\"database\", \"sql\", \"postgres\", \"mysql\", \"migration\", \"schema\", \"query\", \"cockroach\"],\n\t\"security-engineer\": [\"security\", \"auth\", \"oauth\", \"vulnerab\", \"secret\", \"crypto\", \"audit\", \"compliance\"],\n\t\"software-architect\": [\"architecture\", \"system-design\", \"design\", \"ddd\", \"distributed\", \"event\", \"adr\"],\n\t\"qa-engineer\": [\"test\", \"qa\", \"testing\", \"coverage\", \"e2e\", \"playwright\", \"vitest\", \"jest\"],\n\tresearcher: [\"research\", \"explain\", \"analysis\", \"docs\", \"compare\", \"documentation\"],\n};\n\nexport interface SkillInfo {\n\tname: string;\n\tdescription: string;\n}\n\n/** Up to `limit` skills whose name or description matches the agent's keyword family or the request. */\nexport function selectSkills(skills: readonly SkillInfo[], agent: AgentId, request: string, limit = 3): string[] {\n\tconst keywords = AGENT_SKILL_KEYWORDS[agent];\n\tconst requestWords = new Set(request.toLowerCase().match(/[a-z0-9-]{4,}/g) ?? []);\n\treturn skills\n\t\t.map((skill) => {\n\t\t\tconst name = skill.name.toLowerCase();\n\t\t\tconst text = `${name} ${skill.description.toLowerCase()}`;\n\t\t\tconst keywordHits = keywords.filter((keyword) => text.includes(keyword)).length;\n\t\t\tconst requestHits = name.split(/[^a-z0-9]+/).filter((part) => requestWords.has(part)).length;\n\t\t\treturn { name: skill.name, score: keywordHits + 2 * requestHits };\n\t\t})\n\t\t.filter((skill) => skill.score > 0)\n\t\t.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name))\n\t\t.slice(0, limit)\n\t\t.map((skill) => skill.name);\n}\n\n/** Tool name patterns per requirement. Tools matching none of them are never deactivated. */\nconst TOOL_PATTERNS: Record<ToolRequirement, RegExp> = {\n\trequires_write: /^(edit|write|multi_?edit|apply_patch)$/,\n\trequires_shell: /^bash$/,\n\trequires_tests: /^bash$/,\n\trequires_git: /^bash$/,\n\trequires_web: /web|fetch|search_web|http/,\n\trequires_browser: /browser|playwright|puppeteer/,\n\trequires_database: /sql|database|\\bdb\\b|postgres|mysql/,\n};\n\n/**\n * Tools to deactivate for this task: tools that match only requirements the task does not have.\n * `bash` serves shell, tests and git, so it stays when any of them is needed.\n */\nexport function unneededTools(activeTools: readonly string[], tools: Record<ToolRequirement, boolean>): string[] {\n\treturn activeTools.filter((name) => {\n\t\tconst matched = (Object.keys(TOOL_PATTERNS) as ToolRequirement[]).filter((id) => TOOL_PATTERNS[id].test(name));\n\t\treturn matched.length > 0 && matched.every((id) => !tools[id]);\n\t});\n}\n\nconst VALIDATION_HINTS: Record<ValidationLevel, string> = {\n\tnone: \"no check needed\",\n\tsyntax: \"check formatting or syntax of what changed\",\n\tcompile: \"run the type check or build\",\n\tunit_test: \"run the unit tests that cover the change\",\n\tintegration_test: \"run the integration or end-to-end tests of the affected flow\",\n\treview: \"review the change for security, data and architectural impact, then run the relevant tests\",\n};\n\nconst TOOL_LABELS: Record<ToolRequirement, string> = {\n\trequires_write: \"file edits\",\n\trequires_shell: \"shell\",\n\trequires_tests: \"tests\",\n\trequires_web: \"web\",\n\trequires_browser: \"browser\",\n\trequires_database: \"database\",\n\trequires_git: \"git\",\n};\n\n/** The advisory plan sent to the model next to the user's message. */\nexport function renderPlanMessage(\n\tassessment: TaskAssessment,\n\tpolicy: PolicyDecision,\n\tskills: readonly string[],\n\tenforcedTools: readonly string[],\n): string {\n\tconst percent = (value: number) => `${Math.round(value * 100)}%`;\n\tconst needed = (Object.keys(TOOL_LABELS) as ToolRequirement[]).filter((id) => assessment.tools[id]);\n\tconst notNeeded = (Object.keys(TOOL_LABELS) as ToolRequirement[]).filter((id) => !assessment.tools[id]);\n\tconst lines = [\n\t\t\"[laya:plan] Execution plan from the harness router for this request (guidance, not a constraint):\",\n\t\t`- Task: ${assessment.task.type.replaceAll(\"_\", \" \")}, scope ${assessment.task.scope.replaceAll(\"_\", \" \")}, complexity ${percent(assessment.task.complexity)}, risk ${percent(assessment.task.risk)}.`,\n\t\t`- Role: act as ${assessment.agent} (${AGENTS[assessment.agent]}).`,\n\t];\n\tif (skills.length > 0)\n\t\tlines.push(`- Skills likely relevant: ${skills.join(\", \")}. Load one only when a step needs it.`);\n\tlines.push(\n\t\t`- Tools: ${needed.length > 0 ? `needs ${needed.map((id) => TOOL_LABELS[id]).join(\", \")}` : \"read-only\"}${\n\t\t\tnotNeeded.length > 0 ? `; not expected: ${notNeeded.map((id) => TOOL_LABELS[id]).join(\", \")}` : \"\"\n\t\t}.`,\n\t);\n\tif (enforcedTools.length > 0) lines.push(`- Deactivated for this request: ${enforcedTools.join(\", \")}.`);\n\tif (policy.validation.level !== \"none\") {\n\t\tlines.push(\n\t\t\t`- Validation${policy.validation.required ? \" (required)\" : \"\"}: ${VALIDATION_HINTS[policy.validation.level]} before reporting completion.`,\n\t\t);\n\t}\n\tif (policy.rules.length > 0)\n\t\tlines.push(`- Sensitive area: ${policy.rules.join(\", \")}. Prefer the safest correct change.`);\n\tif (assessment.task.ambiguity >= 0.75) lines.push(\"- The request is open: confirm the goal before large changes.\");\n\treturn lines.join(\"\\n\");\n}\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Laya runtime: the trained model, a Python environment with the `laya` package, and the
|
|
3
|
+
* script that serves them. The npm package carries none of these (the model is 650 MB, the
|
|
4
|
+
* environment a few GB); `setupLayaRuntime()` fetches them on first use into the agent directory.
|
|
5
|
+
*/
|
|
6
|
+
export interface LayaModelFile {
|
|
7
|
+
/** Path inside the model directory, with forward slashes. */
|
|
8
|
+
path: string;
|
|
9
|
+
/** Flat file name of the release asset. */
|
|
10
|
+
asset: string;
|
|
11
|
+
size: number;
|
|
12
|
+
sha256: string;
|
|
13
|
+
}
|
|
14
|
+
export interface LayaModelManifest {
|
|
15
|
+
version: string;
|
|
16
|
+
/** pip requirement for the Laya runtime. */
|
|
17
|
+
layaPackage: string;
|
|
18
|
+
/** Directory URL the assets are downloaded from, ending in a slash. */
|
|
19
|
+
baseUrl: string;
|
|
20
|
+
files: LayaModelFile[];
|
|
21
|
+
}
|
|
22
|
+
export type ExecFunction = (command: string, args: string[], options?: {
|
|
23
|
+
signal?: AbortSignal;
|
|
24
|
+
timeout?: number;
|
|
25
|
+
}) => Promise<{
|
|
26
|
+
stdout: string;
|
|
27
|
+
stderr: string;
|
|
28
|
+
code: number;
|
|
29
|
+
}>;
|
|
30
|
+
export interface LayaPaths {
|
|
31
|
+
home: string;
|
|
32
|
+
model: string;
|
|
33
|
+
venv: string;
|
|
34
|
+
venvPython: string;
|
|
35
|
+
serveScript: string;
|
|
36
|
+
log: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function layaPaths(home: string, manifest: LayaModelManifest): LayaPaths;
|
|
39
|
+
export type LayaRuntimeStatus = "ready" | "missing-environment" | "missing-model";
|
|
40
|
+
/** Files of the model that are absent or have the wrong size. A full hash check happens at download. */
|
|
41
|
+
export declare function missingModelFiles(manifest: LayaModelManifest, paths: LayaPaths): LayaModelFile[];
|
|
42
|
+
export declare function runtimeStatus(manifest: LayaModelManifest, paths: LayaPaths): LayaRuntimeStatus;
|
|
43
|
+
export interface DownloadOptions {
|
|
44
|
+
fetch?: typeof fetch;
|
|
45
|
+
signal?: AbortSignal;
|
|
46
|
+
onProgress?: (file: LayaModelFile, received: number) => void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Downloads the files that are missing or wrong, verifying each against its manifest hash before it
|
|
50
|
+
* becomes visible: a download is written to a `.part` file and renamed only when the hash matches.
|
|
51
|
+
*/
|
|
52
|
+
export declare function downloadModel(manifest: LayaModelManifest, paths: LayaPaths, options?: DownloadOptions): Promise<void>;
|
|
53
|
+
/** A Python 3.10 to 3.13 interpreter (the range torch publishes wheels for), as command plus leading args. */
|
|
54
|
+
export declare function findPython(exec: ExecFunction, override?: string): Promise<[string, string[]] | undefined>;
|
|
55
|
+
export interface SetupOptions {
|
|
56
|
+
exec: ExecFunction;
|
|
57
|
+
home: string;
|
|
58
|
+
manifest: LayaModelManifest;
|
|
59
|
+
python?: string;
|
|
60
|
+
fetch?: typeof fetch;
|
|
61
|
+
signal?: AbortSignal;
|
|
62
|
+
report: (message: string) => void;
|
|
63
|
+
}
|
|
64
|
+
/** Creates the environment, installs torch and Laya, writes the server script and downloads the model. */
|
|
65
|
+
export declare function setupLayaRuntime(options: SetupOptions): Promise<LayaPaths>;
|
|
66
|
+
/** Serves the model with the System One protocol Relay's `typesafe-system-one` classifier speaks. */
|
|
67
|
+
export declare const SERVE_SCRIPT = "import argparse\n\nimport laya\nimport torch\nimport uvicorn\nfrom fastapi import FastAPI, HTTPException\n\nparser = argparse.ArgumentParser()\nparser.add_argument(\"--model\", required=True)\nparser.add_argument(\"--host\", default=\"127.0.0.1\")\nparser.add_argument(\"--port\", type=int, default=8000)\nargs = parser.parse_args()\n\nagent = laya.load(args.model, device=\"cuda\" if torch.cuda.is_available() else \"cpu\")\napp = FastAPI(title=\"relay-laya\")\n\n\n@app.get(\"/health\")\ndef health():\n return {\"ok\": True, \"model\": args.model}\n\n\n@app.post(\"/v1/systemone\")\ndef system_one(body: dict):\n if \"state\" not in body or not body.get(\"questions\"):\n raise HTTPException(422, \"send 'state' and 'questions'\")\n return agent.predict(body[\"state\"], body[\"questions\"])\n\n\nuvicorn.run(app, host=args.host, port=args.port, log_level=\"warning\")\n";
|
|
68
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/extensions/laya/runtime.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC7B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAChD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE/D,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAc9E;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAElF,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,GAAG,aAAa,EAAE,CAShG;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAG9F;AAED,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAClC,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqCf;AAQD,8GAA8G;AAC9G,wBAAsB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAgB/G;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AA6BD,0GAA0G;AAC1G,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAqDhF;AAED,qGAAqG;AACrG,eAAO,MAAM,YAAY,83BA8BxB,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { createWriteStream, existsSync, mkdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { Readable, Transform } from "node:stream";
|
|
5
|
+
import { pipeline } from "node:stream/promises";
|
|
6
|
+
export function layaPaths(home, manifest) {
|
|
7
|
+
const venv = join(home, "venv");
|
|
8
|
+
return {
|
|
9
|
+
home,
|
|
10
|
+
model: join(home, "models", manifest.version),
|
|
11
|
+
venv,
|
|
12
|
+
venvPython: join(venv, process.platform === "win32" ? "Scripts" : "bin", process.platform === "win32" ? "python.exe" : "python"),
|
|
13
|
+
serveScript: join(home, "serve.py"),
|
|
14
|
+
log: join(home, "server.log"),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/** Files of the model that are absent or have the wrong size. A full hash check happens at download. */
|
|
18
|
+
export function missingModelFiles(manifest, paths) {
|
|
19
|
+
return manifest.files.filter((file) => {
|
|
20
|
+
const path = join(paths.model, ...file.path.split("/"));
|
|
21
|
+
try {
|
|
22
|
+
return statSync(path).size !== file.size;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function runtimeStatus(manifest, paths) {
|
|
30
|
+
if (!existsSync(paths.venvPython) || !existsSync(paths.serveScript))
|
|
31
|
+
return "missing-environment";
|
|
32
|
+
return missingModelFiles(manifest, paths).length > 0 ? "missing-model" : "ready";
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Downloads the files that are missing or wrong, verifying each against its manifest hash before it
|
|
36
|
+
* becomes visible: a download is written to a `.part` file and renamed only when the hash matches.
|
|
37
|
+
*/
|
|
38
|
+
export async function downloadModel(manifest, paths, options = {}) {
|
|
39
|
+
const request = options.fetch ?? globalThis.fetch;
|
|
40
|
+
for (const file of missingModelFiles(manifest, paths)) {
|
|
41
|
+
const target = join(paths.model, ...file.path.split("/"));
|
|
42
|
+
const partial = `${target}.part`;
|
|
43
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
44
|
+
const response = await request(new URL(file.asset, manifest.baseUrl), { signal: options.signal });
|
|
45
|
+
if (!response.ok || !response.body) {
|
|
46
|
+
throw new Error(`Downloading ${file.asset} failed: HTTP ${response.status}`);
|
|
47
|
+
}
|
|
48
|
+
const hash = createHash("sha256");
|
|
49
|
+
let received = 0;
|
|
50
|
+
const meter = new Transform({
|
|
51
|
+
transform(chunk, _encoding, callback) {
|
|
52
|
+
hash.update(chunk);
|
|
53
|
+
received += chunk.length;
|
|
54
|
+
options.onProgress?.(file, received);
|
|
55
|
+
callback(null, chunk);
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
try {
|
|
59
|
+
await pipeline(Readable.fromWeb(response.body), meter, createWriteStream(partial), { signal: options.signal });
|
|
60
|
+
const digest = hash.digest("hex");
|
|
61
|
+
if (received !== file.size || digest !== file.sha256) {
|
|
62
|
+
throw new Error(`${file.asset} does not match the manifest (size ${received}, sha256 ${digest})`);
|
|
63
|
+
}
|
|
64
|
+
renameSync(partial, target);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
rmSync(partial, { force: true });
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const PYTHON_CANDIDATES = [
|
|
73
|
+
["python3", []],
|
|
74
|
+
["python", []],
|
|
75
|
+
["py", ["-3"]],
|
|
76
|
+
];
|
|
77
|
+
/** A Python 3.10 to 3.13 interpreter (the range torch publishes wheels for), as command plus leading args. */
|
|
78
|
+
export async function findPython(exec, override) {
|
|
79
|
+
const candidates = override ? [[override, []]] : PYTHON_CANDIDATES;
|
|
80
|
+
for (const [command, leading] of candidates) {
|
|
81
|
+
try {
|
|
82
|
+
const result = await exec(command, [...leading, "-c", "import sys; print(sys.version_info[0], sys.version_info[1])"], { timeout: 15_000 });
|
|
83
|
+
const [major, minor] = result.stdout.trim().split(" ").map(Number);
|
|
84
|
+
if (result.code === 0 && major === 3 && minor >= 10 && minor <= 13)
|
|
85
|
+
return [command, leading];
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Not installed.
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
const PIP_TIMEOUT_MS = 30 * 60_000;
|
|
94
|
+
async function run(exec, command, args, options, failure) {
|
|
95
|
+
const result = await exec(command, args, options);
|
|
96
|
+
if (result.code !== 0) {
|
|
97
|
+
throw new Error(`${failure}: ${(result.stderr || result.stdout).trim().split("\n").slice(-4).join(" ")}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Torch wheel index: a CUDA build only where an NVIDIA GPU exists, the small CPU build otherwise. */
|
|
101
|
+
async function torchArgs(exec) {
|
|
102
|
+
if (process.platform === "darwin")
|
|
103
|
+
return ["torch"];
|
|
104
|
+
let gpu = false;
|
|
105
|
+
try {
|
|
106
|
+
gpu = (await exec("nvidia-smi", ["-L"], { timeout: 10_000 })).code === 0;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// No NVIDIA driver.
|
|
110
|
+
}
|
|
111
|
+
return ["torch", "--index-url", `https://download.pytorch.org/whl/${gpu ? "cu128" : "cpu"}`];
|
|
112
|
+
}
|
|
113
|
+
/** Creates the environment, installs torch and Laya, writes the server script and downloads the model. */
|
|
114
|
+
export async function setupLayaRuntime(options) {
|
|
115
|
+
const { exec, report, signal } = options;
|
|
116
|
+
const paths = layaPaths(options.home, options.manifest);
|
|
117
|
+
mkdirSync(paths.home, { recursive: true });
|
|
118
|
+
const importable = async () => existsSync(paths.venvPython) &&
|
|
119
|
+
(await exec(paths.venvPython, ["-c", "import laya, torch, fastapi, uvicorn"], { timeout: 120_000 })).code === 0;
|
|
120
|
+
if (!(await importable())) {
|
|
121
|
+
const python = await findPython(exec, options.python);
|
|
122
|
+
if (!python) {
|
|
123
|
+
throw new Error("Laya needs Python 3.10 to 3.13. Install it, or set laya.python to its path.");
|
|
124
|
+
}
|
|
125
|
+
report("Creating the Python environment");
|
|
126
|
+
await run(exec, python[0], [...python[1], "-m", "venv", paths.venv], { signal, timeout: 120_000 }, "Creating the environment failed");
|
|
127
|
+
const pip = [paths.venvPython, "-m", "pip", "install", "-q", "--disable-pip-version-check"];
|
|
128
|
+
report("Installing torch (large download)");
|
|
129
|
+
await run(exec, pip[0], [...pip.slice(1), ...(await torchArgs(exec))], { signal, timeout: PIP_TIMEOUT_MS }, "Installing torch failed");
|
|
130
|
+
report("Installing Laya");
|
|
131
|
+
await run(exec, pip[0], [...pip.slice(1), options.manifest.layaPackage, "fastapi", "uvicorn"], { signal, timeout: PIP_TIMEOUT_MS }, "Installing Laya failed");
|
|
132
|
+
}
|
|
133
|
+
writeFileSync(paths.serveScript, SERVE_SCRIPT, "utf8");
|
|
134
|
+
let lastReported = 0;
|
|
135
|
+
await downloadModel(options.manifest, paths, {
|
|
136
|
+
fetch: options.fetch,
|
|
137
|
+
signal,
|
|
138
|
+
onProgress: (file, received) => {
|
|
139
|
+
if (file.size < 10_000_000 || received - lastReported < 25_000_000)
|
|
140
|
+
return;
|
|
141
|
+
lastReported = received;
|
|
142
|
+
report(`Downloading the Laya model: ${file.asset} ${Math.round((received / file.size) * 100)}%`);
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
return paths;
|
|
146
|
+
}
|
|
147
|
+
/** Serves the model with the System One protocol Relay's `typesafe-system-one` classifier speaks. */
|
|
148
|
+
export const SERVE_SCRIPT = `import argparse
|
|
149
|
+
|
|
150
|
+
import laya
|
|
151
|
+
import torch
|
|
152
|
+
import uvicorn
|
|
153
|
+
from fastapi import FastAPI, HTTPException
|
|
154
|
+
|
|
155
|
+
parser = argparse.ArgumentParser()
|
|
156
|
+
parser.add_argument("--model", required=True)
|
|
157
|
+
parser.add_argument("--host", default="127.0.0.1")
|
|
158
|
+
parser.add_argument("--port", type=int, default=8000)
|
|
159
|
+
args = parser.parse_args()
|
|
160
|
+
|
|
161
|
+
agent = laya.load(args.model, device="cuda" if torch.cuda.is_available() else "cpu")
|
|
162
|
+
app = FastAPI(title="relay-laya")
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
@app.get("/health")
|
|
166
|
+
def health():
|
|
167
|
+
return {"ok": True, "model": args.model}
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@app.post("/v1/systemone")
|
|
171
|
+
def system_one(body: dict):
|
|
172
|
+
if "state" not in body or not body.get("questions"):
|
|
173
|
+
raise HTTPException(422, "send 'state' and 'questions'")
|
|
174
|
+
return agent.predict(body["state"], body["questions"])
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
uvicorn.run(app, host=args.host, port=args.port, log_level="warning")
|
|
178
|
+
`;
|
|
179
|
+
//# sourceMappingURL=runtime.js.map
|