openhorse 0.2.19 → 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/coordinator.d.ts.map +1 -1
- package/dist/agents/fork.d.ts.map +1 -1
- package/dist/agents/fork.js +0 -1
- package/dist/agents/fork.js.map +1 -1
- package/dist/agents/worker-pool.d.ts.map +1 -1
- package/dist/agents/worker-pool.js +3 -1
- package/dist/agents/worker-pool.js.map +1 -1
- package/dist/cli.js +28 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +202 -77
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/parser.d.ts.map +1 -1
- package/dist/commands/parser.js +8 -3
- package/dist/commands/parser.js.map +1 -1
- package/dist/commands/types.d.ts +2 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/core/checkpoint.d.ts.map +1 -1
- package/dist/core/checkpoint.js +3 -0
- package/dist/core/checkpoint.js.map +1 -1
- package/dist/core/cost-tracker.d.ts +45 -5
- package/dist/core/cost-tracker.d.ts.map +1 -1
- package/dist/core/cost-tracker.js +78 -13
- package/dist/core/cost-tracker.js.map +1 -1
- package/dist/framework/index.d.ts +1 -1
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/prompt.d.ts.map +1 -1
- package/dist/framework/prompt.js +16 -0
- package/dist/framework/prompt.js.map +1 -1
- package/dist/framework/query.d.ts +25 -0
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +196 -56
- package/dist/framework/query.js.map +1 -1
- package/dist/framework/store.d.ts +6 -1
- package/dist/framework/store.d.ts.map +1 -1
- package/dist/framework/store.js +10 -1
- package/dist/framework/store.js.map +1 -1
- package/dist/harness/context-harness.d.ts.map +1 -1
- package/dist/harness/context-harness.js +6 -1
- package/dist/harness/context-harness.js.map +1 -1
- package/dist/harness/ledger.d.ts +1 -0
- package/dist/harness/ledger.d.ts.map +1 -1
- package/dist/harness/ledger.js +12 -0
- package/dist/harness/ledger.js.map +1 -1
- package/dist/harness/safety.d.ts +2 -0
- package/dist/harness/safety.d.ts.map +1 -1
- package/dist/harness/safety.js +27 -3
- package/dist/harness/safety.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/dist/ink-ui/components/Markdown.d.ts +1 -1
- package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
- package/dist/ink-ui/components/Markdown.js +1 -1
- package/dist/ink-ui/components/Markdown.js.map +1 -1
- package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
- package/dist/ink-ui/components/StatusLine.js +0 -2
- package/dist/ink-ui/components/StatusLine.js.map +1 -1
- package/dist/ink-ui/runtime/grapheme.d.ts +9 -8
- package/dist/ink-ui/runtime/grapheme.d.ts.map +1 -1
- package/dist/ink-ui/runtime/grapheme.js +14 -60
- package/dist/ink-ui/runtime/grapheme.js.map +1 -1
- package/dist/ink-ui/runtime/input-buffer.d.ts +9 -31
- package/dist/ink-ui/runtime/input-buffer.d.ts.map +1 -1
- package/dist/ink-ui/runtime/input-buffer.js +15 -162
- package/dist/ink-ui/runtime/input-buffer.js.map +1 -1
- package/dist/ink-ui/runtime/native-cursor.js +0 -25
- package/dist/ink-ui/runtime/native-cursor.js.map +1 -1
- package/dist/ink-ui/runtime/prompt-layout.d.ts +9 -29
- package/dist/ink-ui/runtime/prompt-layout.d.ts.map +1 -1
- package/dist/ink-ui/runtime/prompt-layout.js +18 -166
- package/dist/ink-ui/runtime/prompt-layout.js.map +1 -1
- package/dist/ink-ui/runtime/transcript-state.d.ts.map +1 -1
- package/dist/ink-ui/runtime/transcript-state.js +2 -0
- package/dist/ink-ui/runtime/transcript-state.js.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.js +23 -5
- package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
- package/dist/memory/entrypoint.js +1 -1
- package/dist/memory/entrypoint.js.map +1 -1
- package/dist/memory/storage.js +1 -1
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/store.d.ts +1 -0
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +9 -0
- package/dist/memory/store.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +25 -0
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +6 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/chat-controller.d.ts +27 -0
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +374 -88
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/runtime/composer/buffer.d.ts +43 -0
- package/dist/runtime/composer/buffer.d.ts.map +1 -0
- package/dist/runtime/composer/buffer.js +176 -0
- package/dist/runtime/composer/buffer.js.map +1 -0
- package/dist/runtime/composer/grapheme.d.ts +19 -0
- package/dist/runtime/composer/grapheme.d.ts.map +1 -0
- package/dist/runtime/composer/grapheme.js +73 -0
- package/dist/runtime/composer/grapheme.js.map +1 -0
- package/dist/runtime/composer/history.d.ts +39 -0
- package/dist/runtime/composer/history.d.ts.map +1 -0
- package/dist/runtime/composer/history.js +91 -0
- package/dist/runtime/composer/history.js.map +1 -0
- package/dist/runtime/composer/layout.d.ts +40 -0
- package/dist/runtime/composer/layout.d.ts.map +1 -0
- package/dist/runtime/composer/layout.js +174 -0
- package/dist/runtime/composer/layout.js.map +1 -0
- package/dist/runtime/rich-text/ansi-parser.d.ts +31 -0
- package/dist/runtime/rich-text/ansi-parser.d.ts.map +1 -0
- package/dist/runtime/rich-text/ansi-parser.js +310 -0
- package/dist/runtime/rich-text/ansi-parser.js.map +1 -0
- package/dist/runtime/rich-text/layout.d.ts +12 -0
- package/dist/runtime/rich-text/layout.d.ts.map +1 -0
- package/dist/runtime/rich-text/layout.js +362 -0
- package/dist/runtime/rich-text/layout.js.map +1 -0
- package/dist/runtime/rich-text/markdown-parser.d.ts +17 -0
- package/dist/runtime/rich-text/markdown-parser.d.ts.map +1 -0
- package/dist/runtime/rich-text/markdown-parser.js +218 -0
- package/dist/runtime/rich-text/markdown-parser.js.map +1 -0
- package/dist/runtime/rich-text/sanitizer.d.ts +18 -0
- package/dist/runtime/rich-text/sanitizer.d.ts.map +1 -0
- package/dist/runtime/rich-text/sanitizer.js +32 -0
- package/dist/runtime/rich-text/sanitizer.js.map +1 -0
- package/dist/runtime/rich-text/types.d.ts +59 -0
- package/dist/runtime/rich-text/types.d.ts.map +1 -0
- package/dist/runtime/rich-text/types.js +17 -0
- package/dist/runtime/rich-text/types.js.map +1 -0
- package/dist/runtime/subagents/budget.d.ts +118 -0
- package/dist/runtime/subagents/budget.d.ts.map +1 -0
- package/dist/runtime/subagents/budget.js +173 -0
- package/dist/runtime/subagents/budget.js.map +1 -0
- package/dist/runtime/subagents/child-executor-guard.d.ts +60 -0
- package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -0
- package/dist/runtime/subagents/child-executor-guard.js +219 -0
- package/dist/runtime/subagents/child-executor-guard.js.map +1 -0
- package/dist/runtime/subagents/context-builder.d.ts +34 -0
- package/dist/runtime/subagents/context-builder.d.ts.map +1 -0
- package/dist/runtime/subagents/context-builder.js +99 -0
- package/dist/runtime/subagents/context-builder.js.map +1 -0
- package/dist/runtime/subagents/index.d.ts +21 -0
- package/dist/runtime/subagents/index.d.ts.map +1 -0
- package/dist/runtime/subagents/index.js +62 -0
- package/dist/runtime/subagents/index.js.map +1 -0
- package/dist/runtime/subagents/policy.d.ts +68 -0
- package/dist/runtime/subagents/policy.d.ts.map +1 -0
- package/dist/runtime/subagents/policy.js +230 -0
- package/dist/runtime/subagents/policy.js.map +1 -0
- package/dist/runtime/subagents/presets.d.ts +44 -0
- package/dist/runtime/subagents/presets.d.ts.map +1 -0
- package/dist/runtime/subagents/presets.js +148 -0
- package/dist/runtime/subagents/presets.js.map +1 -0
- package/dist/runtime/subagents/production.d.ts +44 -0
- package/dist/runtime/subagents/production.d.ts.map +1 -0
- package/dist/runtime/subagents/production.js +143 -0
- package/dist/runtime/subagents/production.js.map +1 -0
- package/dist/runtime/subagents/provider-gate.d.ts +99 -0
- package/dist/runtime/subagents/provider-gate.d.ts.map +1 -0
- package/dist/runtime/subagents/provider-gate.js +186 -0
- package/dist/runtime/subagents/provider-gate.js.map +1 -0
- package/dist/runtime/subagents/result-parser.d.ts +40 -0
- package/dist/runtime/subagents/result-parser.d.ts.map +1 -0
- package/dist/runtime/subagents/result-parser.js +240 -0
- package/dist/runtime/subagents/result-parser.js.map +1 -0
- package/dist/runtime/subagents/runner.d.ts +53 -0
- package/dist/runtime/subagents/runner.d.ts.map +1 -0
- package/dist/runtime/subagents/runner.js +172 -0
- package/dist/runtime/subagents/runner.js.map +1 -0
- package/dist/runtime/subagents/runtime-integration.d.ts +73 -0
- package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -0
- package/dist/runtime/subagents/runtime-integration.js +148 -0
- package/dist/runtime/subagents/runtime-integration.js.map +1 -0
- package/dist/runtime/subagents/supervisor.d.ts +79 -0
- package/dist/runtime/subagents/supervisor.d.ts.map +1 -0
- package/dist/runtime/subagents/supervisor.js +301 -0
- package/dist/runtime/subagents/supervisor.js.map +1 -0
- package/dist/runtime/subagents/tool.d.ts +38 -0
- package/dist/runtime/subagents/tool.d.ts.map +1 -0
- package/dist/runtime/subagents/tool.js +171 -0
- package/dist/runtime/subagents/tool.js.map +1 -0
- package/dist/runtime/subagents/types.d.ts +152 -0
- package/dist/runtime/subagents/types.d.ts.map +1 -0
- package/dist/runtime/subagents/types.js +56 -0
- package/dist/runtime/subagents/types.js.map +1 -0
- package/dist/runtime/ui-events.d.ts +18 -0
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/runtime/ui-view-model.d.ts +44 -1
- package/dist/runtime/ui-view-model.d.ts.map +1 -1
- package/dist/runtime/ui-view-model.js +90 -37
- package/dist/runtime/ui-view-model.js.map +1 -1
- package/dist/sdk/query.d.ts.map +1 -1
- package/dist/sdk/query.js +0 -1
- package/dist/sdk/query.js.map +1 -1
- package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixHook.js +3 -2
- package/dist/services/auto-fix/autoFixHook.js.map +1 -1
- package/dist/services/auto-fix/autoFixRunner.d.ts +2 -2
- package/dist/services/auto-fix/autoFixRunner.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixRunner.js +2 -2
- package/dist/services/auto-fix/autoFixRunner.js.map +1 -1
- package/dist/services/compact/auto-compact.d.ts +15 -2
- package/dist/services/compact/auto-compact.d.ts.map +1 -1
- package/dist/services/compact/auto-compact.js +59 -27
- package/dist/services/compact/auto-compact.js.map +1 -1
- package/dist/services/compact/compact.d.ts +2 -0
- package/dist/services/compact/compact.d.ts.map +1 -1
- package/dist/services/compact/compact.js +22 -5
- package/dist/services/compact/compact.js.map +1 -1
- package/dist/services/compact/coordinator.d.ts +26 -0
- package/dist/services/compact/coordinator.d.ts.map +1 -0
- package/dist/services/compact/coordinator.js +44 -0
- package/dist/services/compact/coordinator.js.map +1 -0
- package/dist/services/compact/index.d.ts +1 -0
- package/dist/services/compact/index.d.ts.map +1 -1
- package/dist/services/compact/index.js +3 -1
- package/dist/services/compact/index.js.map +1 -1
- package/dist/services/compact/summary-generator.d.ts +6 -2
- package/dist/services/compact/summary-generator.d.ts.map +1 -1
- package/dist/services/compact/summary-generator.js +73 -32
- package/dist/services/compact/summary-generator.js.map +1 -1
- package/dist/services/concurrent-sessions.d.ts.map +1 -1
- package/dist/services/concurrent-sessions.js +3 -0
- package/dist/services/concurrent-sessions.js.map +1 -1
- package/dist/services/config-dir.d.ts +11 -1
- package/dist/services/config-dir.d.ts.map +1 -1
- package/dist/services/config-dir.js +19 -2
- package/dist/services/config-dir.js.map +1 -1
- package/dist/services/config.d.ts +13 -4
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +85 -4
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts +2 -0
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +9 -2
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/global-config.d.ts +33 -1
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +3 -0
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/llm.d.ts +21 -4
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +75 -9
- package/dist/services/llm.js.map +1 -1
- package/dist/services/mcp/transports.d.ts +2 -0
- package/dist/services/mcp/transports.d.ts.map +1 -1
- package/dist/services/mcp/transports.js +23 -2
- package/dist/services/mcp/transports.js.map +1 -1
- package/dist/services/memory.d.ts.map +1 -1
- package/dist/services/memory.js.map +1 -1
- package/dist/services/model-context.d.ts +36 -0
- package/dist/services/model-context.d.ts.map +1 -1
- package/dist/services/model-context.js +243 -31
- package/dist/services/model-context.js.map +1 -1
- package/dist/services/redaction.js +1 -1
- package/dist/services/redaction.js.map +1 -1
- package/dist/services/session-memory/sessionMemory.js +1 -1
- package/dist/services/session-memory/sessionMemory.js.map +1 -1
- package/dist/services/session-storage.d.ts +39 -1
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +156 -28
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/task-manager.d.ts +2 -0
- package/dist/services/task-manager.d.ts.map +1 -1
- package/dist/services/task-manager.js +13 -0
- package/dist/services/task-manager.js.map +1 -1
- package/dist/services/usage-state.d.ts +55 -5
- package/dist/services/usage-state.d.ts.map +1 -1
- package/dist/services/usage-state.js +188 -59
- package/dist/services/usage-state.js.map +1 -1
- package/dist/services/verification-profile.d.ts.map +1 -1
- package/dist/services/verification-profile.js +3 -2
- package/dist/services/verification-profile.js.map +1 -1
- package/dist/services/workspace-diff.d.ts.map +1 -1
- package/dist/services/workspace-diff.js +34 -3
- package/dist/services/workspace-diff.js.map +1 -1
- package/dist/services/yaml-config.js +1 -1
- package/dist/skills/loader.d.ts +1 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +1 -1
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/registry.d.ts +1 -1
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +1 -1
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/runtime.d.ts +9 -5
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +157 -12
- package/dist/skills/runtime.js.map +1 -1
- package/dist/terminal-ui/launch.d.ts +20 -3
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +86 -25
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/terminal-ui/raw-editor.d.ts +9 -0
- package/dist/terminal-ui/raw-editor.d.ts.map +1 -1
- package/dist/terminal-ui/raw-editor.js +207 -30
- package/dist/terminal-ui/raw-editor.js.map +1 -1
- package/dist/tools/bash_security.d.ts.map +1 -1
- package/dist/tools/bash_security.js +14 -5
- package/dist/tools/bash_security.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +51 -24
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/plan.d.ts.map +1 -1
- package/dist/tools/plan.js +7 -0
- package/dist/tools/plan.js.map +1 -1
- package/dist/tools/web.d.ts +10 -0
- package/dist/tools/web.d.ts.map +1 -1
- package/dist/tools/web.js +84 -4
- package/dist/tools/web.js.map +1 -1
- package/dist/tui-core/frame.d.ts +13 -1
- package/dist/tui-core/frame.d.ts.map +1 -1
- package/dist/tui-core/frame.js +61 -8
- package/dist/tui-core/frame.js.map +1 -1
- package/dist/tui-core/input-parser.d.ts +1 -1
- package/dist/tui-core/input-parser.d.ts.map +1 -1
- package/dist/tui-core/input-parser.js +20 -1
- package/dist/tui-core/input-parser.js.map +1 -1
- package/dist/tui-core/style.d.ts +103 -0
- package/dist/tui-core/style.d.ts.map +1 -0
- package/dist/tui-core/style.js +269 -0
- package/dist/tui-core/style.js.map +1 -0
- package/dist/tui-core/terminal-writer.d.ts.map +1 -1
- package/dist/tui-core/terminal-writer.js +16 -3
- package/dist/tui-core/terminal-writer.js.map +1 -1
- package/dist/tui-ui/inline-surface.d.ts +185 -0
- package/dist/tui-ui/inline-surface.d.ts.map +1 -0
- package/dist/tui-ui/inline-surface.js +615 -0
- package/dist/tui-ui/inline-surface.js.map +1 -0
- package/dist/tui-ui/launch.d.ts +1 -0
- package/dist/tui-ui/launch.d.ts.map +1 -1
- package/dist/tui-ui/launch.js +398 -69
- package/dist/tui-ui/launch.js.map +1 -1
- package/dist/tui-ui/layout.d.ts +51 -2
- package/dist/tui-ui/layout.d.ts.map +1 -1
- package/dist/tui-ui/layout.js +240 -77
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/render-scheduler.d.ts +37 -0
- package/dist/tui-ui/render-scheduler.d.ts.map +1 -0
- package/dist/tui-ui/render-scheduler.js +118 -0
- package/dist/tui-ui/render-scheduler.js.map +1 -0
- package/dist/tui-ui/runner.d.ts +78 -5
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +317 -22
- package/dist/tui-ui/runner.js.map +1 -1
- package/dist/tui-ui/state.d.ts +38 -7
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +199 -40
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/tui-ui/theme.d.ts +13 -0
- package/dist/tui-ui/theme.d.ts.map +1 -0
- package/dist/tui-ui/theme.js +20 -0
- package/dist/tui-ui/theme.js.map +1 -0
- package/dist/tui-ui/transcript-cache.d.ts +35 -0
- package/dist/tui-ui/transcript-cache.d.ts.map +1 -0
- package/dist/tui-ui/transcript-cache.js +74 -0
- package/dist/tui-ui/transcript-cache.js.map +1 -0
- package/dist/tui-ui/transcript-layout.d.ts +21 -0
- package/dist/tui-ui/transcript-layout.d.ts.map +1 -0
- package/dist/tui-ui/transcript-layout.js +398 -0
- package/dist/tui-ui/transcript-layout.js.map +1 -0
- package/dist/ui/box.d.ts.map +1 -1
- package/dist/ui/box.js +0 -11
- package/dist/ui/box.js.map +1 -1
- package/dist/ui/command-panel.d.ts.map +1 -1
- package/dist/ui/command-panel.js +1 -3
- package/dist/ui/command-panel.js.map +1 -1
- package/dist/ui/file-completion.js +1 -1
- package/dist/ui/file-completion.js.map +1 -1
- package/dist/ui/markdown.d.ts.map +1 -1
- package/dist/ui/markdown.js +1 -2
- package/dist/ui/markdown.js.map +1 -1
- package/dist/ui/multiline-input.d.ts.map +1 -1
- package/dist/ui/multiline-input.js +1 -2
- package/dist/ui/multiline-input.js.map +1 -1
- package/dist/ui/progress.d.ts.map +1 -1
- package/dist/ui/progress.js +0 -3
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/status-bar.d.ts +1 -1
- package/dist/ui/status-bar.d.ts.map +1 -1
- package/dist/ui/status-bar.js +2 -16
- package/dist/ui/status-bar.js.map +1 -1
- package/dist/ui/stream-markdown.d.ts +3 -0
- package/dist/ui/stream-markdown.d.ts.map +1 -1
- package/dist/ui/stream-markdown.js +0 -6
- package/dist/ui/stream-markdown.js.map +1 -1
- package/dist/ui/tool-preview.d.ts.map +1 -1
- package/dist/ui/tool-preview.js +0 -1
- package/dist/ui/tool-preview.js.map +1 -1
- package/dist/ui-v2/components/shell.d.ts.map +1 -1
- package/dist/ui-v2/components/shell.js +0 -8
- package/dist/ui-v2/components/shell.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli-dbg.js +0 -717
- package/dist/cli-debug.d.ts +0 -7
- package/dist/cli-debug.d.ts.map +0 -1
- package/dist/cli-debug.js +0 -717
- package/dist/cli-debug.js.map +0 -1
- package/dist/cli-debug2.d.ts +0 -7
- package/dist/cli-debug2.d.ts.map +0 -1
- package/dist/cli-debug2.js +0 -717
- package/dist/cli-debug2.js.map +0 -1
- package/dist/cli-debug3.d.ts +0 -7
- package/dist/cli-debug3.d.ts.map +0 -1
- package/dist/cli-debug3.js +0 -719
- package/dist/cli-debug3.js.map +0 -1
- package/dist/cli-ink.d.ts +0 -8
- package/dist/cli-ink.d.ts.map +0 -1
- package/dist/cli-ink.js +0 -32
- package/dist/cli-ink.js.map +0 -1
- package/dist/cli-patch.js +0 -716
- package/dist/cli-test.js +0 -726
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../../src/runtime/rich-text/sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rich text sanitizer.
|
|
4
|
+
*
|
|
5
|
+
* Delegates to the shared terminal sanitizer for control-character stripping,
|
|
6
|
+
* then applies additional rich-text-specific normalization for Markdown
|
|
7
|
+
* parsing safety.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.sanitizeRichTextInput = sanitizeRichTextInput;
|
|
11
|
+
exports.sanitizeCodeContent = sanitizeCodeContent;
|
|
12
|
+
const style_1 = require("../../tui-core/style");
|
|
13
|
+
/**
|
|
14
|
+
* Sanitize raw model text before Markdown parsing.
|
|
15
|
+
* Normalizes line endings first, then strips ANSI/escape sequences.
|
|
16
|
+
*/
|
|
17
|
+
function sanitizeRichTextInput(text) {
|
|
18
|
+
// Normalize line endings BEFORE stripping control chars (so \r is preserved).
|
|
19
|
+
const normalized = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
20
|
+
// Strip escape sequences and control chars (except \n, \t).
|
|
21
|
+
return (0, style_1.sanitizeTerminalText)(normalized, 4);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Sanitize a code block's content for display.
|
|
25
|
+
* Preserves whitespace and indentation, strips escape sequences.
|
|
26
|
+
*/
|
|
27
|
+
function sanitizeCodeContent(code) {
|
|
28
|
+
// Code blocks keep their content mostly intact but strip ANSI escape sequences.
|
|
29
|
+
const normalized = code.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
30
|
+
return (0, style_1.sanitizeTerminalText)(normalized, 4);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=sanitizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/runtime/rich-text/sanitizer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAQH,sDAKC;AAMD,kDAIC;AArBD,gDAA4D;AAE5D;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,8EAA8E;IAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpE,4DAA4D;IAC5D,OAAO,IAAA,4BAAoB,EAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,gFAAgF;IAChF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpE,OAAO,IAAA,4BAAoB,EAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rich text block model: renderer-independent structured Markdown output.
|
|
3
|
+
*
|
|
4
|
+
* Parsed from model text via marked.lexer(), normalized into a fixed
|
|
5
|
+
* block/span union. Layout consumes this model to produce StyledRow[]
|
|
6
|
+
* without depending on React or JSX.
|
|
7
|
+
*/
|
|
8
|
+
import type { TuiStyle } from '../../tui-core/style';
|
|
9
|
+
export interface RichTextSpan {
|
|
10
|
+
text: string;
|
|
11
|
+
bold?: boolean;
|
|
12
|
+
italic?: boolean;
|
|
13
|
+
code?: boolean;
|
|
14
|
+
linkUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface DiffLine {
|
|
17
|
+
kind: 'add' | 'remove' | 'context' | 'hunk' | 'meta';
|
|
18
|
+
content: string;
|
|
19
|
+
}
|
|
20
|
+
export type RichTextBlock = {
|
|
21
|
+
type: 'paragraph';
|
|
22
|
+
spans: RichTextSpan[];
|
|
23
|
+
} | {
|
|
24
|
+
type: 'heading';
|
|
25
|
+
level: number;
|
|
26
|
+
spans: RichTextSpan[];
|
|
27
|
+
} | {
|
|
28
|
+
type: 'list';
|
|
29
|
+
ordered: boolean;
|
|
30
|
+
items: RichTextBlock[][];
|
|
31
|
+
} | {
|
|
32
|
+
type: 'quote';
|
|
33
|
+
blocks: RichTextBlock[];
|
|
34
|
+
} | {
|
|
35
|
+
type: 'code';
|
|
36
|
+
language?: string;
|
|
37
|
+
lines: string[];
|
|
38
|
+
} | {
|
|
39
|
+
type: 'diff';
|
|
40
|
+
lines: DiffLine[];
|
|
41
|
+
} | {
|
|
42
|
+
type: 'table';
|
|
43
|
+
headers: RichTextSpan[][];
|
|
44
|
+
rows: RichTextSpan[][][];
|
|
45
|
+
} | {
|
|
46
|
+
type: 'rule';
|
|
47
|
+
};
|
|
48
|
+
export interface RichTextDocument {
|
|
49
|
+
blocks: RichTextBlock[];
|
|
50
|
+
}
|
|
51
|
+
export declare const MAX_RICH_TEXT_INPUT_BYTES = 1000000;
|
|
52
|
+
export declare const MAX_RICH_TEXT_BLOCKS = 2000;
|
|
53
|
+
export declare const MAX_MARKDOWN_NESTING = 4;
|
|
54
|
+
export declare const MAX_TABLE_COLUMNS = 20;
|
|
55
|
+
export declare const MAX_TABLE_ROWS = 200;
|
|
56
|
+
export type RichTextStyleToken = 'assistantText' | 'heading' | 'code' | 'inlineCode' | 'link' | 'diffAdded' | 'diffRemoved' | 'diffHunk' | 'warning' | 'error' | 'muted';
|
|
57
|
+
/** Resolve a semantic token to a TuiStyle via theme. */
|
|
58
|
+
export type RichTextThemeResolver = (token: RichTextStyleToken) => TuiStyle;
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/rich-text/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,EAAE,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAGD,eAAO,MAAM,yBAAyB,UAAY,CAAC;AACnD,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAC1C,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,cAAc,MAAM,CAAC;AAGlC,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,SAAS,GACT,MAAM,GACN,YAAY,GACZ,MAAM,GACN,WAAW,GACX,aAAa,GACb,UAAU,GACV,SAAS,GACT,OAAO,GACP,OAAO,CAAC;AAEZ,wDAAwD;AACxD,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,QAAQ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rich text block model: renderer-independent structured Markdown output.
|
|
4
|
+
*
|
|
5
|
+
* Parsed from model text via marked.lexer(), normalized into a fixed
|
|
6
|
+
* block/span union. Layout consumes this model to produce StyledRow[]
|
|
7
|
+
* without depending on React or JSX.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.MAX_TABLE_ROWS = exports.MAX_TABLE_COLUMNS = exports.MAX_MARKDOWN_NESTING = exports.MAX_RICH_TEXT_BLOCKS = exports.MAX_RICH_TEXT_INPUT_BYTES = void 0;
|
|
11
|
+
// Resource limits (deterministic degradation, never OOM)
|
|
12
|
+
exports.MAX_RICH_TEXT_INPUT_BYTES = 1000000;
|
|
13
|
+
exports.MAX_RICH_TEXT_BLOCKS = 2000;
|
|
14
|
+
exports.MAX_MARKDOWN_NESTING = 4;
|
|
15
|
+
exports.MAX_TABLE_COLUMNS = 20;
|
|
16
|
+
exports.MAX_TABLE_ROWS = 200;
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/rich-text/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA+BH,yDAAyD;AAC5C,QAAA,yBAAyB,GAAG,OAAS,CAAC;AACtC,QAAA,oBAAoB,GAAG,IAAK,CAAC;AAC7B,QAAA,oBAAoB,GAAG,CAAC,CAAC;AACzB,QAAA,iBAAiB,GAAG,EAAE,CAAC;AACvB,QAAA,cAAc,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent budget ledger: reserve before launch, reconcile after completion.
|
|
3
|
+
*
|
|
4
|
+
* The root turn owns an aggregate budget (model requests, tool calls,
|
|
5
|
+
* model-visible bytes, wall-clock time). Children draw against it. To avoid
|
|
6
|
+
* over-spending, the Supervisor reserves a per-task allowance up front and
|
|
7
|
+
* releases the difference once the real usage is known.
|
|
8
|
+
*
|
|
9
|
+
* This ledger is the single source of truth for child aggregate usage; the
|
|
10
|
+
* root loop reads it to fold child cost into `/cost` and loop stats.
|
|
11
|
+
*/
|
|
12
|
+
import type { SubtaskUsage } from './types';
|
|
13
|
+
export interface SubagentBudgetLimits {
|
|
14
|
+
/** Total model requests allowed across all children in one root turn. */
|
|
15
|
+
maxModelRequestsPerTurn: number;
|
|
16
|
+
/** Per-child model request allowance. */
|
|
17
|
+
maxModelRequestsPerTask: number;
|
|
18
|
+
/** Per-child tool call allowance. */
|
|
19
|
+
maxToolCallsPerTask: number;
|
|
20
|
+
/** Per-child wall-clock timeout (ms). */
|
|
21
|
+
timeoutMs: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ReservedBudget {
|
|
24
|
+
taskId: string;
|
|
25
|
+
modelRequests: number;
|
|
26
|
+
}
|
|
27
|
+
export interface BudgetSnapshot {
|
|
28
|
+
/** Requests reserved but not yet reconciled. */
|
|
29
|
+
reservedModelRequests: number;
|
|
30
|
+
/** Reconciled (actual observed) usage so far - never clamped to hide overage. */
|
|
31
|
+
used: SubtaskUsage;
|
|
32
|
+
/** Requests still available for new reservations. */
|
|
33
|
+
availableModelRequests: number;
|
|
34
|
+
/** Whether the aggregate limit has been exceeded by actual usage. */
|
|
35
|
+
exhausted: boolean;
|
|
36
|
+
/** Per-task overage events: observed usage exceeded an enforced allowance. */
|
|
37
|
+
violations: BudgetViolation[];
|
|
38
|
+
}
|
|
39
|
+
export interface BudgetViolation {
|
|
40
|
+
taskId: string;
|
|
41
|
+
/** The enforced limit that was exceeded. */
|
|
42
|
+
limit: 'maxModelRequestsPerTask' | 'maxToolCallsPerTask' | 'timeoutMs' | 'maxModelRequestsPerTurn';
|
|
43
|
+
/** The observed value. */
|
|
44
|
+
observed: number;
|
|
45
|
+
/** The enforced ceiling. */
|
|
46
|
+
enforced: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* R6: turn-level mutable state shared across all `subtask` calls within one
|
|
50
|
+
* root turn. Lives on the SubagentTurnBundle so multiple `subtask` tool calls
|
|
51
|
+
* in the same turn see a consistent counter - the per-batch reset that
|
|
52
|
+
* previously let a turn exceed `maxTasksPerTurn` is gone.
|
|
53
|
+
*/
|
|
54
|
+
export declare class TurnTaskState {
|
|
55
|
+
private started;
|
|
56
|
+
/** Increment by `n` and return the new total. Called atomically by the
|
|
57
|
+
* supervisor after policy allows a batch. */
|
|
58
|
+
addStarted(n: number): number;
|
|
59
|
+
/** Total tasks started in this root turn (across all `subtask` calls). */
|
|
60
|
+
tasksStarted(): number;
|
|
61
|
+
reset(): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Aggregate budget ledger for one root turn. Not thread-safe by itself;
|
|
65
|
+
* the Supervisor serializes mutations.
|
|
66
|
+
*
|
|
67
|
+
* R6: observed usage is recorded faithfully (never clamped to hide overage).
|
|
68
|
+
* The enforced allowance and observed usage are modeled separately, so `/cost`
|
|
69
|
+
* and telemetry reflect the truth while the runtime still stops children that
|
|
70
|
+
* exceed their allowance.
|
|
71
|
+
*/
|
|
72
|
+
export declare class SubagentBudgetLedger {
|
|
73
|
+
private readonly limits;
|
|
74
|
+
private reserved;
|
|
75
|
+
private reconciled;
|
|
76
|
+
private violations;
|
|
77
|
+
constructor(limits: SubagentBudgetLimits);
|
|
78
|
+
/** Reserve model-request slots for a task. Returns false if unavailable. */
|
|
79
|
+
reserve(taskId: string, requestedRequests: number): ReservedBudget | null;
|
|
80
|
+
/** Release a reservation without consuming (e.g. task rejected after reserve). */
|
|
81
|
+
release(taskId: string): void;
|
|
82
|
+
/**
|
|
83
|
+
* Reconcile actual usage for a task. Releases its reservation and debits
|
|
84
|
+
* the REAL usage (never clamped). Records a violation if observed usage
|
|
85
|
+
* exceeded an enforced per-task or aggregate ceiling. Returns true if the
|
|
86
|
+
* aggregate turn limit is still respected.
|
|
87
|
+
*
|
|
88
|
+
* R6: observed usage is stored as-is so `/cost` and telemetry are truthful.
|
|
89
|
+
*/
|
|
90
|
+
reconcile(taskId: string, actual: SubtaskUsage): boolean;
|
|
91
|
+
availableModelRequests(): number;
|
|
92
|
+
/**
|
|
93
|
+
* Whether `count` new tasks can each reserve at least one model request.
|
|
94
|
+
* NOTE: this checks the minimum (1 request per task), not the full
|
|
95
|
+
* per-task cap. The supervisor's reserve loop (supervisor.ts:158-179)
|
|
96
|
+
* handles per-task reserve amounts individually.
|
|
97
|
+
*/
|
|
98
|
+
canReserveBatch(count: number): boolean;
|
|
99
|
+
snapshot(): BudgetSnapshot;
|
|
100
|
+
/** Reconciled aggregate usage across all completed children. */
|
|
101
|
+
aggregateUsage(): SubtaskUsage;
|
|
102
|
+
/** Number of tasks that have been reconciled (completed/failed/cancelled). */
|
|
103
|
+
reconciledTaskCount(): number;
|
|
104
|
+
/** Recorded overage violations (observed exceeded enforced ceiling). */
|
|
105
|
+
violationsList(): BudgetViolation[];
|
|
106
|
+
/** True if no reservations are outstanding and no usage has been recorded. */
|
|
107
|
+
isClean(): boolean;
|
|
108
|
+
private aggregateReservedOrUsed;
|
|
109
|
+
private aggregateUsedModelRequests;
|
|
110
|
+
}
|
|
111
|
+
/** Build limits from a SubagentConfig. */
|
|
112
|
+
export declare function budgetLimitsFromConfig(config: {
|
|
113
|
+
maxModelRequestsPerTurn: number;
|
|
114
|
+
maxModelRequestsPerTask: number;
|
|
115
|
+
maxToolCallsPerTask: number;
|
|
116
|
+
timeoutMs: number;
|
|
117
|
+
}): SubagentBudgetLimits;
|
|
118
|
+
//# sourceMappingURL=budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../src/runtime/subagents/budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,uBAAuB,EAAE,MAAM,CAAC;IAChC,yCAAyC;IACzC,uBAAuB,EAAE,MAAM,CAAC;IAChC,qCAAqC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iFAAiF;IACjF,IAAI,EAAE,YAAY,CAAC;IACnB,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,yBAAyB,GAAG,qBAAqB,GAAG,WAAW,GAAG,yBAAyB,CAAC;IACnG,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAK;IAEpB;iDAC6C;IAC7C,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAK7B,0EAA0E;IAC1E,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,IAAI;CAGd;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAyB;gBAE/B,MAAM,EAAE,oBAAoB;IAIxC,4EAA4E;IAC5E,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQzE,kFAAkF;IAClF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO;IAkCxD,sBAAsB,IAAI,MAAM;IAIhC;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIvC,QAAQ,IAAI,cAAc;IAe1B,gEAAgE;IAChE,cAAc,IAAI,YAAY;IAI9B,8EAA8E;IAC9E,mBAAmB,IAAI,MAAM;IAI7B,wEAAwE;IACxE,cAAc,IAAI,eAAe,EAAE;IAInC,8EAA8E;IAC9E,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,0BAA0B;CAGnC;AAED,0CAA0C;AAC1C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,oBAAoB,CAOvB"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Subagent budget ledger: reserve before launch, reconcile after completion.
|
|
4
|
+
*
|
|
5
|
+
* The root turn owns an aggregate budget (model requests, tool calls,
|
|
6
|
+
* model-visible bytes, wall-clock time). Children draw against it. To avoid
|
|
7
|
+
* over-spending, the Supervisor reserves a per-task allowance up front and
|
|
8
|
+
* releases the difference once the real usage is known.
|
|
9
|
+
*
|
|
10
|
+
* This ledger is the single source of truth for child aggregate usage; the
|
|
11
|
+
* root loop reads it to fold child cost into `/cost` and loop stats.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.SubagentBudgetLedger = exports.TurnTaskState = void 0;
|
|
15
|
+
exports.budgetLimitsFromConfig = budgetLimitsFromConfig;
|
|
16
|
+
const types_1 = require("./types");
|
|
17
|
+
/**
|
|
18
|
+
* R6: turn-level mutable state shared across all `subtask` calls within one
|
|
19
|
+
* root turn. Lives on the SubagentTurnBundle so multiple `subtask` tool calls
|
|
20
|
+
* in the same turn see a consistent counter - the per-batch reset that
|
|
21
|
+
* previously let a turn exceed `maxTasksPerTurn` is gone.
|
|
22
|
+
*/
|
|
23
|
+
class TurnTaskState {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.started = 0;
|
|
26
|
+
}
|
|
27
|
+
/** Increment by `n` and return the new total. Called atomically by the
|
|
28
|
+
* supervisor after policy allows a batch. */
|
|
29
|
+
addStarted(n) {
|
|
30
|
+
this.started += n;
|
|
31
|
+
return this.started;
|
|
32
|
+
}
|
|
33
|
+
/** Total tasks started in this root turn (across all `subtask` calls). */
|
|
34
|
+
tasksStarted() {
|
|
35
|
+
return this.started;
|
|
36
|
+
}
|
|
37
|
+
reset() {
|
|
38
|
+
this.started = 0;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.TurnTaskState = TurnTaskState;
|
|
42
|
+
/**
|
|
43
|
+
* Aggregate budget ledger for one root turn. Not thread-safe by itself;
|
|
44
|
+
* the Supervisor serializes mutations.
|
|
45
|
+
*
|
|
46
|
+
* R6: observed usage is recorded faithfully (never clamped to hide overage).
|
|
47
|
+
* The enforced allowance and observed usage are modeled separately, so `/cost`
|
|
48
|
+
* and telemetry reflect the truth while the runtime still stops children that
|
|
49
|
+
* exceed their allowance.
|
|
50
|
+
*/
|
|
51
|
+
class SubagentBudgetLedger {
|
|
52
|
+
constructor(limits) {
|
|
53
|
+
this.reserved = new Map();
|
|
54
|
+
this.reconciled = [];
|
|
55
|
+
this.violations = [];
|
|
56
|
+
this.limits = limits;
|
|
57
|
+
}
|
|
58
|
+
/** Reserve model-request slots for a task. Returns false if unavailable. */
|
|
59
|
+
reserve(taskId, requestedRequests) {
|
|
60
|
+
if (this.reserved.has(taskId))
|
|
61
|
+
return null;
|
|
62
|
+
const want = Math.max(1, Math.min(requestedRequests, this.limits.maxModelRequestsPerTask));
|
|
63
|
+
if (want > this.availableModelRequests())
|
|
64
|
+
return null;
|
|
65
|
+
this.reserved.set(taskId, want);
|
|
66
|
+
return { taskId, modelRequests: want };
|
|
67
|
+
}
|
|
68
|
+
/** Release a reservation without consuming (e.g. task rejected after reserve). */
|
|
69
|
+
release(taskId) {
|
|
70
|
+
this.reserved.delete(taskId);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Reconcile actual usage for a task. Releases its reservation and debits
|
|
74
|
+
* the REAL usage (never clamped). Records a violation if observed usage
|
|
75
|
+
* exceeded an enforced per-task or aggregate ceiling. Returns true if the
|
|
76
|
+
* aggregate turn limit is still respected.
|
|
77
|
+
*
|
|
78
|
+
* R6: observed usage is stored as-is so `/cost` and telemetry are truthful.
|
|
79
|
+
*/
|
|
80
|
+
reconcile(taskId, actual) {
|
|
81
|
+
this.reserved.delete(taskId);
|
|
82
|
+
// Record observed usage faithfully - do NOT clamp to hide overage.
|
|
83
|
+
this.reconciled.push({ ...actual });
|
|
84
|
+
// Record violations: observed exceeded an enforced ceiling.
|
|
85
|
+
if (actual.modelRequests > this.limits.maxModelRequestsPerTask) {
|
|
86
|
+
this.violations.push({
|
|
87
|
+
taskId,
|
|
88
|
+
limit: 'maxModelRequestsPerTask',
|
|
89
|
+
observed: actual.modelRequests,
|
|
90
|
+
enforced: this.limits.maxModelRequestsPerTask,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (actual.toolCalls > this.limits.maxToolCallsPerTask) {
|
|
94
|
+
this.violations.push({
|
|
95
|
+
taskId,
|
|
96
|
+
limit: 'maxToolCallsPerTask',
|
|
97
|
+
observed: actual.toolCalls,
|
|
98
|
+
enforced: this.limits.maxToolCallsPerTask,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (actual.durationMs > this.limits.timeoutMs) {
|
|
102
|
+
this.violations.push({
|
|
103
|
+
taskId,
|
|
104
|
+
limit: 'timeoutMs',
|
|
105
|
+
observed: actual.durationMs,
|
|
106
|
+
enforced: this.limits.timeoutMs,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return this.aggregateUsedModelRequests() <= this.limits.maxModelRequestsPerTurn;
|
|
110
|
+
}
|
|
111
|
+
availableModelRequests() {
|
|
112
|
+
return Math.max(0, this.limits.maxModelRequestsPerTurn - this.aggregateReservedOrUsed());
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Whether `count` new tasks can each reserve at least one model request.
|
|
116
|
+
* NOTE: this checks the minimum (1 request per task), not the full
|
|
117
|
+
* per-task cap. The supervisor's reserve loop (supervisor.ts:158-179)
|
|
118
|
+
* handles per-task reserve amounts individually.
|
|
119
|
+
*/
|
|
120
|
+
canReserveBatch(count) {
|
|
121
|
+
return this.availableModelRequests() >= count;
|
|
122
|
+
}
|
|
123
|
+
snapshot() {
|
|
124
|
+
const used = (0, types_1.sumSubtaskUsage)(this.reconciled);
|
|
125
|
+
const reservedModelRequests = (0, types_1.sumSubtaskUsage)(Array.from(this.reserved.entries()).map(([, n]) => ({ ...types_1.EMPTY_SUBTASK_USAGE, modelRequests: n }))).modelRequests;
|
|
126
|
+
const availableModelRequests = this.availableModelRequests();
|
|
127
|
+
return {
|
|
128
|
+
reservedModelRequests,
|
|
129
|
+
used,
|
|
130
|
+
availableModelRequests,
|
|
131
|
+
exhausted: this.aggregateUsedModelRequests() > this.limits.maxModelRequestsPerTurn,
|
|
132
|
+
violations: [...this.violations],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Reconciled aggregate usage across all completed children. */
|
|
136
|
+
aggregateUsage() {
|
|
137
|
+
return (0, types_1.sumSubtaskUsage)(this.reconciled);
|
|
138
|
+
}
|
|
139
|
+
/** Number of tasks that have been reconciled (completed/failed/cancelled). */
|
|
140
|
+
reconciledTaskCount() {
|
|
141
|
+
return this.reconciled.length;
|
|
142
|
+
}
|
|
143
|
+
/** Recorded overage violations (observed exceeded enforced ceiling). */
|
|
144
|
+
violationsList() {
|
|
145
|
+
return [...this.violations];
|
|
146
|
+
}
|
|
147
|
+
/** True if no reservations are outstanding and no usage has been recorded. */
|
|
148
|
+
isClean() {
|
|
149
|
+
return this.reserved.size === 0 && this.reconciled.length === 0;
|
|
150
|
+
}
|
|
151
|
+
aggregateReservedOrUsed() {
|
|
152
|
+
let total = 0;
|
|
153
|
+
for (const n of this.reserved.values())
|
|
154
|
+
total += n;
|
|
155
|
+
for (const u of this.reconciled)
|
|
156
|
+
total += u.modelRequests;
|
|
157
|
+
return total;
|
|
158
|
+
}
|
|
159
|
+
aggregateUsedModelRequests() {
|
|
160
|
+
return this.reconciled.reduce((acc, u) => acc + u.modelRequests, 0);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.SubagentBudgetLedger = SubagentBudgetLedger;
|
|
164
|
+
/** Build limits from a SubagentConfig. */
|
|
165
|
+
function budgetLimitsFromConfig(config) {
|
|
166
|
+
return {
|
|
167
|
+
maxModelRequestsPerTurn: config.maxModelRequestsPerTurn,
|
|
168
|
+
maxModelRequestsPerTask: config.maxModelRequestsPerTask,
|
|
169
|
+
maxToolCallsPerTask: config.maxToolCallsPerTask,
|
|
170
|
+
timeoutMs: config.timeoutMs,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../../../src/runtime/subagents/budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChildToolExecutorGuard: enforces project-root and packet-scope isolation.
|
|
3
|
+
*
|
|
4
|
+
* R3 (v0.2.20): the policy only canonicalizes scope.paths into the child
|
|
5
|
+
* prompt, but the actual tool arguments (read_file path, glob base, grep
|
|
6
|
+
* path, batch_read nested args) were not validated. A child could read
|
|
7
|
+
* absolute paths, `../` escapes, outside-scope files, or symlink targets
|
|
8
|
+
* pointing outside the project.
|
|
9
|
+
*
|
|
10
|
+
* This guard wraps the child tool executor and performs a realpath-based
|
|
11
|
+
* containment check on every path-bearing argument before delegating to
|
|
12
|
+
* the real executor.
|
|
13
|
+
*
|
|
14
|
+
* Two containment boundaries:
|
|
15
|
+
* 1. Canonical project root (always enforced).
|
|
16
|
+
* 2. Packet scope paths (enforced when the packet specifies a non-empty
|
|
17
|
+
* scope). The path must be inside the root AND inside at least one
|
|
18
|
+
* scope realpath.
|
|
19
|
+
*/
|
|
20
|
+
export interface GuardOptions {
|
|
21
|
+
/** Canonical project root (first containment boundary). */
|
|
22
|
+
rootCwd: string;
|
|
23
|
+
/** Canonical scope paths (second, stricter boundary). Empty = root only. */
|
|
24
|
+
scopePaths?: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
export interface GuardRejection {
|
|
27
|
+
ok: false;
|
|
28
|
+
tool: string;
|
|
29
|
+
reason: string;
|
|
30
|
+
path?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface GuardApproval {
|
|
33
|
+
ok: true;
|
|
34
|
+
}
|
|
35
|
+
export type GuardVerdict = GuardApproval | GuardRejection;
|
|
36
|
+
/**
|
|
37
|
+
* Evaluate whether a tool call is allowed under the guard's boundaries.
|
|
38
|
+
* Pure (modulo realpath reads) so it can be tested in isolation.
|
|
39
|
+
*/
|
|
40
|
+
export declare function evaluateToolCall(tool: string, args: Record<string, unknown>, options: GuardOptions): GuardVerdict;
|
|
41
|
+
/**
|
|
42
|
+
* A mutable scope holder: the supervisor sets the current packet's scope
|
|
43
|
+
* before running it, so the turn-level guard can enforce per-packet scope
|
|
44
|
+
* containment without rebuilding the executor per packet.
|
|
45
|
+
*/
|
|
46
|
+
export declare class ScopeHolder {
|
|
47
|
+
private current;
|
|
48
|
+
setScope(paths: readonly string[]): void;
|
|
49
|
+
clear(): void;
|
|
50
|
+
getScope(): readonly string[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Wrap a child tool executor with containment enforcement. The returned
|
|
54
|
+
* executor delegates to `inner` only when all path-bearing args are inside
|
|
55
|
+
* the project root (and inside the packet scope, if the scope holder is set).
|
|
56
|
+
*/
|
|
57
|
+
export declare function createChildToolExecutorGuard(inner: (name: string, args: Record<string, unknown>, abortSignal?: AbortSignal) => Promise<string>, options: GuardOptions & {
|
|
58
|
+
scopeHolder?: ScopeHolder;
|
|
59
|
+
}): (name: string, args: Record<string, unknown>, abortSignal?: AbortSignal) => Promise<string>;
|
|
60
|
+
//# sourceMappingURL=child-executor-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-executor-guard.d.ts","sourceRoot":"","sources":["../../../src/runtime/subagents/child-executor-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAiBH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,IAAI,CAAC;CACV;AAED,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC;AA+I1D;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,YAAY,GACpB,YAAY,CAkBd;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAyB;IAExC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIxC,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,SAAS,MAAM,EAAE;CAG9B;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,CACL,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,EAAE,WAAW,KACtB,OAAO,CAAC,MAAM,CAAC,EACpB,OAAO,EAAE,YAAY,GAAG;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,GACpD,CACD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,CAAC,EAAE,WAAW,KACtB,OAAO,CAAC,MAAM,CAAC,CAgBnB"}
|