@qduc/term2 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +2 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +176 -102
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +144 -41
- package/dist/app.js.map +1 -1
- package/dist/cli.js +197 -38
- package/dist/cli.js.map +1 -1
- package/dist/commands/guarded-settings-command.d.ts.map +1 -1
- package/dist/commands/guarded-settings-command.js +33 -5
- package/dist/commands/guarded-settings-command.js.map +1 -1
- package/dist/commands/mode-commands.d.ts +17 -12
- package/dist/commands/mode-commands.d.ts.map +1 -1
- package/dist/commands/mode-commands.js +68 -44
- package/dist/commands/mode-commands.js.map +1 -1
- package/dist/components/InputBox.js +2 -3
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/common/MenuContainer.d.ts +5 -0
- package/dist/components/common/MenuContainer.d.ts.map +1 -1
- package/dist/components/common/MenuContainer.js +13 -3
- package/dist/components/common/MenuContainer.js.map +1 -1
- package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
- package/dist/components/input/ApplicationInputSurface.js +4 -0
- package/dist/components/input/ApplicationInputSurface.js.map +1 -1
- package/dist/components/input/MenuSurface.d.ts.map +1 -1
- package/dist/components/input/MenuSurface.js +13 -2
- package/dist/components/input/MenuSurface.js.map +1 -1
- package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
- package/dist/components/input/ModelMenuSession.js +67 -16
- package/dist/components/input/ModelMenuSession.js.map +1 -1
- package/dist/components/input/ProfileMenuSession.d.ts +16 -0
- package/dist/components/input/ProfileMenuSession.d.ts.map +1 -0
- package/dist/components/input/ProfileMenuSession.js +64 -0
- package/dist/components/input/ProfileMenuSession.js.map +1 -0
- package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsMenuSession.js +56 -17
- package/dist/components/input/SettingsMenuSession.js.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.js +33 -3
- package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
- package/dist/components/input/determine-active-menu.d.ts +3 -0
- package/dist/components/input/determine-active-menu.d.ts.map +1 -1
- package/dist/components/input/determine-active-menu.js +6 -1
- package/dist/components/input/determine-active-menu.js.map +1 -1
- package/dist/components/input/menu-registry.d.ts.map +1 -1
- package/dist/components/input/menu-registry.js +2 -0
- package/dist/components/input/menu-registry.js.map +1 -1
- package/dist/components/input/menu-types.d.ts +5 -1
- package/dist/components/input/menu-types.d.ts.map +1 -1
- package/dist/components/input/triggers.d.ts +1 -0
- package/dist/components/input/triggers.d.ts.map +1 -1
- package/dist/components/input/triggers.js +28 -2
- package/dist/components/input/triggers.js.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.js +6 -2
- package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts +0 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.js +4 -104
- package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
- package/dist/components/layout/Banner.d.ts.map +1 -1
- package/dist/components/layout/Banner.js +10 -5
- package/dist/components/layout/Banner.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +25 -12
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.d.ts +10 -0
- package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.js +85 -16
- package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
- package/dist/components/menu/ProfileSelectionMenu.d.ts +12 -0
- package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -0
- package/dist/components/menu/ProfileSelectionMenu.js +49 -0
- package/dist/components/menu/ProfileSelectionMenu.js.map +1 -0
- package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ResumeSelectionMenu.js +9 -19
- package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.js +4 -32
- package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.js +12 -5
- package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
- package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SkillSelectionMenu.js +3 -6
- package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
- package/dist/components/menu/SlashCommandMenu.d.ts +8 -0
- package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
- package/dist/components/menu/SlashCommandMenu.js +16 -6
- package/dist/components/menu/SlashCommandMenu.js.map +1 -1
- package/dist/components/menu/StandaloneModelPickerApp.d.ts +40 -0
- package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -0
- package/dist/components/menu/StandaloneModelPickerApp.js +106 -0
- package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -0
- package/dist/components/menu/settings-value-formatter.d.ts +11 -0
- package/dist/components/menu/settings-value-formatter.d.ts.map +1 -0
- package/dist/components/menu/settings-value-formatter.js +214 -0
- package/dist/components/menu/settings-value-formatter.js.map +1 -0
- package/dist/components/message/ChatMessage.js +1 -1
- package/dist/components/message/ChatMessage.js.map +1 -1
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +22 -17
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +28 -11
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/RunCodeRenderer.d.ts +16 -0
- package/dist/components/message/RunCodeRenderer.d.ts.map +1 -0
- package/dist/components/message/RunCodeRenderer.js +25 -0
- package/dist/components/message/RunCodeRenderer.js.map +1 -0
- package/dist/components/message/command-message-helpers.d.ts +35 -5
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +85 -0
- package/dist/components/message/command-message-helpers.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +12 -21
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/components/theme.d.ts +1 -0
- package/dist/components/theme.d.ts.map +1 -1
- package/dist/components/theme.js +1 -0
- package/dist/components/theme.js.map +1 -1
- package/dist/context/InputContext.d.ts +1 -1
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js +8 -0
- package/dist/context/InputContext.js.map +1 -1
- package/dist/contracts/session-rollover.d.ts +9 -1
- package/dist/contracts/session-rollover.d.ts.map +1 -1
- package/dist/contracts/streamed-model-turn.d.ts +26 -2
- package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
- package/dist/gateway/gateway.d.ts.map +1 -1
- package/dist/gateway/gateway.js +19 -23
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/launcher-seam.d.ts.map +1 -1
- package/dist/gateway/launcher-seam.js +2 -19
- package/dist/gateway/launcher-seam.js.map +1 -1
- package/dist/gateway/settings-rpc.d.ts +1 -1
- package/dist/gateway/settings-rpc.d.ts.map +1 -1
- package/dist/gateway/settings-rpc.js +2 -0
- package/dist/gateway/settings-rpc.js.map +1 -1
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +5 -2
- package/dist/hooks/conversation-ui-reducer.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts +1 -1
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +16 -110
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/settings-completion-logic.d.ts +1 -1
- package/dist/hooks/settings-completion-logic.d.ts.map +1 -1
- package/dist/hooks/settings-completion-logic.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +3 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +21 -14
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.js +33 -20
- package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +5 -2
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +108 -17
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-handoff-flow.d.ts +1 -0
- package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
- package/dist/hooks/use-handoff-flow.js +19 -12
- package/dist/hooks/use-handoff-flow.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts +33 -4
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +204 -114
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-profile-selection.d.ts +34 -0
- package/dist/hooks/use-profile-selection.d.ts.map +1 -0
- package/dist/hooks/use-profile-selection.js +103 -0
- package/dist/hooks/use-profile-selection.js.map +1 -0
- package/dist/hooks/use-resume-selection.d.ts +2 -0
- package/dist/hooks/use-resume-selection.d.ts.map +1 -1
- package/dist/hooks/use-resume-selection.js +11 -9
- package/dist/hooks/use-resume-selection.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +1 -6
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts +1 -8
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +20 -94
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-skill-selection.d.ts +5 -3
- package/dist/hooks/use-skill-selection.d.ts.map +1 -1
- package/dist/hooks/use-skill-selection.js +8 -6
- package/dist/hooks/use-skill-selection.js.map +1 -1
- package/dist/hooks/use-standalone-model-picker.d.ts +64 -0
- package/dist/hooks/use-standalone-model-picker.d.ts.map +1 -0
- package/dist/hooks/use-standalone-model-picker.js +310 -0
- package/dist/hooks/use-standalone-model-picker.js.map +1 -0
- package/dist/lib/agent-client.d.ts +17 -1
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +211 -55
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +12 -3
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +27 -11
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +3 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +110 -46
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/ask-user-answer-store.d.ts +1 -0
- package/dist/lib/ask-user-answer-store.d.ts.map +1 -1
- package/dist/lib/ask-user-answer-store.js +3 -0
- package/dist/lib/ask-user-answer-store.js.map +1 -1
- package/dist/lib/harness-input-idle.d.ts +10 -0
- package/dist/lib/harness-input-idle.d.ts.map +1 -1
- package/dist/lib/harness-input-idle.js +47 -5
- package/dist/lib/harness-input-idle.js.map +1 -1
- package/dist/lib/tool-invoke.d.ts +1 -0
- package/dist/lib/tool-invoke.d.ts.map +1 -1
- package/dist/lib/tool-invoke.js +1 -0
- package/dist/lib/tool-invoke.js.map +1 -1
- package/dist/non-interactive.d.ts +23 -0
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +231 -37
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/background-shell.d.ts.map +1 -1
- package/dist/prompts/background-shell.js +4 -2
- package/dist/prompts/background-shell.js.map +1 -1
- package/dist/prompts/background-shell.ts +4 -2
- package/dist/prompts/codex.md +1 -3
- package/dist/prompts/fragments/gpt-6-astra.md +13 -0
- package/dist/prompts/gpt-5-modern.md +1 -3
- package/dist/prompts/gpt-5.4-mini.md +0 -2
- package/dist/prompts/gpt-5.5.md +0 -2
- package/dist/prompts/gpt-5.6.md +0 -1
- package/dist/prompts/lite.md +1 -6
- package/dist/prompts/memory.md +2 -2
- package/dist/prompts/orchestrator.md +4 -4
- package/dist/prompts/prefix-quality.test.ts +8 -5
- package/dist/prompts/prompt-constructor.d.ts +7 -6
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +17 -7
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +250 -52
- package/dist/prompts/prompt-constructor.ts +27 -13
- package/dist/prompts/prompt-profiles.d.ts.map +1 -1
- package/dist/prompts/prompt-profiles.js +6 -0
- package/dist/prompts/prompt-profiles.js.map +1 -1
- package/dist/prompts/prompt-profiles.test.ts +6 -4
- package/dist/prompts/prompt-profiles.ts +6 -0
- package/dist/prompts/session-browser.md +5 -1
- package/dist/prompts/shell-auto-approval.d.ts +2 -2
- package/dist/prompts/shell-auto-approval.d.ts.map +1 -1
- package/dist/prompts/shell-auto-approval.js +19 -16
- package/dist/prompts/shell-auto-approval.js.map +1 -1
- package/dist/prompts/shell-auto-approval.ts +19 -16
- package/dist/prompts/subagent-delegation.js +3 -3
- package/dist/prompts/subagent-delegation.js.map +1 -1
- package/dist/prompts/subagent-delegation.test.ts +3 -3
- package/dist/prompts/subagent-delegation.ts +3 -3
- package/dist/prompts/subagents/librarian.md +4 -4
- package/dist/prompts/subagents/worker-prompt.test.ts +7 -0
- package/dist/prompts/tool-surface-guidance.d.ts +4 -0
- package/dist/prompts/tool-surface-guidance.d.ts.map +1 -0
- package/dist/prompts/tool-surface-guidance.js +19 -0
- package/dist/prompts/tool-surface-guidance.js.map +1 -0
- package/dist/prompts/tool-surface-guidance.ts +20 -0
- package/dist/providers/aborted-stream-recorder.js +2 -1
- package/dist/providers/aborted-stream-recorder.js.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.js +7 -0
- package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
- package/dist/providers/codex-compact.d.ts +2 -0
- package/dist/providers/codex-compact.d.ts.map +1 -1
- package/dist/providers/codex-compact.js +14 -0
- package/dist/providers/codex-compact.js.map +1 -1
- package/dist/providers/codex-responses-model.d.ts +23 -3
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +193 -44
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/codex-turn-converter.d.ts.map +1 -1
- package/dist/providers/codex-turn-converter.js +21 -4
- package/dist/providers/codex-turn-converter.js.map +1 -1
- package/dist/providers/codex.provider.d.ts +2 -0
- package/dist/providers/codex.provider.d.ts.map +1 -1
- package/dist/providers/codex.provider.js +4 -2
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/fetch/logging-middleware.d.ts.map +1 -1
- package/dist/providers/fetch/logging-middleware.js +22 -2
- package/dist/providers/fetch/logging-middleware.js.map +1 -1
- package/dist/providers/grok.provider.d.ts.map +1 -1
- package/dist/providers/grok.provider.js +5 -2
- package/dist/providers/grok.provider.js.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.d.ts +453 -309
- package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.js +453 -309
- package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
- package/dist/providers/openai-chat-completions-model.js +119 -50
- package/dist/providers/openai-chat-completions-model.js.map +1 -1
- package/dist/providers/openai-responses-model.d.ts.map +1 -1
- package/dist/providers/openai-responses-model.js +131 -15
- package/dist/providers/openai-responses-model.js.map +1 -1
- package/dist/providers/opencode-session.d.ts.map +1 -1
- package/dist/providers/opencode-session.js +5 -0
- package/dist/providers/opencode-session.js.map +1 -1
- package/dist/providers/openrouter.provider.js +8 -1
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/registry.d.ts +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/responses-websocket-sessions.d.ts +10 -0
- package/dist/providers/responses-websocket-sessions.d.ts.map +1 -1
- package/dist/providers/responses-websocket-sessions.js +9 -4
- package/dist/providers/responses-websocket-sessions.js.map +1 -1
- package/dist/providers/retrying-model.d.ts +2 -1
- package/dist/providers/retrying-model.d.ts.map +1 -1
- package/dist/providers/retrying-model.js +14 -2
- package/dist/providers/retrying-model.js.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +11 -2
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +128 -24
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.d.ts +2 -3
- package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.d.ts.map +1 -1
- package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js +18 -9
- package/dist/services/agent-runtime/context-compaction/context-milestone-reminder.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/index.d.ts +2 -0
- package/dist/services/agent-runtime/context-compaction/index.d.ts.map +1 -1
- package/dist/services/agent-runtime/context-compaction/index.js +30 -4
- package/dist/services/agent-runtime/context-compaction/index.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +3 -0
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +15 -9
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
- package/dist/services/agent-runtime/generation-guard.d.ts +25 -1
- package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
- package/dist/services/agent-runtime/generation-guard.js +105 -1
- package/dist/services/agent-runtime/generation-guard.js.map +1 -1
- package/dist/services/agent-runtime/tool-invocation-context.d.ts +12 -0
- package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -1
- package/dist/services/agent-runtime/workflow/workflow-evaluator.d.ts +7 -1
- package/dist/services/agent-runtime/workflow/workflow-evaluator.d.ts.map +1 -1
- package/dist/services/agent-runtime/workflow/workflow-evaluator.js +78 -183
- package/dist/services/agent-runtime/workflow/workflow-evaluator.js.map +1 -1
- package/dist/services/agent-runtime/workflow/workflow-sandbox.d.ts +4 -3
- package/dist/services/agent-runtime/workflow/workflow-sandbox.d.ts.map +1 -1
- package/dist/services/agent-runtime/workflow/workflow-sandbox.js +9 -7
- package/dist/services/agent-runtime/workflow/workflow-sandbox.js.map +1 -1
- package/dist/services/agent-runtime/workflow/workflow-types.d.ts +1 -1
- package/dist/services/agent-runtime/workflow/workflow-types.d.ts.map +1 -1
- package/dist/services/agent-runtime/workflow/workflow-types.js.map +1 -1
- package/dist/services/agent-stream.d.ts +2 -0
- package/dist/services/agent-stream.d.ts.map +1 -1
- package/dist/services/agent-stream.js.map +1 -1
- package/dist/services/approval/approval-decision-executor.d.ts +2 -1
- package/dist/services/approval/approval-decision-executor.d.ts.map +1 -1
- package/dist/services/approval/approval-decision-executor.js +22 -116
- package/dist/services/approval/approval-decision-executor.js.map +1 -1
- package/dist/services/approval/approval-decision-policy.js +2 -2
- package/dist/services/approval/approval-decision-policy.js.map +1 -1
- package/dist/services/approval/approval-descriptor.d.ts +10 -0
- package/dist/services/approval/approval-descriptor.d.ts.map +1 -0
- package/dist/services/approval/approval-descriptor.js +23 -0
- package/dist/services/approval/approval-descriptor.js.map +1 -0
- package/dist/services/approval/approval-flow-coordinator.d.ts +2 -1
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +2 -1
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/approval-grant-executor.d.ts +25 -0
- package/dist/services/approval/approval-grant-executor.d.ts.map +1 -0
- package/dist/services/approval/approval-grant-executor.js +125 -0
- package/dist/services/approval/approval-grant-executor.js.map +1 -0
- package/dist/services/approval/background-subagent-approval-controller.d.ts +2 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
- package/dist/services/approval/nested-approval-owner.d.ts +52 -0
- package/dist/services/approval/nested-approval-owner.d.ts.map +1 -0
- package/dist/services/approval/nested-approval-owner.js +194 -0
- package/dist/services/approval/nested-approval-owner.js.map +1 -0
- package/dist/services/approval/non-interactive-approval-policy.js +1 -1
- package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
- package/dist/services/approval/shell-auto-approval-evaluator.d.ts +5 -1
- package/dist/services/approval/shell-auto-approval-evaluator.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-evaluator.js +44 -22
- package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.d.ts +5 -0
- package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.js +121 -20
- package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts +10 -3
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +36 -8
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/approval/tool-approval-policy-registry.d.ts +13 -0
- package/dist/services/approval/tool-approval-policy-registry.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-policy-registry.js +16 -1
- package/dist/services/approval/tool-approval-policy-registry.js.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.d.ts +3 -1
- package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.js +3 -3
- package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts +3 -2
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +34 -32
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-decoder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-decoder.js +6 -2
- package/dist/services/conversation/conversation-decoder.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts +11 -0
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +79 -43
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-persistence.d.ts +35 -0
- package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.js +162 -19
- package/dist/services/conversation/conversation-persistence.js.map +1 -1
- package/dist/services/conversation/conversation-replay.d.ts +2 -0
- package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.js +71 -57
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-result-builder.d.ts +3 -0
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +48 -27
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.d.ts +5 -0
- package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.js +1 -0
- package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +14 -3
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +104 -32
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/session-browser.d.ts +35 -23
- package/dist/services/conversation/session-browser.d.ts.map +1 -1
- package/dist/services/conversation/session-browser.js +338 -67
- package/dist/services/conversation/session-browser.js.map +1 -1
- package/dist/services/conversation/session-index/session-index-database.d.ts +138 -0
- package/dist/services/conversation/session-index/session-index-database.d.ts.map +1 -0
- package/dist/services/conversation/session-index/session-index-database.js +684 -0
- package/dist/services/conversation/session-index/session-index-database.js.map +1 -0
- package/dist/services/conversation/session-index/session-index-schema.d.ts +35 -0
- package/dist/services/conversation/session-index/session-index-schema.d.ts.map +1 -0
- package/dist/services/conversation/session-index/session-index-schema.js +156 -0
- package/dist/services/conversation/session-index/session-index-schema.js.map +1 -0
- package/dist/services/conversation/session-index/session-index-service.d.ts +30 -0
- package/dist/services/conversation/session-index/session-index-service.d.ts.map +1 -0
- package/dist/services/conversation/session-index/session-index-service.js +234 -0
- package/dist/services/conversation/session-index/session-index-service.js.map +1 -0
- package/dist/services/conversation/session-index/session-index-worker-client.d.ts +36 -0
- package/dist/services/conversation/session-index/session-index-worker-client.d.ts.map +1 -0
- package/dist/services/conversation/session-index/session-index-worker-client.js +143 -0
- package/dist/services/conversation/session-index/session-index-worker-client.js.map +1 -0
- package/dist/services/conversation/session-index/session-index-worker.d.ts +56 -0
- package/dist/services/conversation/session-index/session-index-worker.d.ts.map +1 -0
- package/dist/services/conversation/session-index/session-index-worker.js +96 -0
- package/dist/services/conversation/session-index/session-index-worker.js.map +1 -0
- package/dist/services/conversation/session-search-helpers.d.ts +4 -0
- package/dist/services/conversation/session-search-helpers.d.ts.map +1 -0
- package/dist/services/conversation/session-search-helpers.js +13 -0
- package/dist/services/conversation/session-search-helpers.js.map +1 -0
- package/dist/services/conversation-agent-client.d.ts +8 -0
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/execution-context.js +2 -2
- package/dist/services/execution-context.js.map +1 -1
- package/dist/services/handoff/handoff-session.d.ts +2 -0
- package/dist/services/handoff/handoff-session.d.ts.map +1 -1
- package/dist/services/handoff/handoff-session.js +19 -3
- package/dist/services/handoff/handoff-session.js.map +1 -1
- package/dist/services/hooks/hook-event-factory.d.ts +2 -1
- package/dist/services/hooks/hook-event-factory.d.ts.map +1 -1
- package/dist/services/hooks/hook-event-factory.js +2 -1
- package/dist/services/hooks/hook-event-factory.js.map +1 -1
- package/dist/services/logging/conversation-log-events.d.ts +30 -3
- package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.js +1 -4
- package/dist/services/logging/conversation-log-events.js.map +1 -1
- package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-writer.js +50 -26
- package/dist/services/logging/conversation-log-writer.js.map +1 -1
- package/dist/services/logging/logging-service.d.ts +1 -0
- package/dist/services/logging/logging-service.d.ts.map +1 -1
- package/dist/services/logging/logging-service.js +6 -2
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/logging/provider-traffic.d.ts +29 -2
- package/dist/services/logging/provider-traffic.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.js +251 -21
- package/dist/services/logging/provider-traffic.js.map +1 -1
- package/dist/services/memory/memory-capabilities.d.ts.map +1 -1
- package/dist/services/memory/memory-capabilities.js +17 -5
- package/dist/services/memory/memory-capabilities.js.map +1 -1
- package/dist/services/memory/memory-store.d.ts +17 -0
- package/dist/services/memory/memory-store.d.ts.map +1 -1
- package/dist/services/memory/memory-store.js +71 -26
- package/dist/services/memory/memory-store.js.map +1 -1
- package/dist/services/mode-notices.d.ts +12 -9
- package/dist/services/mode-notices.d.ts.map +1 -1
- package/dist/services/mode-notices.js +83 -54
- package/dist/services/mode-notices.js.map +1 -1
- package/dist/services/model-service.d.ts +64 -4
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +303 -21
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/models/model-catalog-session.d.ts +6 -0
- package/dist/services/models/model-catalog-session.d.ts.map +1 -1
- package/dist/services/models/model-catalog-session.js +18 -10
- package/dist/services/models/model-catalog-session.js.map +1 -1
- package/dist/services/models/model-favorites.d.ts +56 -0
- package/dist/services/models/model-favorites.d.ts.map +1 -0
- package/dist/services/models/model-favorites.js +93 -0
- package/dist/services/models/model-favorites.js.map +1 -0
- package/dist/services/models/model-listing.d.ts +97 -0
- package/dist/services/models/model-listing.d.ts.map +1 -0
- package/dist/services/models/model-listing.js +129 -0
- package/dist/services/models/model-listing.js.map +1 -0
- package/dist/services/models/model-nicknames.d.ts +113 -0
- package/dist/services/models/model-nicknames.d.ts.map +1 -0
- package/dist/services/models/model-nicknames.js +182 -0
- package/dist/services/models/model-nicknames.js.map +1 -0
- package/dist/services/models/model-picker-host.d.ts +72 -0
- package/dist/services/models/model-picker-host.d.ts.map +1 -0
- package/dist/services/models/model-picker-host.js +83 -0
- package/dist/services/models/model-picker-host.js.map +1 -0
- package/dist/services/models/model-resolution.d.ts +120 -0
- package/dist/services/models/model-resolution.d.ts.map +1 -0
- package/dist/services/models/model-resolution.js +521 -0
- package/dist/services/models/model-resolution.js.map +1 -0
- package/dist/services/models/reasoning-effort.d.ts +20 -0
- package/dist/services/models/reasoning-effort.d.ts.map +1 -0
- package/dist/services/models/reasoning-effort.js +28 -0
- package/dist/services/models/reasoning-effort.js.map +1 -0
- package/dist/services/models/unified-model-catalog.d.ts +4 -0
- package/dist/services/models/unified-model-catalog.d.ts.map +1 -0
- package/dist/services/models/unified-model-catalog.js +54 -0
- package/dist/services/models/unified-model-catalog.js.map +1 -0
- package/dist/services/plan-mode-interceptor.d.ts.map +1 -1
- package/dist/services/plan-mode-interceptor.js +5 -6
- package/dist/services/plan-mode-interceptor.js.map +1 -1
- package/dist/services/profiles/active-profile.d.ts +5 -0
- package/dist/services/profiles/active-profile.d.ts.map +1 -0
- package/dist/services/profiles/active-profile.js +33 -0
- package/dist/services/profiles/active-profile.js.map +1 -0
- package/dist/services/profiles/index.d.ts +9 -0
- package/dist/services/profiles/index.d.ts.map +1 -0
- package/dist/services/profiles/index.js +9 -0
- package/dist/services/profiles/index.js.map +1 -0
- package/dist/services/profiles/labels.d.ts +7 -0
- package/dist/services/profiles/labels.d.ts.map +1 -0
- package/dist/services/profiles/labels.js +22 -0
- package/dist/services/profiles/labels.js.map +1 -0
- package/dist/services/profiles/legacy-adapter.d.ts +28 -0
- package/dist/services/profiles/legacy-adapter.d.ts.map +1 -0
- package/dist/services/profiles/legacy-adapter.js +69 -0
- package/dist/services/profiles/legacy-adapter.js.map +1 -0
- package/dist/services/profiles/profile-transition.d.ts +48 -0
- package/dist/services/profiles/profile-transition.d.ts.map +1 -0
- package/dist/services/profiles/profile-transition.js +109 -0
- package/dist/services/profiles/profile-transition.js.map +1 -0
- package/dist/services/profiles/registry.d.ts +17 -0
- package/dist/services/profiles/registry.d.ts.map +1 -0
- package/dist/services/profiles/registry.js +147 -0
- package/dist/services/profiles/registry.js.map +1 -0
- package/dist/services/profiles/resolver.d.ts +10 -0
- package/dist/services/profiles/resolver.d.ts.map +1 -0
- package/dist/services/profiles/resolver.js +573 -0
- package/dist/services/profiles/resolver.js.map +1 -0
- package/dist/services/profiles/schema.d.ts +960 -0
- package/dist/services/profiles/schema.d.ts.map +1 -0
- package/dist/services/profiles/schema.js +196 -0
- package/dist/services/profiles/schema.js.map +1 -0
- package/dist/services/profiles/types.d.ts +224 -0
- package/dist/services/profiles/types.d.ts.map +1 -0
- package/dist/services/profiles/types.js +9 -0
- package/dist/services/profiles/types.js.map +1 -0
- package/dist/services/retry/committed-tool-continuation.d.ts +5 -0
- package/dist/services/retry/committed-tool-continuation.d.ts.map +1 -1
- package/dist/services/retry/committed-tool-continuation.js +6 -3
- package/dist/services/retry/committed-tool-continuation.js.map +1 -1
- package/dist/services/retry/provider-failure-classification.d.ts +16 -0
- package/dist/services/retry/provider-failure-classification.d.ts.map +1 -1
- package/dist/services/retry/provider-failure-classification.js +45 -0
- package/dist/services/retry/provider-failure-classification.js.map +1 -1
- package/dist/services/retry/retry-classifier.d.ts.map +1 -1
- package/dist/services/retry/retry-classifier.js +13 -10
- package/dist/services/retry/retry-classifier.js.map +1 -1
- package/dist/services/retry/retry-error-classification.d.ts +7 -0
- package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.js +32 -9
- package/dist/services/retry/retry-error-classification.js.map +1 -1
- package/dist/services/retry/retry-recovery-budget.d.ts +26 -1
- package/dist/services/retry/retry-recovery-budget.d.ts.map +1 -1
- package/dist/services/retry/retry-recovery-budget.js +33 -1
- package/dist/services/retry/retry-recovery-budget.js.map +1 -1
- package/dist/services/runtime-setting-router.d.ts.map +1 -1
- package/dist/services/runtime-setting-router.js +76 -23
- package/dist/services/runtime-setting-router.js.map +1 -1
- package/dist/services/sandboxed-code-host/host-types.d.ts +135 -0
- package/dist/services/sandboxed-code-host/host-types.d.ts.map +1 -0
- package/dist/services/sandboxed-code-host/host-types.js +6 -0
- package/dist/services/sandboxed-code-host/host-types.js.map +1 -0
- package/dist/services/sandboxed-code-host/host-worker.d.ts +9 -0
- package/dist/services/sandboxed-code-host/host-worker.d.ts.map +1 -0
- package/dist/services/sandboxed-code-host/host-worker.js +351 -0
- package/dist/services/sandboxed-code-host/host-worker.js.map +1 -0
- package/dist/services/sandboxed-code-host/sandbox.d.ts +16 -0
- package/dist/services/sandboxed-code-host/sandbox.d.ts.map +1 -0
- package/dist/services/sandboxed-code-host/sandbox.js +21 -0
- package/dist/services/sandboxed-code-host/sandbox.js.map +1 -0
- package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts +17 -0
- package/dist/services/sandboxed-code-host/sandboxed-code-host.d.ts.map +1 -0
- package/dist/services/sandboxed-code-host/sandboxed-code-host.js +347 -0
- package/dist/services/sandboxed-code-host/sandboxed-code-host.js.map +1 -0
- package/dist/services/service-interfaces.d.ts +32 -0
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/session/background-task-control.d.ts +3 -1
- package/dist/services/session/background-task-control.d.ts.map +1 -1
- package/dist/services/session/background-task-control.js +4 -0
- package/dist/services/session/background-task-control.js.map +1 -1
- package/dist/services/session/continuation-plan-applier.d.ts +2 -1
- package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
- package/dist/services/session/continuation-plan-applier.js.map +1 -1
- package/dist/services/session/continuation-recovery-handler.d.ts +2 -1
- package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/continuation-recovery-handler.js +49 -5
- package/dist/services/session/continuation-recovery-handler.js.map +1 -1
- package/dist/services/session/initial-input-preparer.d.ts +2 -1
- package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
- package/dist/services/session/initial-input-preparer.js +2 -1
- package/dist/services/session/initial-input-preparer.js.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.d.ts +2 -1
- package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.js +55 -20
- package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
- package/dist/services/session/post-execute-pending-registry.d.ts +2 -1
- package/dist/services/session/post-execute-pending-registry.d.ts.map +1 -1
- package/dist/services/session/post-execute-pending-registry.js +3 -2
- package/dist/services/session/post-execute-pending-registry.js.map +1 -1
- package/dist/services/session/session-client-factory.d.ts +4 -0
- package/dist/services/session/session-client-factory.d.ts.map +1 -1
- package/dist/services/session/session-client-factory.js +12 -4
- package/dist/services/session/session-client-factory.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +26 -2
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +97 -18
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-continuity-reset.d.ts +2 -1
- package/dist/services/session/session-continuity-reset.d.ts.map +1 -1
- package/dist/services/session/session-continuity-reset.js +5 -2
- package/dist/services/session/session-continuity-reset.js.map +1 -1
- package/dist/services/session/session-identity.d.ts +20 -0
- package/dist/services/session/session-identity.d.ts.map +1 -0
- package/dist/services/session/session-identity.js +43 -0
- package/dist/services/session/session-identity.js.map +1 -0
- package/dist/services/session/session-input-planner.d.ts.map +1 -1
- package/dist/services/session/session-input-planner.js +2 -9
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/session/session-lifecycle.d.ts +5 -1
- package/dist/services/session/session-lifecycle.d.ts.map +1 -1
- package/dist/services/session/session-lifecycle.js +5 -1
- package/dist/services/session/session-lifecycle.js.map +1 -1
- package/dist/services/session/session-manager.d.ts.map +1 -1
- package/dist/services/session/session-manager.js +4 -1
- package/dist/services/session/session-manager.js.map +1 -1
- package/dist/services/session/session-stream-processor.d.ts +2 -1
- package/dist/services/session/session-stream-processor.d.ts.map +1 -1
- package/dist/services/session/session-stream-processor.js +5 -4
- package/dist/services/session/session-stream-processor.js.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.js +14 -9
- package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
- package/dist/services/session/turn-coordinator.d.ts +2 -1
- package/dist/services/session/turn-coordinator.d.ts.map +1 -1
- package/dist/services/session/turn-coordinator.js +3 -0
- package/dist/services/session/turn-coordinator.js.map +1 -1
- package/dist/services/session/turn-workflow.d.ts +4 -1
- package/dist/services/session/turn-workflow.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.js +58 -21
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/session-rollover/session-rollover-brief.d.ts +9 -1
- package/dist/services/session-rollover/session-rollover-brief.d.ts.map +1 -1
- package/dist/services/session-rollover/session-rollover-brief.js +18 -3
- package/dist/services/session-rollover/session-rollover-brief.js.map +1 -1
- package/dist/services/settings/setting-schema-utils.d.ts +2 -0
- package/dist/services/settings/setting-schema-utils.d.ts.map +1 -1
- package/dist/services/settings/setting-schema-utils.js +15 -27
- package/dist/services/settings/setting-schema-utils.js.map +1 -1
- package/dist/services/settings/settings-persistence.js +1 -1
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +132 -15
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +133 -32
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +3 -1
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +88 -91
- package/dist/services/settings/settings-service.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts +207 -0
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +61 -1
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/settings-ui-metadata.d.ts +27 -0
- package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -0
- package/dist/services/settings/settings-ui-metadata.js +283 -0
- package/dist/services/settings/settings-ui-metadata.js.map +1 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +12 -2
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +61 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +8 -0
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +5 -2
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/role-loader.d.ts.map +1 -1
- package/dist/services/subagents/role-loader.js +4 -0
- package/dist/services/subagents/role-loader.js.map +1 -1
- package/dist/services/subagents/subagent-client-types.d.ts +7 -0
- package/dist/services/subagents/subagent-client-types.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +4 -1
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +12 -2
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +14 -5
- package/dist/services/subagents/subagent-notification-store.js.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +2 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts +8 -0
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +299 -56
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/subagents/types.d.ts +2 -1
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/subagents/types.js.map +1 -1
- package/dist/services/tool-toggles.d.ts +20 -0
- package/dist/services/tool-toggles.d.ts.map +1 -0
- package/dist/services/tool-toggles.js +115 -0
- package/dist/services/tool-toggles.js.map +1 -0
- package/dist/slash-commands.d.ts +3 -0
- package/dist/slash-commands.d.ts.map +1 -1
- package/dist/slash-commands.js.map +1 -1
- package/dist/test-helpers/conversation-session-with-adapter.d.ts +1 -1
- package/dist/test-helpers/conversation-session-with-adapter.d.ts.map +1 -1
- package/dist/test-helpers/conversation-session-with-adapter.js +6 -1
- package/dist/test-helpers/conversation-session-with-adapter.js.map +1 -1
- package/dist/test-helpers/vitest-cache-isolation.d.ts +2 -0
- package/dist/test-helpers/vitest-cache-isolation.d.ts.map +1 -0
- package/dist/test-helpers/vitest-cache-isolation.js +17 -0
- package/dist/test-helpers/vitest-cache-isolation.js.map +1 -0
- package/dist/tools/agent/activate-skill.d.ts.map +1 -1
- package/dist/tools/agent/activate-skill.js +1 -0
- package/dist/tools/agent/activate-skill.js.map +1 -1
- package/dist/tools/agent/configure-task-check-in.d.ts +2 -0
- package/dist/tools/agent/configure-task-check-in.d.ts.map +1 -1
- package/dist/tools/agent/configure-task-check-in.js +15 -6
- package/dist/tools/agent/configure-task-check-in.js.map +1 -1
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent-async.js +16 -12
- package/dist/tools/agent/run-subagent-async.js.map +1 -1
- package/dist/tools/file/apply-patch.d.ts +2 -15
- package/dist/tools/file/apply-patch.d.ts.map +1 -1
- package/dist/tools/file/apply-patch.js +171 -108
- package/dist/tools/file/apply-patch.js.map +1 -1
- package/dist/tools/file/code-context.d.ts.map +1 -1
- package/dist/tools/file/code-context.js +40 -5
- package/dist/tools/file/code-context.js.map +1 -1
- package/dist/tools/file/create-file.d.ts.map +1 -1
- package/dist/tools/file/create-file.js +13 -8
- package/dist/tools/file/create-file.js.map +1 -1
- package/dist/tools/file/glob.d.ts.map +1 -1
- package/dist/tools/file/glob.js +49 -11
- package/dist/tools/file/glob.js.map +1 -1
- package/dist/tools/file/grep.d.ts.map +1 -1
- package/dist/tools/file/grep.js +32 -8
- package/dist/tools/file/grep.js.map +1 -1
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +109 -6
- package/dist/tools/file/read-file.js.map +1 -1
- package/dist/tools/file/search-replace.js +4 -4
- package/dist/tools/file/search-replace.js.map +1 -1
- package/dist/tools/file/upstream-apply-patch.d.ts +31 -0
- package/dist/tools/file/upstream-apply-patch.d.ts.map +1 -0
- package/dist/tools/file/upstream-apply-patch.js +126 -0
- package/dist/tools/file/upstream-apply-patch.js.map +1 -0
- package/dist/tools/format-helpers.d.ts +2 -0
- package/dist/tools/format-helpers.d.ts.map +1 -1
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/memory/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory/memory-tools.js +19 -1
- package/dist/tools/memory/memory-tools.js.map +1 -1
- package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -1
- package/dist/tools/session-browser/session-browser-tools.js +33 -7
- package/dist/tools/session-browser/session-browser-tools.js.map +1 -1
- package/dist/tools/session-rollover/session-rollover-tool.d.ts.map +1 -1
- package/dist/tools/session-rollover/session-rollover-tool.js +18 -3
- package/dist/tools/session-rollover/session-rollover-tool.js.map +1 -1
- package/dist/tools/system/run-code/index.d.ts +2 -0
- package/dist/tools/system/run-code/index.d.ts.map +1 -0
- package/dist/tools/system/run-code/index.js +2 -0
- package/dist/tools/system/run-code/index.js.map +1 -0
- package/dist/tools/system/run-code/run-code-telemetry.d.ts +92 -0
- package/dist/tools/system/run-code/run-code-telemetry.d.ts.map +1 -0
- package/dist/tools/system/run-code/run-code-telemetry.js +189 -0
- package/dist/tools/system/run-code/run-code-telemetry.js.map +1 -0
- package/dist/tools/system/run-code/run-code.d.ts +98 -0
- package/dist/tools/system/run-code/run-code.d.ts.map +1 -0
- package/dist/tools/system/run-code/run-code.js +1078 -0
- package/dist/tools/system/run-code/run-code.js.map +1 -0
- package/dist/tools/system/run-code/tools-header.d.ts +25 -0
- package/dist/tools/system/run-code/tools-header.d.ts.map +1 -0
- package/dist/tools/system/run-code/tools-header.js +136 -0
- package/dist/tools/system/run-code/tools-header.js.map +1 -0
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +66 -11
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/system/worktree.js +2 -2
- package/dist/tools/system/worktree.js.map +1 -1
- package/dist/tools/types.d.ts +39 -2
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/utils.d.ts +10 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +13 -0
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/web/web-fetch.d.ts.map +1 -1
- package/dist/tools/web/web-fetch.js +14 -6
- package/dist/tools/web/web-fetch.js.map +1 -1
- package/dist/tools/web/web-search.d.ts.map +1 -1
- package/dist/tools/web/web-search.js +2 -1
- package/dist/tools/web/web-search.js.map +1 -1
- package/dist/utils/ai/model-settings.d.ts.map +1 -1
- package/dist/utils/ai/model-settings.js +0 -47
- package/dist/utils/ai/model-settings.js.map +1 -1
- package/dist/utils/ai/token-usage.d.ts +7 -0
- package/dist/utils/ai/token-usage.d.ts.map +1 -1
- package/dist/utils/ai/token-usage.js +6 -2
- package/dist/utils/ai/token-usage.js.map +1 -1
- package/dist/utils/conversation/apply-conversation-result.d.ts.map +1 -1
- package/dist/utils/conversation/apply-conversation-result.js +13 -0
- package/dist/utils/conversation/apply-conversation-result.js.map +1 -1
- package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-utils.js +54 -1
- package/dist/utils/conversation/conversation-utils.js.map +1 -1
- package/dist/utils/conversation/message-buffer.d.ts +16 -0
- package/dist/utils/conversation/message-buffer.d.ts.map +1 -1
- package/dist/utils/conversation/message-buffer.js +33 -0
- package/dist/utils/conversation/message-buffer.js.map +1 -1
- package/dist/utils/output/bound-tool-result.d.ts +23 -0
- package/dist/utils/output/bound-tool-result.d.ts.map +1 -1
- package/dist/utils/output/bound-tool-result.js +27 -0
- package/dist/utils/output/bound-tool-result.js.map +1 -1
- package/dist/utils/output/trim-tool-output.d.ts +1 -1
- package/dist/utils/output/trim-tool-output.d.ts.map +1 -1
- package/dist/utils/output/trim-tool-output.js +20 -0
- package/dist/utils/output/trim-tool-output.js.map +1 -1
- package/dist/utils/resume-list.d.ts +2 -0
- package/dist/utils/resume-list.d.ts.map +1 -1
- package/dist/utils/resume-list.js +7 -14
- package/dist/utils/resume-list.js.map +1 -1
- package/dist/utils/settings-command.d.ts +8 -0
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +138 -37
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/execute-shell.d.ts +18 -0
- package/dist/utils/shell/execute-shell.d.ts.map +1 -1
- package/dist/utils/shell/execute-shell.js +48 -6
- package/dist/utils/shell/execute-shell.js.map +1 -1
- package/dist/utils/shell/shell-output.d.ts +7 -1
- package/dist/utils/shell/shell-output.d.ts.map +1 -1
- package/dist/utils/shell/shell-output.js +37 -7
- package/dist/utils/shell/shell-output.js.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.d.ts +9 -0
- package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.js +13 -1
- package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
- package/dist/utils/streaming/streaming-speed-tracker.d.ts +15 -0
- package/dist/utils/streaming/streaming-speed-tracker.d.ts.map +1 -1
- package/dist/utils/streaming/streaming-speed-tracker.js +18 -1
- package/dist/utils/streaming/streaming-speed-tracker.js.map +1 -1
- package/dist/utils/tool-args-display.d.ts +21 -0
- package/dist/utils/tool-args-display.d.ts.map +1 -0
- package/dist/utils/tool-args-display.js +34 -0
- package/dist/utils/tool-args-display.js.map +1 -0
- package/dist/utils/value-suggestions.d.ts +4 -10
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +77 -144
- package/dist/utils/value-suggestions.js.map +1 -1
- package/dist/utils/worker-bootstrap.d.ts +3 -0
- package/dist/utils/worker-bootstrap.d.ts.map +1 -0
- package/dist/utils/worker-bootstrap.js +7 -0
- package/dist/utils/worker-bootstrap.js.map +1 -0
- package/dist/utils/worker-cwd-preload.cjs +23 -0
- package/dist/utils/worker-cwd-preload.cjs.map +1 -0
- package/dist/utils/worker-cwd-preload.d.cts +2 -0
- package/dist/utils/worker-cwd-preload.d.cts.map +1 -0
- package/package.json +7 -4
- package/dist/services/agent-runtime/workflow/workflow-worker.d.ts +0 -4
- package/dist/services/agent-runtime/workflow/workflow-worker.d.ts.map +0 -1
- package/dist/services/agent-runtime/workflow/workflow-worker.js +0 -55
- package/dist/services/agent-runtime/workflow/workflow-worker.js.map +0 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { JsonValue } from '../agent-runtime/workflow/workflow-types.js';
|
|
2
|
+
export type { JsonValue };
|
|
3
|
+
/**
|
|
4
|
+
* Failure codes the host itself can produce. Capability handlers reuse the same
|
|
5
|
+
* union so a fatal capability outcome and a host failure are indistinguishable
|
|
6
|
+
* to the caller, which is what lets `run_agent_workflow` keep its existing
|
|
7
|
+
* error contract while sharing this engine with `run_code`.
|
|
8
|
+
*/
|
|
9
|
+
export type HostErrorCode = 'syntax_error' | 'runtime_error' | 'timeout' | 'deadline' | 'cancelled' | 'limit_exceeded' | 'approval_required' | 'sandbox_unavailable' | 'invalid_output' | 'code_too_large';
|
|
10
|
+
export interface HostError {
|
|
11
|
+
code: HostErrorCode;
|
|
12
|
+
message: string;
|
|
13
|
+
}
|
|
14
|
+
export type HostResult = {
|
|
15
|
+
ok: true;
|
|
16
|
+
output: JsonValue;
|
|
17
|
+
voidOutput?: boolean;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
error: HostError;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* How a capability appears to the script.
|
|
24
|
+
*
|
|
25
|
+
* - `factory`: `name(config).run(input)` — the shape `run_agent_workflow` uses.
|
|
26
|
+
* - `namespace`: `name.<member>(params)` — the shape `run_code` uses. A member
|
|
27
|
+
* speaks an `{ ok, result | error }` envelope: a failed call rejects inside
|
|
28
|
+
* the script rather than resolving to an error value.
|
|
29
|
+
*
|
|
30
|
+
* Only these two shapes exist, and both live verbatim in the worker template;
|
|
31
|
+
* generating a capability injects its *name* (and member names), never code.
|
|
32
|
+
*/
|
|
33
|
+
export type CapabilityKind = 'factory' | 'namespace';
|
|
34
|
+
/** The generated part of the worker source: names only. */
|
|
35
|
+
export type CapabilityBinding = {
|
|
36
|
+
name: string;
|
|
37
|
+
kind: 'factory';
|
|
38
|
+
} | {
|
|
39
|
+
name: string;
|
|
40
|
+
kind: 'namespace';
|
|
41
|
+
members: readonly string[];
|
|
42
|
+
};
|
|
43
|
+
/** A call that passed `prepare` and is waiting to be invoked. */
|
|
44
|
+
export interface CapabilityCallContext {
|
|
45
|
+
/** One-based admission order, stable across concurrency. */
|
|
46
|
+
readonly callId: number;
|
|
47
|
+
/** Worker-local request id from the inbound `.run` message. Not `callId`. */
|
|
48
|
+
readonly requestId: string;
|
|
49
|
+
readonly signal: AbortSignal;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* What a capability does with one call. `result` is delivered to the script;
|
|
53
|
+
* `fail` aborts the whole run with that error, which is how the workflow
|
|
54
|
+
* capability reports a prohibited tool.
|
|
55
|
+
*/
|
|
56
|
+
export type CapabilityOutcome = {
|
|
57
|
+
kind: 'result';
|
|
58
|
+
result: JsonValue;
|
|
59
|
+
} | {
|
|
60
|
+
kind: 'fail';
|
|
61
|
+
code: HostErrorCode;
|
|
62
|
+
message: string;
|
|
63
|
+
};
|
|
64
|
+
export interface CapabilityLimits {
|
|
65
|
+
/** Total calls one run may admit for this capability. */
|
|
66
|
+
maxCalls: number;
|
|
67
|
+
/** How many admitted calls may be in flight at once in the default lane. */
|
|
68
|
+
maxConcurrency: number;
|
|
69
|
+
/** Message used when the budget is exhausted and the run is aborted. */
|
|
70
|
+
limitExceededMessage: string;
|
|
71
|
+
}
|
|
72
|
+
export interface CapabilityHandler<Prepared = unknown> {
|
|
73
|
+
/** How the capability is bound inside the sandbox. */
|
|
74
|
+
binding: CapabilityBinding;
|
|
75
|
+
limits: CapabilityLimits;
|
|
76
|
+
/**
|
|
77
|
+
* Validates one raw request before it consumes budget or a permit. Returning
|
|
78
|
+
* an outcome short-circuits; returning a value hands it to {@link invoke}.
|
|
79
|
+
*/
|
|
80
|
+
prepare(payload: Record<string, unknown>): Promise<Prepared | CapabilityOutcome> | Prepared | CapabilityOutcome;
|
|
81
|
+
/** Called once the call has been admitted and holds a concurrency permit. */
|
|
82
|
+
invoke(prepared: Prepared, context: CapabilityCallContext): Promise<CapabilityOutcome>;
|
|
83
|
+
/** Fires when a call is admitted, before it runs. Used for run bookkeeping. */
|
|
84
|
+
onAdmitted?(prepared: Prepared, context: CapabilityCallContext): void;
|
|
85
|
+
/**
|
|
86
|
+
* Nested-approval wait started. The host keys its waiting-set by
|
|
87
|
+
* {@link CapabilityCallContext.requestId}. Missing {@link onResumed} is work.
|
|
88
|
+
*/
|
|
89
|
+
onWaiting?(context: CapabilityCallContext): void;
|
|
90
|
+
/** Nested-approval wait ended. Pair with {@link onWaiting}. */
|
|
91
|
+
onResumed?(context: CapabilityCallContext): void;
|
|
92
|
+
/**
|
|
93
|
+
* Which permit pool the call takes. `serial` is a strict FIFO lane of one,
|
|
94
|
+
* for calls that mutate shared state (the run loop's non-`parallelSafe`
|
|
95
|
+
* rule); `default` is bounded by {@link CapabilityLimits.maxConcurrency}.
|
|
96
|
+
* Omitted means every call is in the default lane.
|
|
97
|
+
*/
|
|
98
|
+
lane?(prepared: Prepared): 'serial' | 'default';
|
|
99
|
+
/**
|
|
100
|
+
* What to do with a call that exceeds {@link CapabilityLimits.maxCalls}.
|
|
101
|
+
* Omitting it aborts the run with `limit_exceeded`; a capability that would
|
|
102
|
+
* rather let the script keep the work it has already done returns a result
|
|
103
|
+
* in its own envelope instead. The usage argument describes calls admitted
|
|
104
|
+
* before the rejected call; `prepared` is the exact already-validated call
|
|
105
|
+
* rejected by the budget and does not expose worker or host objects.
|
|
106
|
+
*/
|
|
107
|
+
overBudget?(usage: {
|
|
108
|
+
usedCalls: number;
|
|
109
|
+
maxCalls: number;
|
|
110
|
+
}, prepared: Prepared): CapabilityOutcome;
|
|
111
|
+
}
|
|
112
|
+
export interface HostLimits {
|
|
113
|
+
timeoutMs: number;
|
|
114
|
+
maxCodeBytes: number;
|
|
115
|
+
maxOutputBytes: number;
|
|
116
|
+
maxConsoleBytes: number;
|
|
117
|
+
}
|
|
118
|
+
export interface HostRunInput {
|
|
119
|
+
code: string;
|
|
120
|
+
capabilities: Record<string, CapabilityHandler<any>>;
|
|
121
|
+
limits: HostLimits;
|
|
122
|
+
signal?: AbortSignal;
|
|
123
|
+
/** Noun used in host-generated messages, e.g. 'Workflow' or 'Script'. */
|
|
124
|
+
subject: string;
|
|
125
|
+
/** When set, code that returns nothing completes with `null` rather than failing. */
|
|
126
|
+
allowVoidOutput?: boolean;
|
|
127
|
+
onConsole?: (values: JsonValue[]) => void;
|
|
128
|
+
/** Test seam; defaults to a worker built from `capabilities`. */
|
|
129
|
+
workerFactory?: (code: string, syncTimeoutMs: number) => import('node:worker_threads').Worker;
|
|
130
|
+
}
|
|
131
|
+
export interface SandboxedCodeHost {
|
|
132
|
+
run(input: HostRunInput): Promise<HostResult>;
|
|
133
|
+
}
|
|
134
|
+
export declare function isCapabilityOutcome(value: unknown): value is CapabilityOutcome;
|
|
135
|
+
//# sourceMappingURL=host-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-types.d.ts","sourceRoot":"","sources":["../../../source/services/sandboxed-code-host/host-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAE7E,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,eAAe,GACf,SAAS,GACT,UAAU,GACV,WAAW,GACX,gBAAgB,GAChB,mBAAmB,GACnB,qBAAqB,GACrB,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAErD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpE,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,GAAG,OAAO;IACnD,sDAAsD;IACtD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC,GAAG,QAAQ,GAAG,iBAAiB,CAAC;IAChH,6EAA6E;IAC7E,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvF,+EAA+E;IAC/E,UAAU,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtE;;;OAGG;IACH,SAAS,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACjD,+DAA+D;IAC/D,SAAS,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACjD;;;;;OAKG;IACH,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChD;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,CAAC;CACpG;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC1C,iEAAiE;IACjE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,qBAAqB,EAAE,MAAM,CAAC;CAC/F;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAM9E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-types.js","sourceRoot":"","sources":["../../../source/services/sandboxed-code-host/host-types.ts"],"names":[],"mappings":"AAyIA,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAE,KAA2B,CAAC,IAAI,KAAK,QAAQ,IAAK,KAA2B,CAAC,IAAI,KAAK,MAAM,CAAC,CACjG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CapabilityBinding } from './host-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the worker source for a set of capabilities.
|
|
4
|
+
*
|
|
5
|
+
* Only names reach the template, and they go through `JSON.stringify`, so a
|
|
6
|
+
* capability name can never become executable source.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildWorkerSource(bindings: readonly CapabilityBinding[]): string;
|
|
9
|
+
//# sourceMappingURL=host-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-worker.d.ts","sourceRoot":"","sources":["../../../source/services/sandboxed-code-host/host-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAwVzD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,CAEhF"}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The worker template. It is fixed source: the only thing a caller injects is
|
|
3
|
+
* the capability *name* list below, serialized as JSON. No handler body is ever
|
|
4
|
+
* generated, which is what keeps the sandbox auditable now that the source is
|
|
5
|
+
* built rather than written.
|
|
6
|
+
*
|
|
7
|
+
* The context exposes only the bound capabilities and `console`; Node's worker
|
|
8
|
+
* globals never enter the vm context.
|
|
9
|
+
*/
|
|
10
|
+
const WORKER_TEMPLATE = String.raw `
|
|
11
|
+
const { parentPort, workerData } = require('node:worker_threads');
|
|
12
|
+
const vm = require('node:vm');
|
|
13
|
+
const capabilities = __CAPABILITIES__;
|
|
14
|
+
function send(type, payload) { parentPort.postMessage({ type, ...payload }); }
|
|
15
|
+
function error(error) { return { name: error && error.name || 'Error', message: error && error.message || String(error) }; }
|
|
16
|
+
function json(value, ancestors = new Set()) {
|
|
17
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean') return true;
|
|
18
|
+
if (typeof value === 'number') return Number.isFinite(value);
|
|
19
|
+
if (typeof value !== 'object' || ancestors.has(value)) return false;
|
|
20
|
+
ancestors.add(value);
|
|
21
|
+
const values = Array.isArray(value) ? value : Object.values(value);
|
|
22
|
+
const valid = values.every(v => json(v, ancestors));
|
|
23
|
+
ancestors.delete(value);
|
|
24
|
+
return valid;
|
|
25
|
+
}
|
|
26
|
+
function jsonPathProperty(path, key) {
|
|
27
|
+
return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? path + '.' + key : path + '[' + JSON.stringify(key) + ']';
|
|
28
|
+
}
|
|
29
|
+
function jsonFailure(path, reason) {
|
|
30
|
+
return { ok: false, path, reason };
|
|
31
|
+
}
|
|
32
|
+
function serializeJson(value, path = '$', ancestors = new Set(), propertyKey = '', skipToJSON = false) {
|
|
33
|
+
if (value === undefined) return jsonFailure(path, 'undefined');
|
|
34
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean') return { ok: true, value };
|
|
35
|
+
if (typeof value === 'number') return Number.isFinite(value) ? { ok: true, value } : jsonFailure(path, 'a non-finite number');
|
|
36
|
+
if (typeof value === 'function') return jsonFailure(path, 'a function');
|
|
37
|
+
if (typeof value === 'symbol') return jsonFailure(path, 'a symbol');
|
|
38
|
+
if (typeof value === 'bigint') return jsonFailure(path, 'a BigInt');
|
|
39
|
+
if (typeof value !== 'object') return jsonFailure(path, 'an unsupported value');
|
|
40
|
+
|
|
41
|
+
if (!skipToJSON) {
|
|
42
|
+
let toJSON;
|
|
43
|
+
try {
|
|
44
|
+
toJSON = value.toJSON;
|
|
45
|
+
} catch (_) {
|
|
46
|
+
return jsonFailure(path, 'a property that threw when read');
|
|
47
|
+
}
|
|
48
|
+
if (typeof toJSON === 'function') {
|
|
49
|
+
let replacement;
|
|
50
|
+
try {
|
|
51
|
+
replacement = Reflect.apply(toJSON, value, [propertyKey]);
|
|
52
|
+
} catch (_) {
|
|
53
|
+
return jsonFailure(path, 'a toJSON method that threw when called');
|
|
54
|
+
}
|
|
55
|
+
if (replacement === undefined)
|
|
56
|
+
return path === '$' && propertyKey === '' ? jsonFailure(path, 'undefined') : { ok: true, value: undefined };
|
|
57
|
+
return serializeJson(replacement, path, ancestors, propertyKey, true);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (ancestors.has(value)) return jsonFailure(path, 'a cycle');
|
|
62
|
+
|
|
63
|
+
ancestors.add(value);
|
|
64
|
+
let isArray;
|
|
65
|
+
try {
|
|
66
|
+
isArray = Array.isArray(value);
|
|
67
|
+
} catch (_) {
|
|
68
|
+
ancestors.delete(value);
|
|
69
|
+
return jsonFailure(path, 'a property that threw when read');
|
|
70
|
+
}
|
|
71
|
+
if (isArray) {
|
|
72
|
+
let length;
|
|
73
|
+
try {
|
|
74
|
+
length = value.length;
|
|
75
|
+
} catch (_) {
|
|
76
|
+
ancestors.delete(value);
|
|
77
|
+
return jsonFailure(path, 'a property that threw when read');
|
|
78
|
+
}
|
|
79
|
+
const output = new Array(length);
|
|
80
|
+
for (let index = 0; index < length; index++) {
|
|
81
|
+
let item;
|
|
82
|
+
try {
|
|
83
|
+
item = value[index];
|
|
84
|
+
} catch (_) {
|
|
85
|
+
ancestors.delete(value);
|
|
86
|
+
return jsonFailure(path + '[' + index + ']', 'a property that threw when read');
|
|
87
|
+
}
|
|
88
|
+
if (item === undefined) {
|
|
89
|
+
output[index] = null;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const serialized = serializeJson(item, path + '[' + index + ']', ancestors, String(index));
|
|
93
|
+
if (!serialized.ok) {
|
|
94
|
+
ancestors.delete(value);
|
|
95
|
+
return serialized;
|
|
96
|
+
}
|
|
97
|
+
output[index] = serialized.value === undefined ? null : serialized.value;
|
|
98
|
+
}
|
|
99
|
+
ancestors.delete(value);
|
|
100
|
+
return { ok: true, value: output };
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const output = {};
|
|
104
|
+
let keys;
|
|
105
|
+
try {
|
|
106
|
+
keys = Object.keys(value);
|
|
107
|
+
} catch (_) {
|
|
108
|
+
ancestors.delete(value);
|
|
109
|
+
return jsonFailure(path, 'a property that threw when read');
|
|
110
|
+
}
|
|
111
|
+
for (const key of keys) {
|
|
112
|
+
let item;
|
|
113
|
+
try {
|
|
114
|
+
item = value[key];
|
|
115
|
+
} catch (_) {
|
|
116
|
+
ancestors.delete(value);
|
|
117
|
+
return jsonFailure(jsonPathProperty(path, key), 'a property that threw when read');
|
|
118
|
+
}
|
|
119
|
+
if (item === undefined) continue;
|
|
120
|
+
const serialized = serializeJson(item, jsonPathProperty(path, key), ancestors, key);
|
|
121
|
+
if (!serialized.ok) {
|
|
122
|
+
ancestors.delete(value);
|
|
123
|
+
return serialized;
|
|
124
|
+
}
|
|
125
|
+
if (serialized.value === undefined) continue;
|
|
126
|
+
Object.defineProperty(output, key, {
|
|
127
|
+
value: serialized.value,
|
|
128
|
+
enumerable: true,
|
|
129
|
+
configurable: true,
|
|
130
|
+
writable: true,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
ancestors.delete(value);
|
|
134
|
+
return { ok: true, value: output };
|
|
135
|
+
}
|
|
136
|
+
const context = vm.createContext(Object.create(null), { codeGeneration: { strings: false, wasm: false } });
|
|
137
|
+
const inflight = new Set();
|
|
138
|
+
let resultsConsumed = 0;
|
|
139
|
+
let finished = false;
|
|
140
|
+
let lastWasIdle = false;
|
|
141
|
+
let idleScheduled = false;
|
|
142
|
+
function emitBusy() {
|
|
143
|
+
if (!lastWasIdle) return;
|
|
144
|
+
lastWasIdle = false;
|
|
145
|
+
send('workflow.busy', { resultsConsumed });
|
|
146
|
+
}
|
|
147
|
+
function emitIdle() {
|
|
148
|
+
if (finished) return;
|
|
149
|
+
lastWasIdle = true;
|
|
150
|
+
send('workflow.idle', { pending: Array.from(inflight), resultsConsumed });
|
|
151
|
+
}
|
|
152
|
+
function scheduleIdle() {
|
|
153
|
+
if (finished || idleScheduled) return;
|
|
154
|
+
idleScheduled = true;
|
|
155
|
+
setImmediate(() => {
|
|
156
|
+
idleScheduled = false;
|
|
157
|
+
emitIdle();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
function finishSend(type, payload) {
|
|
161
|
+
emitBusy();
|
|
162
|
+
finished = true;
|
|
163
|
+
send(type, payload);
|
|
164
|
+
}
|
|
165
|
+
// This is the only host-realm callable made available during context setup.
|
|
166
|
+
// Its prototype is severed, it returns no host value, and it is deleted from
|
|
167
|
+
// the global object before user code runs. The context-created wrappers retain
|
|
168
|
+
// it only as a private transport capability.
|
|
169
|
+
const bridge = (type, payload) => {
|
|
170
|
+
if (type === 'console.log') {
|
|
171
|
+
try {
|
|
172
|
+
const values = payload && payload.values;
|
|
173
|
+
if (!Array.isArray(values) || !values.every(value => json(value))) return;
|
|
174
|
+
if (workerData.maxConsoleBytes !== undefined && Buffer.byteLength(JSON.stringify(values), 'utf8') > workerData.maxConsoleBytes) return;
|
|
175
|
+
emitBusy();
|
|
176
|
+
parentPort.postMessage({ type, values });
|
|
177
|
+
} catch (_) {}
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (typeof type === 'string' && type.endsWith('.run')) {
|
|
181
|
+
emitBusy();
|
|
182
|
+
if (payload && payload.requestId !== undefined) inflight.add(String(payload.requestId));
|
|
183
|
+
parentPort.postMessage({ type, ...(payload || {}) });
|
|
184
|
+
scheduleIdle();
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
parentPort.postMessage({ type, ...(payload || {}) });
|
|
188
|
+
};
|
|
189
|
+
Object.setPrototypeOf(bridge, null);
|
|
190
|
+
context.__bridge = bridge;
|
|
191
|
+
context.__capabilities = JSON.stringify(capabilities);
|
|
192
|
+
function installContextBindings() {
|
|
193
|
+
const bridge = globalThis.__bridge;
|
|
194
|
+
const capabilityDefinitions = JSON.parse(globalThis.__capabilities);
|
|
195
|
+
function json(value, ancestors = new Set()) {
|
|
196
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean') return true;
|
|
197
|
+
if (typeof value === 'number') return Number.isFinite(value);
|
|
198
|
+
if (typeof value !== 'object' || ancestors.has(value)) return false;
|
|
199
|
+
ancestors.add(value);
|
|
200
|
+
const values = Array.isArray(value) ? value : Object.values(value);
|
|
201
|
+
const valid = values.every(v => json(v, ancestors));
|
|
202
|
+
ancestors.delete(value);
|
|
203
|
+
return valid;
|
|
204
|
+
}
|
|
205
|
+
delete globalThis.__bridge;
|
|
206
|
+
delete globalThis.__capabilities;
|
|
207
|
+
let sequence = 0;
|
|
208
|
+
const pending = new Map();
|
|
209
|
+
function call(name, payload) {
|
|
210
|
+
const requestId = String(++sequence);
|
|
211
|
+
return new Promise((resolve) => {
|
|
212
|
+
pending.set(requestId, resolve);
|
|
213
|
+
bridge(name + '.run', Object.assign({ requestId }, payload));
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
function factoryBinding(name) {
|
|
217
|
+
return (config) => Object.freeze({ run(input) { return call(name, { config, input }); } });
|
|
218
|
+
}
|
|
219
|
+
function namespaceBinding(name, members) {
|
|
220
|
+
const namespace = Object.create(null);
|
|
221
|
+
for (const member of members) namespace[member] = (params) => call(name, { member, params }).then((response) => {
|
|
222
|
+
// Namespace members speak an { ok, result | error } envelope so a refused or
|
|
223
|
+
// failed call is catchable inside the script instead of a silent value.
|
|
224
|
+
if (!response || typeof response !== 'object') return response;
|
|
225
|
+
// Naming the tool here is what lets a model tell which call of a fan-out
|
|
226
|
+
// failed: the underlying message often does not (e.g. 'rg: regex parse error').
|
|
227
|
+
if (response.ok === false) throw new Error('tools.' + member + ' failed: ' + String(response.error));
|
|
228
|
+
return response.result;
|
|
229
|
+
});
|
|
230
|
+
// Unknown members explain themselves instead of surfacing as
|
|
231
|
+
// 'tools.x is not a function', which names neither the problem nor the fix.
|
|
232
|
+
const guarded = new Proxy(namespace, {
|
|
233
|
+
get(target, prop) {
|
|
234
|
+
if (prop in target) return target[prop];
|
|
235
|
+
if (typeof prop === 'string') {
|
|
236
|
+
throw new Error('Unknown tool "' + prop + '". Available: ' + members.join(', '));
|
|
237
|
+
}
|
|
238
|
+
return undefined;
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
return Object.freeze(guarded);
|
|
242
|
+
}
|
|
243
|
+
for (const capability of capabilityDefinitions) {
|
|
244
|
+
globalThis[capability.name] = capability.kind === 'namespace'
|
|
245
|
+
? namespaceBinding(capability.name, capability.members)
|
|
246
|
+
: factoryBinding(capability.name);
|
|
247
|
+
}
|
|
248
|
+
// A transport guard only: the host independently validates console data and
|
|
249
|
+
// applies the cumulative budget before forwarding it to observers.
|
|
250
|
+
globalThis.console = Object.freeze({ log: (...values) => {
|
|
251
|
+
if (!values.every(value => json(value))) return;
|
|
252
|
+
bridge('console.log', { values });
|
|
253
|
+
} });
|
|
254
|
+
return (requestId, result) => {
|
|
255
|
+
const resolve = pending.get(requestId);
|
|
256
|
+
pending.delete(requestId);
|
|
257
|
+
if (!resolve) return;
|
|
258
|
+
const encoded = JSON.stringify(result);
|
|
259
|
+
resolve(encoded === undefined ? null : JSON.parse(encoded));
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
const resolveResponse = vm.runInContext('(' + installContextBindings.toString() + ')()', context);
|
|
263
|
+
function firstScriptFrame(stack) {
|
|
264
|
+
var stackLines = stack ? String(stack).split('\n') : [];
|
|
265
|
+
for (var i = 0; i < stackLines.length; i++) {
|
|
266
|
+
var match = /^(?:at )?workflow\.js:(\d+)(?::(\d+))?$/.exec(stackLines[i].trim());
|
|
267
|
+
if (match) return match;
|
|
268
|
+
}
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
function scriptLineDetail(code, frame) {
|
|
272
|
+
if (!frame) return null;
|
|
273
|
+
var userLine = Number(frame[1]) - 1;
|
|
274
|
+
var sourceLines = String(code).split('\n');
|
|
275
|
+
if (!(userLine >= 1 && userLine <= sourceLines.length)) return null;
|
|
276
|
+
var excerpt = sourceLines[userLine - 1].trim();
|
|
277
|
+
if (excerpt.length > 140) excerpt = excerpt.slice(0, 140) + '...';
|
|
278
|
+
return 'Line ' + userLine + (frame[2] ? ':' + frame[2] : '') + ': ' + excerpt;
|
|
279
|
+
}
|
|
280
|
+
function syntaxErrorDetail(code, err) {
|
|
281
|
+
var located = scriptLineDetail(code, firstScriptFrame(err && err.stack));
|
|
282
|
+
var detail = located
|
|
283
|
+
? '\n\n' + located
|
|
284
|
+
: '\n\nThe error was reported at the end of the script: a block, string, or template literal is likely unterminated.';
|
|
285
|
+
return detail + '\n\nScripts run as plain JavaScript in this sandbox: no TypeScript annotations, no Node imports, and no dynamic import(); patch or file text you embed must be an escaped string inside the script, and an unescaped backtick or template substitution breaks the whole script.';
|
|
286
|
+
}
|
|
287
|
+
function runtimeErrorDetail(code, err) {
|
|
288
|
+
var located = scriptLineDetail(code, firstScriptFrame(err && err.stack));
|
|
289
|
+
return located ? '\n\nAt script ' + located : '';
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (typeof resolveResponse !== 'function') throw new Error('Failed to install sandbox bindings');
|
|
293
|
+
parentPort.on('message', (message) => {
|
|
294
|
+
if (typeof message.type === 'string' && message.type.endsWith('.result')) {
|
|
295
|
+
resultsConsumed++;
|
|
296
|
+
inflight.delete(String(message.requestId));
|
|
297
|
+
resolveResponse(message.requestId, message.result);
|
|
298
|
+
emitBusy();
|
|
299
|
+
scheduleIdle();
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
(async () => {
|
|
303
|
+
try {
|
|
304
|
+
const script = new vm.Script('(async () => { "use strict";\n' + workerData.code + '\n})()', { filename: 'workflow.js' });
|
|
305
|
+
const output = await script.runInContext(context, { timeout: workerData.syncTimeoutMs });
|
|
306
|
+
if (output === undefined && workerData.allowVoidOutput) {
|
|
307
|
+
finishSend('workflow.complete', { output: null, voidOutput: true });
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const serialized = serializeJson(output);
|
|
311
|
+
if (!serialized.ok)
|
|
312
|
+
throw new Error(
|
|
313
|
+
(workerData.subject || 'Script') +
|
|
314
|
+
' return value is not JSON-safe: ' +
|
|
315
|
+
serialized.path +
|
|
316
|
+
' is ' +
|
|
317
|
+
serialized.reason +
|
|
318
|
+
'.\n' +
|
|
319
|
+
resultsConsumed +
|
|
320
|
+
' nested tool calls already completed — inspect state before retrying.',
|
|
321
|
+
);
|
|
322
|
+
finishSend('workflow.complete', { output: serialized.value });
|
|
323
|
+
} catch (err) {
|
|
324
|
+
// Compile errors are raised by the host-realm 'new vm.Script(...)' above, so
|
|
325
|
+
// 'err instanceof SyntaxError' is meaningful only here. A SyntaxError thrown
|
|
326
|
+
// *inside* the script comes from the vm realm and deliberately fails this
|
|
327
|
+
// host instanceof check: runtime errors must never receive compile guidance.
|
|
328
|
+
var reported = error(err);
|
|
329
|
+
if (err instanceof SyntaxError) {
|
|
330
|
+
reported.message = reported.message + syntaxErrorDetail(workerData.code, err);
|
|
331
|
+
} else if (reported.message.indexOf('A dynamic import callback was not specified') === 0) {
|
|
332
|
+
reported.message =
|
|
333
|
+
reported.message + '\n\ndynamic import() is unavailable inside the sandbox: scripts run as plain JavaScript.';
|
|
334
|
+
} else {
|
|
335
|
+
var at = runtimeErrorDetail(workerData.code, err);
|
|
336
|
+
if (at) reported.message = reported.message + at;
|
|
337
|
+
}
|
|
338
|
+
finishSend('workflow.error', { error: reported, syntax: err instanceof SyntaxError });
|
|
339
|
+
}
|
|
340
|
+
})();
|
|
341
|
+
`;
|
|
342
|
+
/**
|
|
343
|
+
* Builds the worker source for a set of capabilities.
|
|
344
|
+
*
|
|
345
|
+
* Only names reach the template, and they go through `JSON.stringify`, so a
|
|
346
|
+
* capability name can never become executable source.
|
|
347
|
+
*/
|
|
348
|
+
export function buildWorkerSource(bindings) {
|
|
349
|
+
return WORKER_TEMPLATE.replace('__CAPABILITIES__', () => JSON.stringify(bindings));
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=host-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-worker.js","sourceRoot":"","sources":["../../../source/services/sandboxed-code-host/host-worker.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2UjC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAsC;IACtE,OAAO,eAAe,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Worker } from 'node:worker_threads';
|
|
2
|
+
import type { CapabilityBinding } from './host-types.js';
|
|
3
|
+
export interface SandboxOptions {
|
|
4
|
+
syncTimeoutMs: number;
|
|
5
|
+
maxConsoleBytes?: number;
|
|
6
|
+
subject?: string;
|
|
7
|
+
/** When set, a script that returns nothing completes with `null` instead of failing. */
|
|
8
|
+
allowVoidOutput?: boolean;
|
|
9
|
+
capabilities: readonly CapabilityBinding[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a fresh, disposable worker. The worker's application-facing context is
|
|
13
|
+
* built inside the worker template and contains no host objects.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSandbox(code: string, options: SandboxOptions): Worker;
|
|
16
|
+
//# sourceMappingURL=sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../source/services/sandboxed-code-host/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAY3E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Worker } from 'node:worker_threads';
|
|
2
|
+
import { workerBootstrapExecArgv } from '../../utils/worker-bootstrap.js';
|
|
3
|
+
import { buildWorkerSource } from './host-worker.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a fresh, disposable worker. The worker's application-facing context is
|
|
6
|
+
* built inside the worker template and contains no host objects.
|
|
7
|
+
*/
|
|
8
|
+
export function createSandbox(code, options) {
|
|
9
|
+
return new Worker(buildWorkerSource(options.capabilities), {
|
|
10
|
+
eval: true,
|
|
11
|
+
execArgv: workerBootstrapExecArgv(),
|
|
12
|
+
workerData: {
|
|
13
|
+
code,
|
|
14
|
+
syncTimeoutMs: options.syncTimeoutMs,
|
|
15
|
+
maxConsoleBytes: options.maxConsoleBytes,
|
|
16
|
+
subject: options.subject,
|
|
17
|
+
allowVoidOutput: options.allowVoidOutput,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../source/services/sandboxed-code-host/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYrD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAuB;IACjE,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACzD,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,uBAAuB,EAAE;QACnC,UAAU,EAAE;YACV,IAAI;YACJ,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type HostError, type HostResult, type HostRunInput, type SandboxedCodeHost } from './host-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs model-authored code in a disposable worker thread and brokers its calls
|
|
4
|
+
* back into the harness.
|
|
5
|
+
*
|
|
6
|
+
* The host owns everything that is the same for every caller: worker lifecycle,
|
|
7
|
+
* the wall-clock deadline, parent cancellation, code and output byte budgets,
|
|
8
|
+
* console capture, per-capability admission control and concurrency permits.
|
|
9
|
+
* What the code can *reach* is entirely in the capabilities it is handed —
|
|
10
|
+
* `run_agent_workflow` passes `agent`, `run_code` passes `tools` — so the two
|
|
11
|
+
* tools differ only in that object.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SandboxedCodeHostImpl implements SandboxedCodeHost {
|
|
14
|
+
run(input: HostRunInput): Promise<HostResult>;
|
|
15
|
+
}
|
|
16
|
+
export type { HostError, HostResult };
|
|
17
|
+
//# sourceMappingURL=sandboxed-code-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxed-code-host.d.ts","sourceRoot":"","sources":["../../../source/services/sandboxed-code-host/sandboxed-code-host.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAUzB;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IACvD,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAuQlD;CACF;AA4DD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC"}
|