@orion-agents/orion-code 0.3.2 → 0.3.4
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 +83 -0
- package/README.md +46 -18
- package/README.zh-CN.md +36 -16
- package/dist/runtime/agent-runtime-controller.d.ts +1 -0
- package/dist/runtime/agent-runtime-controller.js +92 -41
- package/dist/runtime/capability-receipt-journal.js +1 -1
- package/dist/runtime/durable-tool-receipt-reader.js +1 -1
- package/dist/runtime/legacy-thread-materializer.js +2 -2
- package/dist/runtime/orion-runtime-v1.d.ts +2 -1
- package/dist/runtime/orion-runtime-v1.js +18 -16
- package/dist/runtime/orion-session-runner.d.ts +2 -0
- package/dist/runtime/orion-session-runner.js +12 -4
- package/dist/runtime/product-bootstrap.d.ts +6 -0
- package/dist/runtime/product-bootstrap.js +389 -337
- package/dist/runtime/product-orion-runtime.d.ts +5 -0
- package/dist/runtime/product-orion-runtime.js +2 -0
- package/dist/runtime/release-receipts.d.ts +7 -3
- package/dist/runtime/release-receipts.js +79 -1
- package/dist/runtime/step-snapshot.d.ts +12 -0
- package/dist/runtime/step-snapshot.js +14 -1
- package/dist/runtime/subagent-thread-runtime.js +1 -1
- package/dist/runtime/thread-event-store.d.ts +10 -1
- package/dist/runtime/thread-event-store.js +48 -12
- package/dist/runtime/thread-projection.d.ts +19 -0
- package/dist/runtime/thread-projection.js +12 -0
- package/dist/runtime/thread-runtime.d.ts +2 -2
- package/dist/runtime/thread-runtime.js +2 -2
- package/dist/runtime/thread-session-index.d.ts +17 -1
- package/dist/runtime/thread-session-index.js +89 -6
- package/dist/runtime/thread-session-view.d.ts +4 -1
- package/dist/runtime/thread-session-view.js +5 -2
- package/dist/runtime/thread-ui-adapter.js +10 -3
- package/dist/runtime/tool-gateway.js +1 -0
- package/dist/runtime/turn-commit.js +1 -1
- package/dist/runtime/ui-events.d.ts +3 -0
- package/dist/runtime/workspace-runtime-kernel.d.ts +67 -0
- package/dist/runtime/workspace-runtime-kernel.js +148 -0
- package/dist/services/global-config.d.ts +2 -0
- package/dist/services/global-config.js +7 -1
- package/dist/services/provider-resilience/coordinator.d.ts +3 -1
- package/dist/services/provider-resilience/coordinator.js +23 -1
- package/dist/services/provider-resilience/request-gate.js +7 -2
- package/dist/services/redaction.js +19 -2
- package/dist/services/settings-coordinator.d.ts +3 -1
- package/dist/services/settings-coordinator.js +40 -8
- package/dist/services/settings-document-repository.d.ts +8 -1
- package/dist/services/settings-document-repository.js +22 -1
- package/dist/tui-ui/transcript-inspector-layout.js +13 -6
- package/dist/web/event-hub.d.ts +2 -0
- package/dist/web/event-hub.js +43 -6
- package/dist/web/file-read-service.d.ts +2 -0
- package/dist/web/file-read-service.js +39 -12
- package/dist/web/git-read-model-service.js +7 -0
- package/dist/web/protocol.d.ts +51 -3
- package/dist/web/protocol.js +38 -2
- package/dist/web/review-service.d.ts +1 -0
- package/dist/web/review-service.js +1 -0
- package/dist/web/server.js +30 -6
- package/dist/web/session-runtime-registry.d.ts +124 -0
- package/dist/web/session-runtime-registry.js +448 -0
- package/dist/web/terminal-manager.js +23 -4
- package/dist/web/terminal-server.js +35 -6
- package/dist/web/workbench-controller.d.ts +27 -3
- package/dist/web/workbench-controller.js +557 -134
- package/dist/web/workspace-mutation-arbiter.d.ts +54 -0
- package/dist/web/workspace-mutation-arbiter.js +267 -0
- package/dist/web-client/assets/{DiffViewer-eaQNsnCh.js → DiffViewer-D6mG729y.js} +1 -1
- package/dist/web-client/assets/FilesPanel-CCDoAZ1J.js +2 -0
- package/dist/web-client/assets/{GitPanel-CnU4XVr7.js → GitPanel-DtNgiH7A.js} +1 -1
- package/dist/web-client/assets/ReviewPanel-CKEBSt6P.js +1 -0
- package/dist/web-client/assets/{TerminalPanel-Q5mSSsoK.js → TerminalPanel-CNxMaBLp.js} +14 -14
- package/dist/web-client/assets/index-BBvNg3By.css +1 -0
- package/dist/web-client/assets/index-C6TDJwMC.js +17 -0
- package/dist/web-client/index.html +4 -4
- package/docs/architecture/v0.3.3-web-api.yaml +3205 -0
- package/docs/architecture/v0.3.4-stabilization-contract.md +32 -0
- package/docs/migration/v0.3.2-to-v0.3.3.md +62 -0
- package/docs/migration/v0.3.3-to-v0.3.4.md +36 -0
- package/docs/plan/v0.3.3-plan.md +1113 -0
- package/docs/plan/v0.3.4-stabilization-plan.md +89 -0
- package/docs/test/v0.3.3-web-workbench-e2e-plan.md +79 -0
- package/docs/test/v0.3.4-stabilization-e2e-plan.md +54 -0
- package/npm-shrinkwrap.json +25 -25
- package/package.json +10 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/context-commands.d.ts.map +0 -1
- package/dist/commands/context-commands.js.map +0 -1
- package/dist/commands/context-tool-command-handlers.d.ts.map +0 -1
- package/dist/commands/context-tool-command-handlers.js.map +0 -1
- package/dist/commands/core-command-handlers.d.ts.map +0 -1
- package/dist/commands/core-command-handlers.js.map +0 -1
- package/dist/commands/diagnostic-command-handlers.d.ts.map +0 -1
- package/dist/commands/diagnostic-command-handlers.js.map +0 -1
- package/dist/commands/diagnostic-commands.d.ts.map +0 -1
- package/dist/commands/diagnostic-commands.js.map +0 -1
- package/dist/commands/index.d.ts.map +0 -1
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/model-command-handlers.d.ts.map +0 -1
- package/dist/commands/model-command-handlers.js.map +0 -1
- package/dist/commands/model-commands.d.ts.map +0 -1
- package/dist/commands/model-commands.js.map +0 -1
- package/dist/commands/parser.d.ts.map +0 -1
- package/dist/commands/parser.js.map +0 -1
- package/dist/commands/registry.d.ts.map +0 -1
- package/dist/commands/registry.js.map +0 -1
- package/dist/commands/session-command-handlers.d.ts.map +0 -1
- package/dist/commands/session-command-handlers.js.map +0 -1
- package/dist/commands/session-commands.d.ts.map +0 -1
- package/dist/commands/session-commands.js.map +0 -1
- package/dist/commands/system-commands.d.ts.map +0 -1
- package/dist/commands/system-commands.js.map +0 -1
- package/dist/commands/target-command.d.ts.map +0 -1
- package/dist/commands/target-command.js.map +0 -1
- package/dist/commands/tool-commands.d.ts.map +0 -1
- package/dist/commands/tool-commands.js.map +0 -1
- package/dist/commands/types.d.ts.map +0 -1
- package/dist/commands/types.js.map +0 -1
- package/dist/commands/workflow-command-handlers.d.ts.map +0 -1
- package/dist/commands/workflow-command-handlers.js.map +0 -1
- package/dist/commands/workflow-commands.d.ts.map +0 -1
- package/dist/commands/workflow-commands.js.map +0 -1
- package/dist/core/checkpoint.d.ts.map +0 -1
- package/dist/core/checkpoint.js.map +0 -1
- package/dist/core/cost-tracker.d.ts.map +0 -1
- package/dist/core/cost-tracker.js.map +0 -1
- package/dist/core/security-warning.d.ts.map +0 -1
- package/dist/core/security-warning.js.map +0 -1
- package/dist/core/strategy-tracker.d.ts.map +0 -1
- package/dist/core/strategy-tracker.js.map +0 -1
- package/dist/core/tool-artifacts.d.ts.map +0 -1
- package/dist/core/tool-artifacts.js.map +0 -1
- package/dist/core/warn-dedup.d.ts.map +0 -1
- package/dist/core/warn-dedup.js.map +0 -1
- package/dist/framework/agent-mode.d.ts.map +0 -1
- package/dist/framework/agent-mode.js.map +0 -1
- package/dist/framework/external-assertion.d.ts.map +0 -1
- package/dist/framework/external-assertion.js.map +0 -1
- package/dist/framework/index.d.ts.map +0 -1
- package/dist/framework/index.js.map +0 -1
- package/dist/framework/loop-budget-contract.d.ts.map +0 -1
- package/dist/framework/loop-budget-contract.js.map +0 -1
- package/dist/framework/prompt.d.ts.map +0 -1
- package/dist/framework/prompt.js.map +0 -1
- package/dist/framework/query.d.ts.map +0 -1
- package/dist/framework/query.js.map +0 -1
- package/dist/framework/stop-decision.d.ts.map +0 -1
- package/dist/framework/stop-decision.js.map +0 -1
- package/dist/framework/store.d.ts.map +0 -1
- package/dist/framework/store.js.map +0 -1
- package/dist/framework/tool-call-orchestrator.d.ts.map +0 -1
- package/dist/framework/tool-call-orchestrator.js.map +0 -1
- package/dist/framework/tool-serializer.d.ts.map +0 -1
- package/dist/framework/tool-serializer.js.map +0 -1
- package/dist/framework/tool-state.d.ts.map +0 -1
- package/dist/framework/tool-state.js.map +0 -1
- package/dist/framework/tool.d.ts.map +0 -1
- package/dist/framework/tool.js.map +0 -1
- package/dist/harness/assembler.d.ts.map +0 -1
- package/dist/harness/assembler.js.map +0 -1
- package/dist/harness/capability-profile.d.ts.map +0 -1
- package/dist/harness/capability-profile.js.map +0 -1
- package/dist/harness/capsule.d.ts.map +0 -1
- package/dist/harness/capsule.js.map +0 -1
- package/dist/harness/compact-benchmark-corpus.d.ts.map +0 -1
- package/dist/harness/compact-benchmark-corpus.js.map +0 -1
- package/dist/harness/context-harness.d.ts.map +0 -1
- package/dist/harness/context-harness.js.map +0 -1
- package/dist/harness/contract.d.ts.map +0 -1
- package/dist/harness/contract.js.map +0 -1
- package/dist/harness/drift-guard.d.ts.map +0 -1
- package/dist/harness/drift-guard.js.map +0 -1
- package/dist/harness/evidence.d.ts.map +0 -1
- package/dist/harness/evidence.js.map +0 -1
- package/dist/harness/index.d.ts.map +0 -1
- package/dist/harness/index.js.map +0 -1
- package/dist/harness/intent.d.ts.map +0 -1
- package/dist/harness/intent.js.map +0 -1
- package/dist/harness/ledger.d.ts.map +0 -1
- package/dist/harness/ledger.js.map +0 -1
- package/dist/harness/progress-controller.d.ts.map +0 -1
- package/dist/harness/progress-controller.js.map +0 -1
- package/dist/harness/state.d.ts.map +0 -1
- package/dist/harness/state.js.map +0 -1
- package/dist/harness/stop-controller.d.ts.map +0 -1
- package/dist/harness/stop-controller.js.map +0 -1
- package/dist/harness/turn-summary.d.ts.map +0 -1
- package/dist/harness/turn-summary.js.map +0 -1
- package/dist/harness/types.d.ts.map +0 -1
- package/dist/harness/types.js.map +0 -1
- package/dist/harness/verification.d.ts.map +0 -1
- package/dist/harness/verification.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/memory/embeddings.d.ts.map +0 -1
- package/dist/memory/embeddings.js.map +0 -1
- package/dist/memory/entrypoint.d.ts.map +0 -1
- package/dist/memory/entrypoint.js.map +0 -1
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/prompt-context.d.ts.map +0 -1
- package/dist/memory/prompt-context.js.map +0 -1
- package/dist/memory/prompts.d.ts.map +0 -1
- package/dist/memory/prompts.js.map +0 -1
- package/dist/memory/relevant-finder.d.ts.map +0 -1
- package/dist/memory/relevant-finder.js.map +0 -1
- package/dist/memory/semantic-config.d.ts.map +0 -1
- package/dist/memory/semantic-config.js.map +0 -1
- package/dist/memory/semantic-search.d.ts.map +0 -1
- package/dist/memory/semantic-search.js.map +0 -1
- package/dist/memory/storage.d.ts.map +0 -1
- package/dist/memory/storage.js.map +0 -1
- package/dist/memory/store.d.ts.map +0 -1
- package/dist/memory/store.js.map +0 -1
- package/dist/memory/team-paths.d.ts.map +0 -1
- package/dist/memory/team-paths.js.map +0 -1
- package/dist/memory/types.d.ts.map +0 -1
- package/dist/memory/types.js.map +0 -1
- package/dist/memory/validation.d.ts.map +0 -1
- package/dist/memory/validation.js.map +0 -1
- package/dist/memory/vector-store.d.ts.map +0 -1
- package/dist/memory/vector-store.js.map +0 -1
- package/dist/migration/command.d.ts.map +0 -1
- package/dist/migration/command.js.map +0 -1
- package/dist/migration/index.d.ts.map +0 -1
- package/dist/migration/index.js.map +0 -1
- package/dist/migration/migrate.d.ts.map +0 -1
- package/dist/migration/migrate.js.map +0 -1
- package/dist/migration/types.d.ts.map +0 -1
- package/dist/migration/types.js.map +0 -1
- package/dist/print-ui/launch.d.ts.map +0 -1
- package/dist/print-ui/launch.js.map +0 -1
- package/dist/product/environment.d.ts.map +0 -1
- package/dist/product/environment.js.map +0 -1
- package/dist/product/identity.d.ts.map +0 -1
- package/dist/product/identity.js.map +0 -1
- package/dist/product/index.d.ts.map +0 -1
- package/dist/product/index.js.map +0 -1
- package/dist/product/paths.d.ts.map +0 -1
- package/dist/product/paths.js.map +0 -1
- package/dist/product/version.d.ts.map +0 -1
- package/dist/product/version.js.map +0 -1
- package/dist/runtime/agent-loop.d.ts.map +0 -1
- package/dist/runtime/agent-loop.js.map +0 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +0 -1
- package/dist/runtime/agent-runtime-controller.js.map +0 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +0 -1
- package/dist/runtime/agent-runtime-protocol.js.map +0 -1
- package/dist/runtime/agent-runtime-runner.d.ts.map +0 -1
- package/dist/runtime/agent-runtime-runner.js.map +0 -1
- package/dist/runtime/agent-status.d.ts.map +0 -1
- package/dist/runtime/agent-status.js.map +0 -1
- package/dist/runtime/aggregate-tool-presenter.d.ts.map +0 -1
- package/dist/runtime/aggregate-tool-presenter.js.map +0 -1
- package/dist/runtime/batch-read-service.d.ts.map +0 -1
- package/dist/runtime/batch-read-service.js.map +0 -1
- package/dist/runtime/builtin-tool-provider.d.ts.map +0 -1
- package/dist/runtime/builtin-tool-provider.js.map +0 -1
- package/dist/runtime/capabilities/compiler.d.ts.map +0 -1
- package/dist/runtime/capabilities/compiler.js.map +0 -1
- package/dist/runtime/capabilities/index.d.ts.map +0 -1
- package/dist/runtime/capabilities/index.js.map +0 -1
- package/dist/runtime/capabilities/types.d.ts.map +0 -1
- package/dist/runtime/capabilities/types.js.map +0 -1
- package/dist/runtime/capability-receipt-journal.d.ts.map +0 -1
- package/dist/runtime/capability-receipt-journal.js.map +0 -1
- package/dist/runtime/capability-step-factory.d.ts.map +0 -1
- package/dist/runtime/capability-step-factory.js.map +0 -1
- package/dist/runtime/compact-transaction.d.ts.map +0 -1
- package/dist/runtime/compact-transaction.js.map +0 -1
- package/dist/runtime/composer/buffer.d.ts.map +0 -1
- package/dist/runtime/composer/buffer.js.map +0 -1
- package/dist/runtime/composer/grapheme.d.ts.map +0 -1
- package/dist/runtime/composer/grapheme.js.map +0 -1
- package/dist/runtime/composer/history.d.ts.map +0 -1
- package/dist/runtime/composer/history.js.map +0 -1
- package/dist/runtime/composer/layout.d.ts.map +0 -1
- package/dist/runtime/composer/layout.js.map +0 -1
- package/dist/runtime/core-tools/descriptors.d.ts.map +0 -1
- package/dist/runtime/core-tools/descriptors.js.map +0 -1
- package/dist/runtime/durable-tool-receipt-reader.d.ts.map +0 -1
- package/dist/runtime/durable-tool-receipt-reader.js.map +0 -1
- package/dist/runtime/first-party-core-provider.d.ts.map +0 -1
- package/dist/runtime/first-party-core-provider.js.map +0 -1
- package/dist/runtime/first-party-long-tail-provider.d.ts.map +0 -1
- package/dist/runtime/first-party-long-tail-provider.js.map +0 -1
- package/dist/runtime/first-party-tool-services.d.ts.map +0 -1
- package/dist/runtime/first-party-tool-services.js.map +0 -1
- package/dist/runtime/first-party-tool-universe.d.ts.map +0 -1
- package/dist/runtime/first-party-tool-universe.js.map +0 -1
- package/dist/runtime/goal-lifecycle-v2.d.ts.map +0 -1
- package/dist/runtime/goal-lifecycle-v2.js.map +0 -1
- package/dist/runtime/goal-runtime-coordinator.d.ts.map +0 -1
- package/dist/runtime/goal-runtime-coordinator.js.map +0 -1
- package/dist/runtime/goals/completion-audit.d.ts.map +0 -1
- package/dist/runtime/goals/completion-audit.js.map +0 -1
- package/dist/runtime/goals/evidence.d.ts.map +0 -1
- package/dist/runtime/goals/evidence.js.map +0 -1
- package/dist/runtime/goals/objective.d.ts.map +0 -1
- package/dist/runtime/goals/objective.js.map +0 -1
- package/dist/runtime/goals/presentation.d.ts.map +0 -1
- package/dist/runtime/goals/presentation.js.map +0 -1
- package/dist/runtime/goals/types.d.ts.map +0 -1
- package/dist/runtime/goals/types.js.map +0 -1
- package/dist/runtime/harness-confluence.d.ts.map +0 -1
- package/dist/runtime/harness-confluence.js.map +0 -1
- package/dist/runtime/harness-eval.d.ts.map +0 -1
- package/dist/runtime/harness-eval.js.map +0 -1
- package/dist/runtime/harness-metrics.d.ts.map +0 -1
- package/dist/runtime/harness-metrics.js.map +0 -1
- package/dist/runtime/legacy-session-importer.d.ts.map +0 -1
- package/dist/runtime/legacy-session-importer.js.map +0 -1
- package/dist/runtime/legacy-thread-materializer.d.ts.map +0 -1
- package/dist/runtime/legacy-thread-materializer.js.map +0 -1
- package/dist/runtime/long-tail-tools/descriptors.d.ts.map +0 -1
- package/dist/runtime/long-tail-tools/descriptors.js.map +0 -1
- package/dist/runtime/loop-budget.d.ts.map +0 -1
- package/dist/runtime/loop-budget.js.map +0 -1
- package/dist/runtime/mcp/first-party-mcp-adapter.d.ts.map +0 -1
- package/dist/runtime/mcp/first-party-mcp-adapter.js.map +0 -1
- package/dist/runtime/mcp/first-party-mcp-config.d.ts.map +0 -1
- package/dist/runtime/mcp/first-party-mcp-config.js.map +0 -1
- package/dist/runtime/mcp/index.d.ts.map +0 -1
- package/dist/runtime/mcp/index.js.map +0 -1
- package/dist/runtime/mcp/lazy-mcp-runtime.d.ts.map +0 -1
- package/dist/runtime/mcp/lazy-mcp-runtime.js.map +0 -1
- package/dist/runtime/mcp/types.d.ts.map +0 -1
- package/dist/runtime/mcp/types.js.map +0 -1
- package/dist/runtime/model-coordinator.d.ts.map +0 -1
- package/dist/runtime/model-coordinator.js.map +0 -1
- package/dist/runtime/orion-runtime-v1.d.ts.map +0 -1
- package/dist/runtime/orion-runtime-v1.js.map +0 -1
- package/dist/runtime/orion-session-runner.d.ts.map +0 -1
- package/dist/runtime/orion-session-runner.js.map +0 -1
- package/dist/runtime/plan-review.d.ts.map +0 -1
- package/dist/runtime/plan-review.js.map +0 -1
- package/dist/runtime/product-bootstrap.d.ts.map +0 -1
- package/dist/runtime/product-bootstrap.js.map +0 -1
- package/dist/runtime/product-orion-runtime.d.ts.map +0 -1
- package/dist/runtime/product-orion-runtime.js.map +0 -1
- package/dist/runtime/prompts/index.d.ts.map +0 -1
- package/dist/runtime/prompts/index.js.map +0 -1
- package/dist/runtime/prompts/prompt-registry.d.ts.map +0 -1
- package/dist/runtime/prompts/prompt-registry.js.map +0 -1
- package/dist/runtime/prompts/types.d.ts.map +0 -1
- package/dist/runtime/prompts/types.js.map +0 -1
- package/dist/runtime/protocol/canonical.d.ts.map +0 -1
- package/dist/runtime/protocol/canonical.js.map +0 -1
- package/dist/runtime/protocol/index.d.ts.map +0 -1
- package/dist/runtime/protocol/index.js.map +0 -1
- package/dist/runtime/protocol/runtime-protocol-v1.d.ts.map +0 -1
- package/dist/runtime/protocol/runtime-protocol-v1.js.map +0 -1
- package/dist/runtime/release-receipts.d.ts.map +0 -1
- package/dist/runtime/release-receipts.js.map +0 -1
- package/dist/runtime/resource-scope.d.ts.map +0 -1
- package/dist/runtime/resource-scope.js.map +0 -1
- package/dist/runtime/rich-text/ansi-parser.d.ts.map +0 -1
- package/dist/runtime/rich-text/ansi-parser.js.map +0 -1
- package/dist/runtime/rich-text/layout.d.ts.map +0 -1
- package/dist/runtime/rich-text/layout.js.map +0 -1
- package/dist/runtime/rich-text/markdown-parser.d.ts.map +0 -1
- package/dist/runtime/rich-text/markdown-parser.js.map +0 -1
- package/dist/runtime/rich-text/sanitizer.d.ts.map +0 -1
- package/dist/runtime/rich-text/sanitizer.js.map +0 -1
- package/dist/runtime/rich-text/types.d.ts.map +0 -1
- package/dist/runtime/rich-text/types.js.map +0 -1
- package/dist/runtime/runtime-event-buffer.d.ts.map +0 -1
- package/dist/runtime/runtime-event-buffer.js.map +0 -1
- package/dist/runtime/runtime-services.d.ts.map +0 -1
- package/dist/runtime/runtime-services.js.map +0 -1
- package/dist/runtime/session-composer-control.d.ts.map +0 -1
- package/dist/runtime/session-composer-control.js.map +0 -1
- package/dist/runtime/session-history-recovery.d.ts.map +0 -1
- package/dist/runtime/session-history-recovery.js.map +0 -1
- package/dist/runtime/skills/bounded-lru-cache.d.ts.map +0 -1
- package/dist/runtime/skills/bounded-lru-cache.js.map +0 -1
- package/dist/runtime/skills/filesystem-skill-provider.d.ts.map +0 -1
- package/dist/runtime/skills/filesystem-skill-provider.js.map +0 -1
- package/dist/runtime/skills/index.d.ts.map +0 -1
- package/dist/runtime/skills/index.js.map +0 -1
- package/dist/runtime/skills/lazy-skill-runtime.d.ts.map +0 -1
- package/dist/runtime/skills/lazy-skill-runtime.js.map +0 -1
- package/dist/runtime/skills/types.d.ts.map +0 -1
- package/dist/runtime/skills/types.js.map +0 -1
- package/dist/runtime/step-snapshot.d.ts.map +0 -1
- package/dist/runtime/step-snapshot.js.map +0 -1
- package/dist/runtime/subagent-thread-runtime.d.ts.map +0 -1
- package/dist/runtime/subagent-thread-runtime.js.map +0 -1
- package/dist/runtime/subagents/budget.d.ts.map +0 -1
- package/dist/runtime/subagents/budget.js.map +0 -1
- package/dist/runtime/subagents/child-executor-guard.d.ts.map +0 -1
- package/dist/runtime/subagents/child-executor-guard.js.map +0 -1
- package/dist/runtime/subagents/context-builder.d.ts.map +0 -1
- package/dist/runtime/subagents/context-builder.js.map +0 -1
- package/dist/runtime/subagents/index.d.ts.map +0 -1
- package/dist/runtime/subagents/index.js.map +0 -1
- package/dist/runtime/subagents/parent-step-fork.d.ts.map +0 -1
- package/dist/runtime/subagents/parent-step-fork.js.map +0 -1
- package/dist/runtime/subagents/policy.d.ts.map +0 -1
- package/dist/runtime/subagents/policy.js.map +0 -1
- package/dist/runtime/subagents/presets.d.ts.map +0 -1
- package/dist/runtime/subagents/presets.js.map +0 -1
- package/dist/runtime/subagents/production.d.ts.map +0 -1
- package/dist/runtime/subagents/production.js.map +0 -1
- package/dist/runtime/subagents/provider-gate.d.ts.map +0 -1
- package/dist/runtime/subagents/provider-gate.js.map +0 -1
- package/dist/runtime/subagents/receipt-journal.d.ts.map +0 -1
- package/dist/runtime/subagents/receipt-journal.js.map +0 -1
- package/dist/runtime/subagents/research-artifact.d.ts.map +0 -1
- package/dist/runtime/subagents/research-artifact.js.map +0 -1
- package/dist/runtime/subagents/research-citation.d.ts.map +0 -1
- package/dist/runtime/subagents/research-citation.js.map +0 -1
- package/dist/runtime/subagents/research-contract.d.ts.map +0 -1
- package/dist/runtime/subagents/research-contract.js.map +0 -1
- package/dist/runtime/subagents/research-quality.d.ts.map +0 -1
- package/dist/runtime/subagents/research-quality.js.map +0 -1
- package/dist/runtime/subagents/research-renderer.d.ts.map +0 -1
- package/dist/runtime/subagents/research-renderer.js.map +0 -1
- package/dist/runtime/subagents/research-types.d.ts.map +0 -1
- package/dist/runtime/subagents/research-types.js.map +0 -1
- package/dist/runtime/subagents/result-parser.d.ts.map +0 -1
- package/dist/runtime/subagents/result-parser.js.map +0 -1
- package/dist/runtime/subagents/runner.d.ts.map +0 -1
- package/dist/runtime/subagents/runner.js.map +0 -1
- package/dist/runtime/subagents/runtime-contract.d.ts.map +0 -1
- package/dist/runtime/subagents/runtime-contract.js.map +0 -1
- package/dist/runtime/subagents/runtime-integration.d.ts.map +0 -1
- package/dist/runtime/subagents/runtime-integration.js.map +0 -1
- package/dist/runtime/subagents/supervisor.d.ts.map +0 -1
- package/dist/runtime/subagents/supervisor.js.map +0 -1
- package/dist/runtime/subagents/tool.d.ts.map +0 -1
- package/dist/runtime/subagents/tool.js.map +0 -1
- package/dist/runtime/subagents/types.d.ts.map +0 -1
- package/dist/runtime/subagents/types.js.map +0 -1
- package/dist/runtime/subagents/web-research-adapter.d.ts.map +0 -1
- package/dist/runtime/subagents/web-research-adapter.js.map +0 -1
- package/dist/runtime/task-context-service.d.ts.map +0 -1
- package/dist/runtime/task-context-service.js.map +0 -1
- package/dist/runtime/thread-admission.d.ts.map +0 -1
- package/dist/runtime/thread-admission.js.map +0 -1
- package/dist/runtime/thread-compact-persistence.d.ts.map +0 -1
- package/dist/runtime/thread-compact-persistence.js.map +0 -1
- package/dist/runtime/thread-event-store.d.ts.map +0 -1
- package/dist/runtime/thread-event-store.js.map +0 -1
- package/dist/runtime/thread-projection.d.ts.map +0 -1
- package/dist/runtime/thread-projection.js.map +0 -1
- package/dist/runtime/thread-runtime.d.ts.map +0 -1
- package/dist/runtime/thread-runtime.js.map +0 -1
- package/dist/runtime/thread-session-index.d.ts.map +0 -1
- package/dist/runtime/thread-session-index.js.map +0 -1
- package/dist/runtime/thread-session-view.d.ts.map +0 -1
- package/dist/runtime/thread-session-view.js.map +0 -1
- package/dist/runtime/thread-tool-journal.d.ts.map +0 -1
- package/dist/runtime/thread-tool-journal.js.map +0 -1
- package/dist/runtime/thread-ui-adapter.d.ts.map +0 -1
- package/dist/runtime/thread-ui-adapter.js.map +0 -1
- package/dist/runtime/tool-detail-repository.d.ts.map +0 -1
- package/dist/runtime/tool-detail-repository.js.map +0 -1
- package/dist/runtime/tool-gateway.d.ts.map +0 -1
- package/dist/runtime/tool-gateway.js.map +0 -1
- package/dist/runtime/tool-output-presentation.d.ts.map +0 -1
- package/dist/runtime/tool-output-presentation.js.map +0 -1
- package/dist/runtime/tool-receipt-validator.d.ts.map +0 -1
- package/dist/runtime/tool-receipt-validator.js.map +0 -1
- package/dist/runtime/turn-commit.d.ts.map +0 -1
- package/dist/runtime/turn-commit.js.map +0 -1
- package/dist/runtime/turn-controller.d.ts.map +0 -1
- package/dist/runtime/turn-controller.js.map +0 -1
- package/dist/runtime/ui-events.d.ts.map +0 -1
- package/dist/runtime/ui-events.js.map +0 -1
- package/dist/runtime/ui-view-model.d.ts.map +0 -1
- package/dist/runtime/ui-view-model.js.map +0 -1
- package/dist/services/atomic-write.d.ts.map +0 -1
- package/dist/services/atomic-write.js.map +0 -1
- package/dist/services/auth/auth.d.ts.map +0 -1
- package/dist/services/auth/auth.js.map +0 -1
- package/dist/services/auth/aws.d.ts.map +0 -1
- package/dist/services/auth/aws.js.map +0 -1
- package/dist/services/auth/index.d.ts.map +0 -1
- package/dist/services/auth/index.js.map +0 -1
- package/dist/services/auto-fix/autoFixConfig.d.ts.map +0 -1
- package/dist/services/auto-fix/autoFixConfig.js.map +0 -1
- package/dist/services/auto-fix/autoFixHook.d.ts.map +0 -1
- package/dist/services/auto-fix/autoFixHook.js.map +0 -1
- package/dist/services/auto-fix/autoFixRunner.d.ts.map +0 -1
- package/dist/services/auto-fix/autoFixRunner.js.map +0 -1
- package/dist/services/auto-fix/index.d.ts.map +0 -1
- package/dist/services/auto-fix/index.js.map +0 -1
- package/dist/services/bounded-response.d.ts.map +0 -1
- package/dist/services/bounded-response.js.map +0 -1
- package/dist/services/commit-plan.d.ts.map +0 -1
- package/dist/services/commit-plan.js.map +0 -1
- package/dist/services/compact/auto-compact.d.ts.map +0 -1
- package/dist/services/compact/auto-compact.js.map +0 -1
- package/dist/services/compact/compact.d.ts.map +0 -1
- package/dist/services/compact/compact.js.map +0 -1
- package/dist/services/compact/coordinator.d.ts.map +0 -1
- package/dist/services/compact/coordinator.js.map +0 -1
- package/dist/services/compact/fingerprint.d.ts.map +0 -1
- package/dist/services/compact/fingerprint.js.map +0 -1
- package/dist/services/compact/index.d.ts.map +0 -1
- package/dist/services/compact/index.js.map +0 -1
- package/dist/services/compact/planner.d.ts.map +0 -1
- package/dist/services/compact/planner.js.map +0 -1
- package/dist/services/compact/semantic-summary.d.ts.map +0 -1
- package/dist/services/compact/semantic-summary.js.map +0 -1
- package/dist/services/compact/summary-generator.d.ts.map +0 -1
- package/dist/services/compact/summary-generator.js.map +0 -1
- package/dist/services/compact/tool-call-groups.d.ts.map +0 -1
- package/dist/services/compact/tool-call-groups.js.map +0 -1
- package/dist/services/concurrent-sessions.d.ts.map +0 -1
- package/dist/services/concurrent-sessions.js.map +0 -1
- package/dist/services/config-dir.d.ts.map +0 -1
- package/dist/services/config-dir.js.map +0 -1
- package/dist/services/config.d.ts.map +0 -1
- package/dist/services/config.js.map +0 -1
- package/dist/services/diagnostic-tracking/diagnosticTracking.d.ts.map +0 -1
- package/dist/services/diagnostic-tracking/diagnosticTracking.js.map +0 -1
- package/dist/services/diagnostic-tracking/formatter.d.ts.map +0 -1
- package/dist/services/diagnostic-tracking/formatter.js.map +0 -1
- package/dist/services/diagnostic-tracking/index.d.ts.map +0 -1
- package/dist/services/diagnostic-tracking/index.js.map +0 -1
- package/dist/services/diagnostic-tracking/types.d.ts.map +0 -1
- package/dist/services/diagnostic-tracking/types.js.map +0 -1
- package/dist/services/doctor.d.ts.map +0 -1
- package/dist/services/doctor.js.map +0 -1
- package/dist/services/effort.d.ts.map +0 -1
- package/dist/services/effort.js.map +0 -1
- package/dist/services/file-context.d.ts.map +0 -1
- package/dist/services/file-context.js.map +0 -1
- package/dist/services/file-glob.d.ts.map +0 -1
- package/dist/services/file-glob.js.map +0 -1
- package/dist/services/file-lock.d.ts.map +0 -1
- package/dist/services/file-lock.js.map +0 -1
- package/dist/services/format.d.ts.map +0 -1
- package/dist/services/format.js.map +0 -1
- package/dist/services/global-config.d.ts.map +0 -1
- package/dist/services/global-config.js.map +0 -1
- package/dist/services/goal-storage.d.ts.map +0 -1
- package/dist/services/goal-storage.js.map +0 -1
- package/dist/services/llm.d.ts.map +0 -1
- package/dist/services/llm.js.map +0 -1
- package/dist/services/mcp/index.d.ts.map +0 -1
- package/dist/services/mcp/index.js.map +0 -1
- package/dist/services/mcp/transports.d.ts.map +0 -1
- package/dist/services/mcp/transports.js.map +0 -1
- package/dist/services/memory.d.ts.map +0 -1
- package/dist/services/memory.js.map +0 -1
- package/dist/services/model-catalog.d.ts.map +0 -1
- package/dist/services/model-catalog.js.map +0 -1
- package/dist/services/model-client-pool.d.ts.map +0 -1
- package/dist/services/model-client-pool.js.map +0 -1
- package/dist/services/model-context.d.ts.map +0 -1
- package/dist/services/model-context.js.map +0 -1
- package/dist/services/model-registry.d.ts.map +0 -1
- package/dist/services/model-registry.js.map +0 -1
- package/dist/services/project-instructions.d.ts.map +0 -1
- package/dist/services/project-instructions.js.map +0 -1
- package/dist/services/prompt-context.d.ts.map +0 -1
- package/dist/services/prompt-context.js.map +0 -1
- package/dist/services/provider-diagnostics.d.ts.map +0 -1
- package/dist/services/provider-diagnostics.js.map +0 -1
- package/dist/services/provider-resilience/circuit-breaker.d.ts.map +0 -1
- package/dist/services/provider-resilience/circuit-breaker.js.map +0 -1
- package/dist/services/provider-resilience/coordinator.d.ts.map +0 -1
- package/dist/services/provider-resilience/coordinator.js.map +0 -1
- package/dist/services/provider-resilience/error-classifier.d.ts.map +0 -1
- package/dist/services/provider-resilience/error-classifier.js.map +0 -1
- package/dist/services/provider-resilience/index.d.ts.map +0 -1
- package/dist/services/provider-resilience/index.js.map +0 -1
- package/dist/services/provider-resilience/request-gate.d.ts.map +0 -1
- package/dist/services/provider-resilience/request-gate.js.map +0 -1
- package/dist/services/provider-resilience/stream-recovery.d.ts.map +0 -1
- package/dist/services/provider-resilience/stream-recovery.js.map +0 -1
- package/dist/services/provider-resilience/types.d.ts.map +0 -1
- package/dist/services/provider-resilience/types.js.map +0 -1
- package/dist/services/redaction.d.ts.map +0 -1
- package/dist/services/redaction.js.map +0 -1
- package/dist/services/safe-project-reader.d.ts.map +0 -1
- package/dist/services/safe-project-reader.js.map +0 -1
- package/dist/services/session-index.d.ts.map +0 -1
- package/dist/services/session-index.js.map +0 -1
- package/dist/services/session-memory/index.d.ts.map +0 -1
- package/dist/services/session-memory/index.js.map +0 -1
- package/dist/services/session-memory/prompts.d.ts.map +0 -1
- package/dist/services/session-memory/prompts.js.map +0 -1
- package/dist/services/session-memory/sessionMemory.d.ts.map +0 -1
- package/dist/services/session-memory/sessionMemory.js.map +0 -1
- package/dist/services/session-storage.d.ts.map +0 -1
- package/dist/services/session-storage.js.map +0 -1
- package/dist/services/settings-coordinator.d.ts.map +0 -1
- package/dist/services/settings-coordinator.js.map +0 -1
- package/dist/services/settings-document-repository.d.ts.map +0 -1
- package/dist/services/settings-document-repository.js.map +0 -1
- package/dist/services/smart-routing.d.ts.map +0 -1
- package/dist/services/smart-routing.js.map +0 -1
- package/dist/services/storage-maintenance.d.ts.map +0 -1
- package/dist/services/storage-maintenance.js.map +0 -1
- package/dist/services/tool-allowlist.d.ts.map +0 -1
- package/dist/services/tool-allowlist.js.map +0 -1
- package/dist/services/usage-state.d.ts.map +0 -1
- package/dist/services/usage-state.js.map +0 -1
- package/dist/services/verification-profile.d.ts.map +0 -1
- package/dist/services/verification-profile.js.map +0 -1
- package/dist/services/web-search-adapters.d.ts.map +0 -1
- package/dist/services/web-search-adapters.js.map +0 -1
- package/dist/services/web-search-mcp.d.ts.map +0 -1
- package/dist/services/web-search-mcp.js.map +0 -1
- package/dist/services/web-search-provider.d.ts.map +0 -1
- package/dist/services/web-search-provider.js.map +0 -1
- package/dist/services/workspace-containment.d.ts.map +0 -1
- package/dist/services/workspace-containment.js.map +0 -1
- package/dist/services/workspace-diff.d.ts.map +0 -1
- package/dist/services/workspace-diff.js.map +0 -1
- package/dist/services/workspace-registry.d.ts.map +0 -1
- package/dist/services/workspace-registry.js.map +0 -1
- package/dist/services/workspace-state.d.ts.map +0 -1
- package/dist/services/workspace-state.js.map +0 -1
- package/dist/services/yaml-config.d.ts.map +0 -1
- package/dist/services/yaml-config.js.map +0 -1
- package/dist/terminal-ui/completion.d.ts.map +0 -1
- package/dist/terminal-ui/completion.js.map +0 -1
- package/dist/terminal-ui/editor.d.ts.map +0 -1
- package/dist/terminal-ui/editor.js.map +0 -1
- package/dist/terminal-ui/launch.d.ts.map +0 -1
- package/dist/terminal-ui/launch.js.map +0 -1
- package/dist/terminal-ui/output-queue.d.ts.map +0 -1
- package/dist/terminal-ui/output-queue.js.map +0 -1
- package/dist/terminal-ui/raw-editor.d.ts.map +0 -1
- package/dist/terminal-ui/raw-editor.js.map +0 -1
- package/dist/tools/_validate.d.ts.map +0 -1
- package/dist/tools/_validate.js.map +0 -1
- package/dist/tools/bash_security.d.ts.map +0 -1
- package/dist/tools/bash_security.js.map +0 -1
- package/dist/tools/core/common.d.ts.map +0 -1
- package/dist/tools/core/common.js.map +0 -1
- package/dist/tools/core/edit-file.d.ts.map +0 -1
- package/dist/tools/core/edit-file.js.map +0 -1
- package/dist/tools/core/exec-command.d.ts.map +0 -1
- package/dist/tools/core/exec-command.js.map +0 -1
- package/dist/tools/core/glob.d.ts.map +0 -1
- package/dist/tools/core/glob.js.map +0 -1
- package/dist/tools/core/grep.d.ts.map +0 -1
- package/dist/tools/core/grep.js.map +0 -1
- package/dist/tools/core/index.d.ts.map +0 -1
- package/dist/tools/core/index.js.map +0 -1
- package/dist/tools/core/list-files.d.ts.map +0 -1
- package/dist/tools/core/list-files.js.map +0 -1
- package/dist/tools/core/read-file.d.ts.map +0 -1
- package/dist/tools/core/read-file.js.map +0 -1
- package/dist/tools/core/write-file.d.ts.map +0 -1
- package/dist/tools/core/write-file.js.map +0 -1
- package/dist/tools/git.d.ts.map +0 -1
- package/dist/tools/git.js.map +0 -1
- package/dist/tools/lsp.d.ts.map +0 -1
- package/dist/tools/lsp.js.map +0 -1
- package/dist/tools/sandbox.d.ts.map +0 -1
- package/dist/tools/sandbox.js.map +0 -1
- package/dist/tools/todo.d.ts.map +0 -1
- package/dist/tools/todo.js.map +0 -1
- package/dist/tools/web.d.ts.map +0 -1
- package/dist/tools/web.js.map +0 -1
- package/dist/tui-core/frame.d.ts.map +0 -1
- package/dist/tui-core/frame.js.map +0 -1
- package/dist/tui-core/input-parser.d.ts.map +0 -1
- package/dist/tui-core/input-parser.js.map +0 -1
- package/dist/tui-core/style.d.ts.map +0 -1
- package/dist/tui-core/style.js.map +0 -1
- package/dist/tui-core/terminal-writer.d.ts.map +0 -1
- package/dist/tui-core/terminal-writer.js.map +0 -1
- package/dist/tui-ui/chrome-view-model.d.ts.map +0 -1
- package/dist/tui-ui/chrome-view-model.js.map +0 -1
- package/dist/tui-ui/inline-surface.d.ts.map +0 -1
- package/dist/tui-ui/inline-surface.js.map +0 -1
- package/dist/tui-ui/input-ownership.d.ts.map +0 -1
- package/dist/tui-ui/input-ownership.js.map +0 -1
- package/dist/tui-ui/launch.d.ts.map +0 -1
- package/dist/tui-ui/launch.js.map +0 -1
- package/dist/tui-ui/layout.d.ts.map +0 -1
- package/dist/tui-ui/layout.js.map +0 -1
- package/dist/tui-ui/pickers.d.ts.map +0 -1
- package/dist/tui-ui/pickers.js.map +0 -1
- package/dist/tui-ui/pixel-mascot.d.ts.map +0 -1
- package/dist/tui-ui/pixel-mascot.js.map +0 -1
- package/dist/tui-ui/render-scheduler.d.ts.map +0 -1
- package/dist/tui-ui/render-scheduler.js.map +0 -1
- package/dist/tui-ui/runner.d.ts.map +0 -1
- package/dist/tui-ui/runner.js.map +0 -1
- package/dist/tui-ui/state.d.ts.map +0 -1
- package/dist/tui-ui/state.js.map +0 -1
- package/dist/tui-ui/terminal-image.d.ts.map +0 -1
- package/dist/tui-ui/terminal-image.js.map +0 -1
- package/dist/tui-ui/theme-profile.d.ts.map +0 -1
- package/dist/tui-ui/theme-profile.js.map +0 -1
- package/dist/tui-ui/theme.d.ts.map +0 -1
- package/dist/tui-ui/theme.js.map +0 -1
- package/dist/tui-ui/transcript-cache.d.ts.map +0 -1
- package/dist/tui-ui/transcript-cache.js.map +0 -1
- package/dist/tui-ui/transcript-inspector-layout.d.ts.map +0 -1
- package/dist/tui-ui/transcript-inspector-layout.js.map +0 -1
- package/dist/tui-ui/transcript-inspector-surface.d.ts.map +0 -1
- package/dist/tui-ui/transcript-inspector-surface.js.map +0 -1
- package/dist/tui-ui/transcript-inspector.d.ts.map +0 -1
- package/dist/tui-ui/transcript-inspector.js.map +0 -1
- package/dist/tui-ui/transcript-layout.d.ts.map +0 -1
- package/dist/tui-ui/transcript-layout.js.map +0 -1
- package/dist/ui/box.d.ts.map +0 -1
- package/dist/ui/box.js.map +0 -1
- package/dist/ui/command-panel.d.ts.map +0 -1
- package/dist/ui/command-panel.js.map +0 -1
- package/dist/ui/file-completion.d.ts.map +0 -1
- package/dist/ui/file-completion.js.map +0 -1
- package/dist/ui/markdown.d.ts.map +0 -1
- package/dist/ui/markdown.js.map +0 -1
- package/dist/ui/multiline-input.d.ts.map +0 -1
- package/dist/ui/multiline-input.js.map +0 -1
- package/dist/ui/progress.d.ts.map +0 -1
- package/dist/ui/progress.js.map +0 -1
- package/dist/ui/shared/command-palette.d.ts.map +0 -1
- package/dist/ui/shared/command-palette.js.map +0 -1
- package/dist/ui/shared/command-suggestions.d.ts.map +0 -1
- package/dist/ui/shared/command-suggestions.js.map +0 -1
- package/dist/ui/shared/input-frame.d.ts.map +0 -1
- package/dist/ui/shared/input-frame.js.map +0 -1
- package/dist/ui/shared/text.d.ts.map +0 -1
- package/dist/ui/shared/text.js.map +0 -1
- package/dist/ui/shared/types.d.ts.map +0 -1
- package/dist/ui/shared/types.js.map +0 -1
- package/dist/ui/status-bar.d.ts.map +0 -1
- package/dist/ui/status-bar.js.map +0 -1
- package/dist/ui/stream-markdown.d.ts.map +0 -1
- package/dist/ui/stream-markdown.js.map +0 -1
- package/dist/ui/suggestions.d.ts.map +0 -1
- package/dist/ui/suggestions.js.map +0 -1
- package/dist/ui/tool-preview.d.ts.map +0 -1
- package/dist/ui/tool-preview.js.map +0 -1
- package/dist/ui/user-input.d.ts.map +0 -1
- package/dist/ui/user-input.js.map +0 -1
- package/dist/utils/debug-log.d.ts.map +0 -1
- package/dist/utils/debug-log.js.map +0 -1
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/json.d.ts.map +0 -1
- package/dist/utils/json.js.map +0 -1
- package/dist/utils/mask.d.ts.map +0 -1
- package/dist/utils/mask.js.map +0 -1
- package/dist/utils/observability.d.ts.map +0 -1
- package/dist/utils/observability.js.map +0 -1
- package/dist/utils/token-estimate.d.ts.map +0 -1
- package/dist/utils/token-estimate.js.map +0 -1
- package/dist/web/errors.d.ts.map +0 -1
- package/dist/web/errors.js.map +0 -1
- package/dist/web/event-hub.d.ts.map +0 -1
- package/dist/web/event-hub.js.map +0 -1
- package/dist/web/file-read-service.d.ts.map +0 -1
- package/dist/web/file-read-service.js.map +0 -1
- package/dist/web/git-read-model-service.d.ts.map +0 -1
- package/dist/web/git-read-model-service.js.map +0 -1
- package/dist/web/index.d.ts.map +0 -1
- package/dist/web/index.js.map +0 -1
- package/dist/web/launch.d.ts.map +0 -1
- package/dist/web/launch.js.map +0 -1
- package/dist/web/protocol.d.ts.map +0 -1
- package/dist/web/protocol.js.map +0 -1
- package/dist/web/review-service.d.ts.map +0 -1
- package/dist/web/review-service.js.map +0 -1
- package/dist/web/server.d.ts.map +0 -1
- package/dist/web/server.js.map +0 -1
- package/dist/web/terminal-manager.d.ts.map +0 -1
- package/dist/web/terminal-manager.js.map +0 -1
- package/dist/web/terminal-server.d.ts.map +0 -1
- package/dist/web/terminal-server.js.map +0 -1
- package/dist/web/workbench-controller.d.ts.map +0 -1
- package/dist/web/workbench-controller.js.map +0 -1
- package/dist/web-client/assets/FilesPanel-DYs1MhoM.js +0 -2
- package/dist/web-client/assets/ReviewPanel-BDxG670T.js +0 -1
- package/dist/web-client/assets/index-BWV5sIvw.css +0 -1
- package/dist/web-client/assets/index-VVUKj6FE.js +0 -17
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebSessionRuntimeRegistryError = exports.WebSessionRuntimeRegistryV1 = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const DEFAULT_MAX_RUNNING_SESSIONS = 3;
|
|
6
|
+
const DEFAULT_MAX_RESIDENT_SESSION_ACTORS = 4;
|
|
7
|
+
/**
|
|
8
|
+
* Bounded Web-only Session actor pool.
|
|
9
|
+
*
|
|
10
|
+
* It owns concurrency admission and actor lifetime, but deliberately knows
|
|
11
|
+
* nothing about React, HTTP, OrionRuntime, or TUI semantics. Callers provide a
|
|
12
|
+
* Session-scoped actor and a logical-turn terminal promise. This keeps Web
|
|
13
|
+
* parallelism out of the single-session CLI/TUI runner.
|
|
14
|
+
*/
|
|
15
|
+
class WebSessionRuntimeRegistryV1 {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.records = new Map();
|
|
19
|
+
this.queue = [];
|
|
20
|
+
this.capacityQueue = Promise.resolve();
|
|
21
|
+
this.ordinal = 0;
|
|
22
|
+
this.runningCountValue = 0;
|
|
23
|
+
this.closed = false;
|
|
24
|
+
this.maxRunningSessions = boundedInteger(options.maxRunningSessions, DEFAULT_MAX_RUNNING_SESSIONS, 1, 8, 'maxRunningSessions');
|
|
25
|
+
this.maxResidentSessionActors = boundedInteger(options.maxResidentSessionActors, DEFAULT_MAX_RESIDENT_SESSION_ACTORS, 1, 8, 'maxResidentSessionActors');
|
|
26
|
+
if (this.maxResidentSessionActors < this.maxRunningSessions) {
|
|
27
|
+
throw new Error('maxResidentSessionActors must be greater than or equal to maxRunningSessions.');
|
|
28
|
+
}
|
|
29
|
+
this.now = options.now ?? Date.now;
|
|
30
|
+
this.createRevision = options.createRevision ?? crypto_1.randomUUID;
|
|
31
|
+
}
|
|
32
|
+
get runningCount() {
|
|
33
|
+
return this.runningCountValue;
|
|
34
|
+
}
|
|
35
|
+
get residentCount() {
|
|
36
|
+
let count = 0;
|
|
37
|
+
for (const record of this.records.values())
|
|
38
|
+
if (record.actor !== undefined)
|
|
39
|
+
count += 1;
|
|
40
|
+
return count;
|
|
41
|
+
}
|
|
42
|
+
summary(key) {
|
|
43
|
+
return this.snapshot(this.record(key));
|
|
44
|
+
}
|
|
45
|
+
summaries() {
|
|
46
|
+
return Object.freeze([...this.records.values()]
|
|
47
|
+
.sort((left, right) => right.lastUsedOrdinal - left.lastUsedOrdinal)
|
|
48
|
+
.map(record => this.snapshot(record)));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Return the current resident actor without starting a cold Session.
|
|
52
|
+
*
|
|
53
|
+
* Snapshot/read paths use this to project live state while preserving the
|
|
54
|
+
* cold-read invariant: merely selecting or inspecting a Session must not
|
|
55
|
+
* allocate a Runtime or consume a running slot.
|
|
56
|
+
*/
|
|
57
|
+
residentActor(key) {
|
|
58
|
+
this.assertOpen();
|
|
59
|
+
const record = this.record(key);
|
|
60
|
+
if (!record.actor || !record.actorReady)
|
|
61
|
+
return undefined;
|
|
62
|
+
this.touch(record);
|
|
63
|
+
return Object.freeze({ actor: record.actor, runtime: this.snapshot(record) });
|
|
64
|
+
}
|
|
65
|
+
async ensureResident(key, expectedRuntimeRevision) {
|
|
66
|
+
return this.withCapacityLock(async () => {
|
|
67
|
+
this.assertOpen();
|
|
68
|
+
const record = this.record(key);
|
|
69
|
+
this.assertRevision(record, expectedRuntimeRevision);
|
|
70
|
+
const actor = await this.ensureResidentLocked(record);
|
|
71
|
+
return Object.freeze({ actor, runtime: this.snapshot(record) });
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async withActor(key, expectedRuntimeRevision, action) {
|
|
75
|
+
return this.withCapacityLock(async () => {
|
|
76
|
+
this.assertOpen();
|
|
77
|
+
const record = this.record(key);
|
|
78
|
+
this.assertRevision(record, expectedRuntimeRevision);
|
|
79
|
+
const actor = await this.ensureResidentLocked(record);
|
|
80
|
+
const result = await action(actor);
|
|
81
|
+
this.touch(record);
|
|
82
|
+
return Object.freeze({ result, runtime: this.snapshot(record) });
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async admitTurn(input) {
|
|
86
|
+
return this.withCapacityLock(async () => {
|
|
87
|
+
this.assertOpen();
|
|
88
|
+
const record = this.record(input.key);
|
|
89
|
+
this.assertRevision(record, input.expectedRuntimeRevision);
|
|
90
|
+
if (record.activeRun || record.queueId) {
|
|
91
|
+
throw new WebSessionRuntimeRegistryError(409, 'session_turn_already_active', 'The Session already has a running or queued logical turn.');
|
|
92
|
+
}
|
|
93
|
+
const actor = await this.ensureResidentLocked(record);
|
|
94
|
+
if (this.runningCountValue >= this.maxRunningSessions) {
|
|
95
|
+
const queueId = this.createRevision();
|
|
96
|
+
record.queueId = queueId;
|
|
97
|
+
this.queue.push({
|
|
98
|
+
queueId,
|
|
99
|
+
record,
|
|
100
|
+
start: input.start,
|
|
101
|
+
});
|
|
102
|
+
record.queuePosition = this.queue.length;
|
|
103
|
+
this.transition(record, 'queued');
|
|
104
|
+
this.publishQueuePositions();
|
|
105
|
+
const runtime = this.snapshot(record);
|
|
106
|
+
return Object.freeze({
|
|
107
|
+
status: 'queued',
|
|
108
|
+
queueId,
|
|
109
|
+
queuePosition: runtime.queuePosition,
|
|
110
|
+
runtime,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const started = await this.startTurn(record, actor, input.start);
|
|
114
|
+
return Object.freeze({
|
|
115
|
+
status: 'started',
|
|
116
|
+
accepted: started.accepted,
|
|
117
|
+
runtime: started.runtime,
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
cancelQueued(key, queueId, expectedRuntimeRevision) {
|
|
122
|
+
this.assertOpen();
|
|
123
|
+
const record = this.record(key);
|
|
124
|
+
this.assertRevision(record, expectedRuntimeRevision);
|
|
125
|
+
if (!record.queueId || record.queueId !== queueId) {
|
|
126
|
+
throw new WebSessionRuntimeRegistryError(409, 'session_queue_conflict', 'The queued turn no longer matches this Session.');
|
|
127
|
+
}
|
|
128
|
+
const index = this.queue.findIndex(item => item.queueId === queueId && item.record === record);
|
|
129
|
+
if (index < 0) {
|
|
130
|
+
throw new WebSessionRuntimeRegistryError(409, 'session_queue_conflict', 'The queued turn is no longer pending.');
|
|
131
|
+
}
|
|
132
|
+
this.queue.splice(index, 1);
|
|
133
|
+
record.queueId = undefined;
|
|
134
|
+
record.queuePosition = undefined;
|
|
135
|
+
this.transition(record, 'idle');
|
|
136
|
+
this.publishQueuePositions();
|
|
137
|
+
return this.snapshot(record);
|
|
138
|
+
}
|
|
139
|
+
setPendingApprovalCount(key, count) {
|
|
140
|
+
this.assertOpen();
|
|
141
|
+
const record = this.record(key);
|
|
142
|
+
if (!Number.isSafeInteger(count) || count < 0) {
|
|
143
|
+
throw new Error('pending approval count must be a non-negative integer.');
|
|
144
|
+
}
|
|
145
|
+
const normalized = count;
|
|
146
|
+
if (record.pendingApprovalCount === normalized)
|
|
147
|
+
return this.snapshot(record);
|
|
148
|
+
record.pendingApprovalCount = normalized;
|
|
149
|
+
if (record.activeRun)
|
|
150
|
+
this.transition(record, normalized > 0 ? 'waiting_approval' : 'running');
|
|
151
|
+
else
|
|
152
|
+
this.bump(record);
|
|
153
|
+
return this.snapshot(record);
|
|
154
|
+
}
|
|
155
|
+
async evict(key, reason = 'session actor evicted') {
|
|
156
|
+
this.assertOpen();
|
|
157
|
+
const record = this.record(key);
|
|
158
|
+
await this.withCapacityLock(async () => {
|
|
159
|
+
if (!record.actor)
|
|
160
|
+
return;
|
|
161
|
+
if (!this.isEvictable(record)) {
|
|
162
|
+
throw new WebSessionRuntimeRegistryError(409, 'session_actor_busy', 'Running, queued, approval-waiting, or stopping actors cannot be evicted.');
|
|
163
|
+
}
|
|
164
|
+
await this.closeResidentLocked(record, reason, 'cold');
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
async shutdown(reason = 'Web Session registry shutdown') {
|
|
168
|
+
this.closed = true;
|
|
169
|
+
const queued = this.queue.splice(0);
|
|
170
|
+
for (const item of queued) {
|
|
171
|
+
item.record.queueId = undefined;
|
|
172
|
+
item.record.queuePosition = undefined;
|
|
173
|
+
this.transition(item.record, 'interrupted');
|
|
174
|
+
}
|
|
175
|
+
const cleanupErrors = [];
|
|
176
|
+
await this.withCapacityLock(async () => {
|
|
177
|
+
const residents = [...this.records.values()].filter(record => record.actor !== undefined);
|
|
178
|
+
await Promise.all(residents.map(async (record) => {
|
|
179
|
+
const actor = record.actor;
|
|
180
|
+
if (!actor)
|
|
181
|
+
return;
|
|
182
|
+
const wasActive = record.activeRun;
|
|
183
|
+
if (wasActive)
|
|
184
|
+
this.runningCountValue = Math.max(0, this.runningCountValue - 1);
|
|
185
|
+
record.activeRun = false;
|
|
186
|
+
record.pendingApprovalCount = 0;
|
|
187
|
+
record.actorReady = false;
|
|
188
|
+
this.transition(record, 'stopping');
|
|
189
|
+
try {
|
|
190
|
+
await this.options.closeActor(actor, reason);
|
|
191
|
+
record.actor = undefined;
|
|
192
|
+
record.estimatedBytes = 0;
|
|
193
|
+
this.transition(record, wasActive ? 'interrupted' : 'cold');
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
record.failure = error;
|
|
197
|
+
this.transition(record, 'failed');
|
|
198
|
+
cleanupErrors.push(error);
|
|
199
|
+
}
|
|
200
|
+
}));
|
|
201
|
+
});
|
|
202
|
+
if (cleanupErrors.length > 0) {
|
|
203
|
+
throw new WebSessionRuntimeRegistryError(503, 'session_actor_cleanup_failed', `${cleanupErrors.length} Session actor(s) could not be closed safely.`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
record(key) {
|
|
207
|
+
const normalized = normalizeKey(key);
|
|
208
|
+
const id = keyId(normalized);
|
|
209
|
+
let record = this.records.get(id);
|
|
210
|
+
if (!record) {
|
|
211
|
+
const now = this.now();
|
|
212
|
+
record = {
|
|
213
|
+
key: normalized,
|
|
214
|
+
phase: 'cold',
|
|
215
|
+
runtimeRevision: this.createRevision(),
|
|
216
|
+
pendingApprovalCount: 0,
|
|
217
|
+
estimatedBytes: 0,
|
|
218
|
+
updatedAtMs: now,
|
|
219
|
+
lastUsedOrdinal: ++this.ordinal,
|
|
220
|
+
activeRun: false,
|
|
221
|
+
actorReady: false,
|
|
222
|
+
};
|
|
223
|
+
this.records.set(id, record);
|
|
224
|
+
this.publish(record);
|
|
225
|
+
}
|
|
226
|
+
return record;
|
|
227
|
+
}
|
|
228
|
+
async ensureResidentLocked(record) {
|
|
229
|
+
if (record.actor && record.actorReady) {
|
|
230
|
+
this.touch(record);
|
|
231
|
+
return record.actor;
|
|
232
|
+
}
|
|
233
|
+
if (record.actor) {
|
|
234
|
+
await this.closeResidentLocked(record, 'retry quarantined Session actor cleanup', 'cold');
|
|
235
|
+
}
|
|
236
|
+
await this.makeCapacityLocked(record);
|
|
237
|
+
this.transition(record, 'starting');
|
|
238
|
+
let actor;
|
|
239
|
+
try {
|
|
240
|
+
actor = await this.options.createActor(record.key);
|
|
241
|
+
await this.options.initializeActor?.(actor, record.key);
|
|
242
|
+
if (this.closed) {
|
|
243
|
+
throw new WebSessionRuntimeRegistryError(503, 'session_registry_closed', 'The Web Session registry is closed.');
|
|
244
|
+
}
|
|
245
|
+
record.estimatedBytes = normalizeBytes(this.options.estimateActorBytes?.(actor));
|
|
246
|
+
record.actor = actor;
|
|
247
|
+
record.actorReady = true;
|
|
248
|
+
actor = undefined;
|
|
249
|
+
record.failure = undefined;
|
|
250
|
+
this.transition(record, 'idle');
|
|
251
|
+
return record.actor;
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
if (actor) {
|
|
255
|
+
try {
|
|
256
|
+
await this.options.closeActor(actor, 'Session actor start failed');
|
|
257
|
+
}
|
|
258
|
+
catch (cleanupError) {
|
|
259
|
+
// Preserve the only handle to the partially initialized actor. It is
|
|
260
|
+
// never returned by residentActor/ensureResident and still counts
|
|
261
|
+
// against the resident budget until a later eviction or shutdown
|
|
262
|
+
// successfully closes it.
|
|
263
|
+
record.actor = actor;
|
|
264
|
+
record.actorReady = false;
|
|
265
|
+
record.estimatedBytes = 0;
|
|
266
|
+
record.failure = cleanupError;
|
|
267
|
+
this.transition(record, 'failed');
|
|
268
|
+
throw new WebSessionRuntimeRegistryError(503, 'session_actor_cleanup_failed', 'A failed Session actor could not be closed safely.');
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
record.actor = undefined;
|
|
272
|
+
record.actorReady = false;
|
|
273
|
+
record.estimatedBytes = 0;
|
|
274
|
+
record.failure = error;
|
|
275
|
+
this.transition(record, 'failed');
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
async makeCapacityLocked(target) {
|
|
280
|
+
if (this.residentCount < this.maxResidentSessionActors)
|
|
281
|
+
return;
|
|
282
|
+
const candidate = [...this.records.values()]
|
|
283
|
+
.filter(record => record !== target && record.actor && this.isEvictable(record))
|
|
284
|
+
.sort((left, right) => left.lastUsedOrdinal - right.lastUsedOrdinal)[0];
|
|
285
|
+
if (!candidate) {
|
|
286
|
+
throw new WebSessionRuntimeRegistryError(503, 'session_concurrency_limit', 'All resident Session actors are busy; the requested Session remains available read-only.');
|
|
287
|
+
}
|
|
288
|
+
await this.closeResidentLocked(candidate, 'idle Session actor evicted by LRU', 'cold');
|
|
289
|
+
}
|
|
290
|
+
isEvictable(record) {
|
|
291
|
+
return (Boolean(record.actor) &&
|
|
292
|
+
!record.activeRun &&
|
|
293
|
+
!record.queueId &&
|
|
294
|
+
record.pendingApprovalCount === 0 &&
|
|
295
|
+
['idle', 'failed', 'interrupted'].includes(record.phase));
|
|
296
|
+
}
|
|
297
|
+
async closeResidentLocked(record, reason, terminalPhase) {
|
|
298
|
+
const actor = record.actor;
|
|
299
|
+
if (!actor)
|
|
300
|
+
return;
|
|
301
|
+
record.actorReady = false;
|
|
302
|
+
this.transition(record, 'stopping');
|
|
303
|
+
try {
|
|
304
|
+
await this.options.closeActor(actor, reason);
|
|
305
|
+
record.actor = undefined;
|
|
306
|
+
record.estimatedBytes = 0;
|
|
307
|
+
this.transition(record, terminalPhase);
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
record.failure = error;
|
|
311
|
+
this.transition(record, 'failed');
|
|
312
|
+
throw error;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
async startTurn(record, actor, start) {
|
|
316
|
+
record.activeRun = true;
|
|
317
|
+
record.queueId = undefined;
|
|
318
|
+
record.pendingApprovalCount = 0;
|
|
319
|
+
this.runningCountValue += 1;
|
|
320
|
+
this.transition(record, 'running');
|
|
321
|
+
try {
|
|
322
|
+
const started = await start(actor);
|
|
323
|
+
void Promise.resolve(started.settled).then(() => this.finishTurn(record), error => this.finishTurn(record, error));
|
|
324
|
+
return Object.freeze({ accepted: started.accepted, runtime: this.snapshot(record) });
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
this.finishTurn(record, error);
|
|
328
|
+
throw error;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
finishTurn(record, error) {
|
|
332
|
+
if (!record.activeRun)
|
|
333
|
+
return;
|
|
334
|
+
record.activeRun = false;
|
|
335
|
+
record.pendingApprovalCount = 0;
|
|
336
|
+
this.runningCountValue = Math.max(0, this.runningCountValue - 1);
|
|
337
|
+
if (error) {
|
|
338
|
+
record.failure = error;
|
|
339
|
+
this.transition(record, 'failed');
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
record.failure = undefined;
|
|
343
|
+
this.transition(record, 'idle');
|
|
344
|
+
}
|
|
345
|
+
this.drainQueue();
|
|
346
|
+
}
|
|
347
|
+
drainQueue() {
|
|
348
|
+
while (!this.closed && this.runningCountValue < this.maxRunningSessions && this.queue.length) {
|
|
349
|
+
const item = this.queue.shift();
|
|
350
|
+
item.record.queueId = undefined;
|
|
351
|
+
item.record.queuePosition = undefined;
|
|
352
|
+
const actor = item.record.actor;
|
|
353
|
+
if (!actor) {
|
|
354
|
+
item.record.failure = new Error('Queued Session actor is no longer resident.');
|
|
355
|
+
this.transition(item.record, 'failed');
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
void this.startTurn(item.record, actor, item.start).catch(() => undefined);
|
|
359
|
+
}
|
|
360
|
+
this.publishQueuePositions();
|
|
361
|
+
}
|
|
362
|
+
publishQueuePositions() {
|
|
363
|
+
for (const [index, item] of this.queue.entries()) {
|
|
364
|
+
const queuePosition = index + 1;
|
|
365
|
+
if (item.record.queuePosition === queuePosition)
|
|
366
|
+
continue;
|
|
367
|
+
item.record.queuePosition = queuePosition;
|
|
368
|
+
this.bump(item.record);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
snapshot(record) {
|
|
372
|
+
return Object.freeze({
|
|
373
|
+
...record.key,
|
|
374
|
+
runtimeRevision: record.runtimeRevision,
|
|
375
|
+
phase: record.phase,
|
|
376
|
+
...(record.queueId ? { queueId: record.queueId } : {}),
|
|
377
|
+
...(record.queueId && record.queuePosition ? { queuePosition: record.queuePosition } : {}),
|
|
378
|
+
pendingApprovalCount: record.pendingApprovalCount,
|
|
379
|
+
resident: record.actor !== undefined,
|
|
380
|
+
estimatedBytes: record.estimatedBytes,
|
|
381
|
+
updatedAt: new Date(record.updatedAtMs).toISOString(),
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
assertRevision(record, expectedRuntimeRevision) {
|
|
385
|
+
if (expectedRuntimeRevision === undefined)
|
|
386
|
+
return;
|
|
387
|
+
if (expectedRuntimeRevision !== record.runtimeRevision) {
|
|
388
|
+
throw new WebSessionRuntimeRegistryError(409, 'session_runtime_revision_conflict', 'The Session Runtime changed before the operation was admitted.');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
transition(record, phase) {
|
|
392
|
+
record.phase = phase;
|
|
393
|
+
this.bump(record);
|
|
394
|
+
}
|
|
395
|
+
touch(record) {
|
|
396
|
+
record.lastUsedOrdinal = ++this.ordinal;
|
|
397
|
+
record.updatedAtMs = this.now();
|
|
398
|
+
}
|
|
399
|
+
bump(record) {
|
|
400
|
+
record.runtimeRevision = this.createRevision();
|
|
401
|
+
this.touch(record);
|
|
402
|
+
this.publish(record);
|
|
403
|
+
}
|
|
404
|
+
publish(record) {
|
|
405
|
+
this.options.onSummaryChanged?.(this.snapshot(record));
|
|
406
|
+
}
|
|
407
|
+
withCapacityLock(operation) {
|
|
408
|
+
const result = this.capacityQueue.then(operation, operation);
|
|
409
|
+
this.capacityQueue = result.then(() => undefined, () => undefined);
|
|
410
|
+
return result;
|
|
411
|
+
}
|
|
412
|
+
assertOpen() {
|
|
413
|
+
if (this.closed) {
|
|
414
|
+
throw new WebSessionRuntimeRegistryError(503, 'session_registry_closed', 'The Web Session registry is closed.');
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
exports.WebSessionRuntimeRegistryV1 = WebSessionRuntimeRegistryV1;
|
|
419
|
+
class WebSessionRuntimeRegistryError extends Error {
|
|
420
|
+
constructor(status, code, message) {
|
|
421
|
+
super(message);
|
|
422
|
+
this.status = status;
|
|
423
|
+
this.code = code;
|
|
424
|
+
this.name = 'WebSessionRuntimeRegistryError';
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
exports.WebSessionRuntimeRegistryError = WebSessionRuntimeRegistryError;
|
|
428
|
+
function normalizeKey(key) {
|
|
429
|
+
const workspaceId = key.workspaceId.trim();
|
|
430
|
+
const sessionId = key.sessionId.trim();
|
|
431
|
+
if (!workspaceId || !sessionId)
|
|
432
|
+
throw new Error('Session actor identity must not be empty.');
|
|
433
|
+
return Object.freeze({ workspaceId, sessionId });
|
|
434
|
+
}
|
|
435
|
+
function keyId(key) {
|
|
436
|
+
return `${key.workspaceId}\u0000${key.sessionId}`;
|
|
437
|
+
}
|
|
438
|
+
function normalizeBytes(value) {
|
|
439
|
+
return Number.isSafeInteger(value) && value > 0 ? value : 0;
|
|
440
|
+
}
|
|
441
|
+
function boundedInteger(value, fallback, minimum, maximum, name) {
|
|
442
|
+
const candidate = value ?? fallback;
|
|
443
|
+
if (!Number.isSafeInteger(candidate) || candidate < minimum || candidate > maximum) {
|
|
444
|
+
throw new Error(`${name} must be an integer between ${minimum} and ${maximum}.`);
|
|
445
|
+
}
|
|
446
|
+
return candidate;
|
|
447
|
+
}
|
|
448
|
+
//# sourceMappingURL=session-runtime-registry.js.map
|
|
@@ -361,7 +361,7 @@ class TerminalManagerV1 {
|
|
|
361
361
|
entry.outputFlushTimer.unref();
|
|
362
362
|
}
|
|
363
363
|
}
|
|
364
|
-
flushPendingOutput(entry, force) {
|
|
364
|
+
flushPendingOutput(entry, force, final = false) {
|
|
365
365
|
let emitted = false;
|
|
366
366
|
while (entry.pendingOutput.length > 0 &&
|
|
367
367
|
(force || entry.pendingOutput.length >= MAX_OUTPUT_FRAME_CHARS)) {
|
|
@@ -372,14 +372,14 @@ class TerminalManagerV1 {
|
|
|
372
372
|
isLowSurrogate(entry.pendingOutput.charCodeAt(end))) {
|
|
373
373
|
end -= 1;
|
|
374
374
|
}
|
|
375
|
-
if (!
|
|
375
|
+
if (!final &&
|
|
376
376
|
end === entry.pendingOutput.length &&
|
|
377
377
|
isHighSurrogate(entry.pendingOutput.charCodeAt(end - 1))) {
|
|
378
378
|
break;
|
|
379
379
|
}
|
|
380
380
|
if (end <= 0)
|
|
381
381
|
break;
|
|
382
|
-
const value = entry.pendingOutput.slice(0, end);
|
|
382
|
+
const value = replaceUnpairedSurrogates(entry.pendingOutput.slice(0, end));
|
|
383
383
|
entry.pendingOutput = entry.pendingOutput.slice(end);
|
|
384
384
|
const frame = Object.freeze({
|
|
385
385
|
sequence: entry.nextSequence++,
|
|
@@ -405,7 +405,7 @@ class TerminalManagerV1 {
|
|
|
405
405
|
handleExit(entry, event) {
|
|
406
406
|
if (this.terminals.get(entry.id) !== entry)
|
|
407
407
|
return;
|
|
408
|
-
this.flushPendingOutput(entry, true);
|
|
408
|
+
this.flushPendingOutput(entry, true, true);
|
|
409
409
|
entry.state = 'exited';
|
|
410
410
|
entry.exitCode = event.exitCode;
|
|
411
411
|
entry.signal = event.signal;
|
|
@@ -610,6 +610,25 @@ function isHighSurrogate(value) {
|
|
|
610
610
|
function isLowSurrogate(value) {
|
|
611
611
|
return value >= 0xdc00 && value <= 0xdfff;
|
|
612
612
|
}
|
|
613
|
+
function replaceUnpairedSurrogates(value) {
|
|
614
|
+
let normalized = '';
|
|
615
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
616
|
+
const current = value.charCodeAt(index);
|
|
617
|
+
if (isHighSurrogate(current)) {
|
|
618
|
+
const next = value.charCodeAt(index + 1);
|
|
619
|
+
if (isLowSurrogate(next)) {
|
|
620
|
+
normalized += value[index] + value[index + 1];
|
|
621
|
+
index += 1;
|
|
622
|
+
}
|
|
623
|
+
else {
|
|
624
|
+
normalized += '\ufffd';
|
|
625
|
+
}
|
|
626
|
+
continue;
|
|
627
|
+
}
|
|
628
|
+
normalized += isLowSurrogate(current) ? '\ufffd' : value[index];
|
|
629
|
+
}
|
|
630
|
+
return normalized;
|
|
631
|
+
}
|
|
613
632
|
function terminateProcessTree(entry) {
|
|
614
633
|
signalProcessTree(entry, 'SIGTERM');
|
|
615
634
|
}
|
|
@@ -67,6 +67,8 @@ function ownTerminalSocket(webSocket, terminalId, manager) {
|
|
|
67
67
|
let connection;
|
|
68
68
|
let backpressurePaused = false;
|
|
69
69
|
let replayPaused = false;
|
|
70
|
+
const replayTail = [];
|
|
71
|
+
let replayExit;
|
|
70
72
|
let drainTimer;
|
|
71
73
|
let replayTimer;
|
|
72
74
|
const timer = setTimeout(() => webSocket.close(4401, 'Authentication timeout'), AUTH_TIMEOUT_MS);
|
|
@@ -134,12 +136,33 @@ function ownTerminalSocket(webSocket, terminalId, manager) {
|
|
|
134
136
|
checkBackpressure();
|
|
135
137
|
return true;
|
|
136
138
|
};
|
|
139
|
+
const sendExit = (event) => {
|
|
140
|
+
if (!send(event, () => webSocket.close(1000, 'Terminal exited'))) {
|
|
141
|
+
webSocket.close(1000, 'Terminal exited');
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
const drainReplayTail = () => {
|
|
145
|
+
if (webSocket.readyState !== ws_1.WebSocket.OPEN)
|
|
146
|
+
return;
|
|
147
|
+
const next = replayTail.shift();
|
|
148
|
+
if (next !== undefined) {
|
|
149
|
+
send(next, drainReplayTail);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (replayExit !== undefined) {
|
|
153
|
+
const exit = replayExit;
|
|
154
|
+
replayExit = undefined;
|
|
155
|
+
sendExit(exit);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
replayPaused = false;
|
|
159
|
+
applyFlowControl();
|
|
160
|
+
};
|
|
137
161
|
const sendReplay = (values, index = 0) => {
|
|
138
162
|
if (webSocket.readyState !== ws_1.WebSocket.OPEN)
|
|
139
163
|
return;
|
|
140
164
|
if (index >= values.length) {
|
|
141
|
-
|
|
142
|
-
applyFlowControl();
|
|
165
|
+
drainReplayTail();
|
|
143
166
|
return;
|
|
144
167
|
}
|
|
145
168
|
if (webSocket.bufferedAmount >= PAUSE_WS_BUFFERED_BYTES) {
|
|
@@ -183,11 +206,17 @@ function ownTerminalSocket(webSocket, terminalId, manager) {
|
|
|
183
206
|
terminalId,
|
|
184
207
|
ticket: auth.ticket,
|
|
185
208
|
afterSequence: auth.afterSequence,
|
|
186
|
-
onFrame: frame =>
|
|
209
|
+
onFrame: frame => {
|
|
210
|
+
if (replayPaused)
|
|
211
|
+
replayTail.push(frame);
|
|
212
|
+
else
|
|
213
|
+
send(frame);
|
|
214
|
+
},
|
|
187
215
|
onExit: event => {
|
|
188
|
-
if (
|
|
189
|
-
|
|
190
|
-
|
|
216
|
+
if (replayPaused)
|
|
217
|
+
replayExit = event;
|
|
218
|
+
else
|
|
219
|
+
sendExit(event);
|
|
191
220
|
},
|
|
192
221
|
onReplaced: () => webSocket.close(4409, 'Terminal connection replaced'),
|
|
193
222
|
});
|
|
@@ -5,28 +5,36 @@ import { WebEventHub } from './event-hub';
|
|
|
5
5
|
import { FileReadServiceV1 } from './file-read-service';
|
|
6
6
|
import { GitReadModelServiceV1 } from './git-read-model-service';
|
|
7
7
|
import { type WebComposerActionResultV1, type WebComposerActionV1, type WebComposerControlStateV1, type WebBootstrapV1, type WebCommandResultV1, type WebContextActivateRequestV1, type WebContextGuardV1, type WebMcpServerSummaryV1, type WebPageV1, type WebSessionSnapshotV1, type WebSessionSummaryV1, type WebSettingsMutationResultV1, type WebSettingsSnapshotV1, type WebSettingsUpdateRequestV1, type WebSkillSummaryV1, type WebToolDetailPageV1, type WebToolDetailSummaryV1, type WebWorkspaceSummaryV1, type WebWorkspaceProjectSummaryV1 } from './protocol';
|
|
8
|
+
import { type WebSessionRuntimeSummaryV1 } from './session-runtime-registry';
|
|
8
9
|
import { TerminalManagerV1 } from './terminal-manager';
|
|
9
10
|
export { WebWorkbenchError } from './errors';
|
|
10
11
|
export interface WebWorkbenchControllerOptions {
|
|
11
12
|
readonly cwd: string;
|
|
12
13
|
readonly eventHub?: WebEventHub;
|
|
13
14
|
readonly createRuntime?: (cwd: string) => Promise<OrionCodeUiRuntime>;
|
|
15
|
+
readonly createSessionRuntime?: (cwd: string) => Promise<OrionCodeUiRuntime>;
|
|
14
16
|
readonly workspaceRegistry?: WorkspaceRegistryV1;
|
|
15
17
|
}
|
|
16
|
-
/** Owns the
|
|
18
|
+
/** Owns the Workspace surface plus the bounded Web Session actor registry. */
|
|
17
19
|
export declare class WebWorkbenchController {
|
|
18
20
|
readonly eventHub: WebEventHub;
|
|
19
21
|
private workspaceValue;
|
|
20
22
|
private runtimeValue;
|
|
21
23
|
private controllerValue;
|
|
22
24
|
private activeOrionRuntime?;
|
|
25
|
+
private readonly activeOrionRuntimes;
|
|
23
26
|
private readonly createRuntime;
|
|
27
|
+
private readonly createSessionRuntime;
|
|
28
|
+
private sessionRegistry;
|
|
24
29
|
private readonly workspaceRegistry;
|
|
25
30
|
readonly terminalManager: TerminalManagerV1;
|
|
26
31
|
private readonly mutationResults;
|
|
27
32
|
private readonly sessionViews;
|
|
28
33
|
private sessionViewBytes;
|
|
29
34
|
private readonly toolDetails;
|
|
35
|
+
private readonly workspaceMutations;
|
|
36
|
+
private readonly workspaceMutationOwners;
|
|
37
|
+
private readonly pendingWorkspaceMutationStates;
|
|
30
38
|
private fileService;
|
|
31
39
|
private gitService;
|
|
32
40
|
private reviewService;
|
|
@@ -40,8 +48,10 @@ export declare class WebWorkbenchController {
|
|
|
40
48
|
private suppressContextEdges;
|
|
41
49
|
private latestStatus;
|
|
42
50
|
private transition;
|
|
43
|
-
private
|
|
51
|
+
private activeMutationCount;
|
|
52
|
+
private contextTransitionReserved;
|
|
44
53
|
private closed;
|
|
54
|
+
private shutdownResult?;
|
|
45
55
|
private workspaceWatchers;
|
|
46
56
|
private resourceInvalidationTimer?;
|
|
47
57
|
private constructor();
|
|
@@ -60,7 +70,9 @@ export declare class WebWorkbenchController {
|
|
|
60
70
|
listSessions(context?: WebContextGuardV1): readonly WebSessionSummaryV1[];
|
|
61
71
|
sessionSnapshot(sessionId: string, cursor?: string, pageSize?: number, tail?: boolean, context?: WebContextGuardV1): WebSessionSnapshotV1;
|
|
62
72
|
composerState(sessionId: string, context?: WebContextGuardV1): WebComposerControlStateV1;
|
|
63
|
-
|
|
73
|
+
sessionRuntimeSummary(sessionId: string): WebSessionRuntimeSummaryV1;
|
|
74
|
+
waitForSessionIdle(sessionId: string): Promise<void>;
|
|
75
|
+
private projectActorComposerState;
|
|
64
76
|
private projectComposerStateValue;
|
|
65
77
|
modelCatalog(sessionId: string, context?: WebContextGuardV1): import("../runtime/session-composer-control").SessionModelCatalogV1;
|
|
66
78
|
applyComposerAction(input: WebComposerActionV1): Promise<WebComposerActionResultV1>;
|
|
@@ -89,6 +101,14 @@ export declare class WebWorkbenchController {
|
|
|
89
101
|
executeMutation<T>(requestId: string, operation: string, payload: unknown, action: () => T | Promise<T>): Promise<T>;
|
|
90
102
|
diagnostics(context?: WebContextGuardV1): Promise<Record<string, unknown>>;
|
|
91
103
|
shutdown(): Promise<void>;
|
|
104
|
+
private shutdownOwnedResources;
|
|
105
|
+
private createSessionRegistry;
|
|
106
|
+
private createSessionActor;
|
|
107
|
+
private closeSessionActor;
|
|
108
|
+
private emitSessionActorRuntimeEvent;
|
|
109
|
+
private emitWorkspaceMutationState;
|
|
110
|
+
private scheduleActorComposerStateChanged;
|
|
111
|
+
private publishActorComposerState;
|
|
92
112
|
private installRuntime;
|
|
93
113
|
private emitState;
|
|
94
114
|
private emitWorkspaceResourceInvalidation;
|
|
@@ -105,8 +125,12 @@ export declare class WebWorkbenchController {
|
|
|
105
125
|
private rememberSessionView;
|
|
106
126
|
private assertReadyForTransition;
|
|
107
127
|
private assertMutationAdmission;
|
|
128
|
+
private reserveMutation;
|
|
129
|
+
private releaseMutation;
|
|
108
130
|
private assertContextGuard;
|
|
109
131
|
private assertCommandSession;
|
|
132
|
+
private assertSessionWorkspace;
|
|
133
|
+
private sessionActorKey;
|
|
110
134
|
private assertSettingsAvailable;
|
|
111
135
|
private initializeWorkspaceRegistry;
|
|
112
136
|
private activeWorkspaceEntry;
|