@qduc/term2 0.21.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 +32 -10
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +83 -6
- package/dist/app.js.map +1 -1
- package/dist/cli.js +84 -2
- package/dist/cli.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/MenuSurface.d.ts.map +1 -1
- package/dist/components/input/MenuSurface.js +12 -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/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/menu-types.d.ts +1 -1
- package/dist/components/input/menu-types.d.ts.map +1 -1
- package/dist/components/input/triggers.js +2 -2
- package/dist/components/input/triggers.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 -112
- package/dist/components/layout/BackgroundTasksPanel.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.map +1 -1
- package/dist/components/menu/ProfileSelectionMenu.js +5 -4
- package/dist/components/menu/ProfileSelectionMenu.js.map +1 -1
- package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ResumeSelectionMenu.js +3 -5
- 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/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 +13 -2
- 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 +30 -0
- 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/contracts/streamed-model-turn.d.ts +6 -0
- package/dist/contracts/streamed-model-turn.d.ts.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 +4 -122
- 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-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 +3 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +107 -16
- package/dist/hooks/use-conversation.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-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 +10 -100
- package/dist/hooks/use-settings-value-completion.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 +173 -53
- 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 +26 -7
- 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 +49 -7
- 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/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 +225 -31
- 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/prompt-constructor.d.ts +2 -0
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +4 -2
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +178 -5
- package/dist/prompts/prompt-constructor.ts +7 -1
- 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 +4 -2
- package/dist/prompts/shell-auto-approval.d.ts +1 -1
- package/dist/prompts/shell-auto-approval.d.ts.map +1 -1
- package/dist/prompts/shell-auto-approval.js +2 -2
- package/dist/prompts/shell-auto-approval.ts +2 -2
- 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/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 +121 -33
- package/dist/providers/codex-responses-model.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 +3 -2
- package/dist/providers/codex.provider.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/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/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 +3 -0
- package/dist/providers/retrying-model.js.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +8 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +30 -6
- package/dist/services/agent-runtime/application-run-loop.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/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/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-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.map +1 -1
- package/dist/services/approval/shell-auto-approval-evaluator.js +2 -4
- package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.js +4 -0
- 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 +16 -5
- 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 +32 -23
- package/dist/services/conversation/conversation-adapter.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 +65 -42
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-persistence.d.ts +6 -1
- package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.js +68 -19
- package/dist/services/conversation/conversation-persistence.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 +27 -23
- 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 +11 -1
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +68 -17
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/session-browser.d.ts +34 -27
- package/dist/services/conversation/session-browser.d.ts.map +1 -1
- package/dist/services/conversation/session-browser.js +221 -60
- 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/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-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.map +1 -1
- package/dist/services/logging/logging-service.js +1 -0
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/logging/provider-traffic.d.ts +22 -2
- package/dist/services/logging/provider-traffic.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.js +147 -12
- package/dist/services/logging/provider-traffic.js.map +1 -1
- package/dist/services/model-service.d.ts +42 -0
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +161 -26
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/models/model-catalog-session.d.ts.map +1 -1
- package/dist/services/models/model-catalog-session.js +11 -7
- 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 +40 -0
- package/dist/services/models/model-listing.d.ts.map +1 -1
- package/dist/services/models/model-listing.js +35 -2
- package/dist/services/models/model-listing.js.map +1 -1
- 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 +35 -3
- package/dist/services/models/model-resolution.d.ts.map +1 -1
- package/dist/services/models/model-resolution.js +276 -47
- package/dist/services/models/model-resolution.js.map +1 -1
- 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/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-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/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 +51 -16
- 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-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-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 +8 -1
- package/dist/services/session-rollover/session-rollover-brief.d.ts.map +1 -1
- package/dist/services/session-rollover/session-rollover-brief.js +14 -1
- 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-schema.d.ts +8 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +23 -6
- package/dist/services/settings/settings-schema.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 +48 -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 +10 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +46 -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/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 +2 -0
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +4 -0
- 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 +289 -41
- 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/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.map +1 -1
- package/dist/tools/agent/configure-task-check-in.js +1 -0
- 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.map +1 -1
- package/dist/tools/file/apply-patch.js +9 -11
- 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.map +1 -1
- package/dist/tools/file/upstream-apply-patch.js +4 -1
- package/dist/tools/file/upstream-apply-patch.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 +24 -8
- 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 +8 -2
- 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 +58 -9
- 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 +24 -0
- 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/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 +14 -0
- package/dist/utils/conversation/conversation-utils.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/settings-command.d.ts +8 -0
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +45 -30
- 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 +1 -1
- package/dist/utils/streaming/streaming-session-factory.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 +5 -2
- 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
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { boundedJsonFailure, fitsSerializedText } from '../../utils/output/bounded-json.js';
|
|
3
|
-
import { resolveToolResultMaxBytes } from '../../utils/output/bound-tool-result.js';
|
|
3
|
+
import { isScriptedToolCall, resolveToolResultMaxBytes } from '../../utils/output/bound-tool-result.js';
|
|
4
4
|
import { getCallIdFromItem, getOutputText, isSuccessOutput, normalizeToolArguments, createBaseMessage, } from '../format-helpers.js';
|
|
5
5
|
const maxChars = z.number().int().min(512).max(12_000).optional();
|
|
6
6
|
const limit = z.number().int().min(1).max(50).optional();
|
|
7
7
|
const id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_-]*$/);
|
|
8
|
+
const sessionKind = z.enum(['user', 'assistant', 'reasoning', 'system', 'tool', 'subagent']);
|
|
8
9
|
export function createSessionBrowserToolDefinitions(browser) {
|
|
9
10
|
return [
|
|
10
|
-
definition('session_list', 'List prior locally persisted sessions for the current project. `total` is the number of browsable sessions in scope; `omitted` counts list entries dropped only because the output budget could not fit them (entries beyond `limit` are excluded by `total`).', z.object({ limit, maxChars }).strict(), (params) => browser.list(params)),
|
|
11
|
-
definition('session_search', 'Search prior locally persisted session transcripts for the current project. `total` is the number of ranked matches before `limit` is applied; `omitted` counts matches dropped only because the output budget could not fit them. Matches from the currently active session sort last, because searching indexes tool outputs and the query echoes in the live transcript.
|
|
12
|
-
|
|
11
|
+
definition('session_list', 'List prior locally persisted sessions for the current project. `total` is the number of browsable sessions in scope; `omitted` counts list entries dropped only because the output budget could not fit them (entries beyond `limit` are excluded by `total`).', z.object({ limit, maxChars }).strict(), (params) => browser.list(params), '{ sessions: { id: string, shortRef: string, createdAt: string, updatedAt: string, firstUserMessage?: string, model?: string, provider?: string, messageCount: number }[], scope: string, total: number, omitted: number, unavailable: number, charsUsed: number } | { error: { code: string, message: string, candidates?: { id: string, shortRef: string }[] } }'),
|
|
12
|
+
definition('session_search', 'Search prior locally persisted session transcripts for the current project. Whitespace-separated query terms use OR matching, so prefer distinctive terms over broad words. Use `kinds: ["user", "assistant"]` to exclude noisy tool, reasoning, system, and subagent records when looking for conversation content. Without `kinds`, every projected record kind is searched. `total` is the number of ranked matches after the kind filter and before `limit` is applied; `omitted` counts matches dropped only because the output budget could not fit them. Matches from the currently active session sort last, because searching indexes tool outputs and the query echoes in the live transcript. Each match\'s `updatedAt` is the session\'s last-write timestamp, not per-message time.', z
|
|
13
|
+
.object({
|
|
14
|
+
query: z.string().refine((value) => /\S/.test(value)),
|
|
15
|
+
kinds: z.array(sessionKind).min(1).max(6).optional(),
|
|
16
|
+
limit,
|
|
17
|
+
maxChars,
|
|
18
|
+
})
|
|
19
|
+
.strict(), (params) => browser.search(params), '{ results: { sessionId: string, shortRef: string, kind: string, messageIndex: number, snippet: { text: string, truncated: boolean }, updatedAt: string }[], scope: string, total: number, omitted: number, unavailable: number, skippedMessageCount: number, charsUsed: number } | { error: { code: string, message: string, candidates?: { id: string, shortRef: string }[] } }'),
|
|
20
|
+
definition('session_read', 'Read a prior local session transcript progressively by cursor. Use `id: "previous"` for the persisted rollover predecessor, or an exact/unambiguous ID or shortRef returned by `session_list`/`session_search`; never reconstruct an ID. Ambiguous prefixes return candidates and are never guessed. On an initial read, `from: "end"` starts at the last `limit` projected records in chronological order (`limit` selects the tail region; without `from: "end"` the read starts at the first record); omit `cursor` with this option, then continue with the returned cursor and no `from`. Cursors are process-local opaque handles: use exactly the `nextCursor` returned by the preceding page with the same `id`. Never invent, edit, or reuse a cursor from another read; after an invalid or stale cursor, restart without one. `maxChars` may require continuation pages; `nextCursor` is returned only while forward content remains, so its absence after a tail read says nothing about earlier records. `total` is the projected record count for the whole session; `omitted` counts whole-session records not represented on this page for any reason — before the tail anchor, beyond `limit`, or awaiting continuation — unlike `session_list`/`session_search`, whose `omitted` counts only budget-dropped entries; a partial or resumed chunk still represents its record, so `total - omitted` records are represented here.', z
|
|
13
21
|
.object({ id, from: z.literal('end').optional(), cursor: z.string().optional(), limit, maxChars })
|
|
14
22
|
.strict()
|
|
15
23
|
.superRefine((params, ctx) => {
|
|
@@ -19,18 +27,26 @@ export function createSessionBrowserToolDefinitions(browser) {
|
|
|
19
27
|
path: ['from'],
|
|
20
28
|
message: '`from: "end"` requires an initial read without cursor.',
|
|
21
29
|
});
|
|
22
|
-
}), (params) => browser.read(params)),
|
|
30
|
+
}), (params) => browser.read(params), '{ scope: string, session: { id: string, shortRef: string, createdAt: string, updatedAt: string, model?: string, provider?: string }, items: { index: number, kind: string, text: string, textOffset: number, totalTextChars: number, complete: boolean }[], nextCursor?: string, total: number, omitted: number, skippedMessageCount: number, charsUsed: number } | { error: { code: string, message: string, candidates?: { id: string, shortRef: string }[] } }'),
|
|
23
31
|
];
|
|
24
32
|
}
|
|
25
|
-
function definition(name, description, parameters, execute) {
|
|
33
|
+
function definition(name, description, parameters, execute, scriptedReturnShape) {
|
|
26
34
|
return {
|
|
27
35
|
name,
|
|
28
36
|
description,
|
|
29
37
|
parameters,
|
|
38
|
+
scriptedReturnShape,
|
|
30
39
|
preserveSerializedOutput: true,
|
|
31
40
|
needsApproval: () => false,
|
|
32
|
-
execute: async (params) => {
|
|
33
|
-
const
|
|
41
|
+
execute: async (params, context) => {
|
|
42
|
+
const value = await execute(params);
|
|
43
|
+
// A scripted call receives the structured envelope directly; the
|
|
44
|
+
// serialized-JSON-string form exists to bound what enters model
|
|
45
|
+
// context, and a script would otherwise have to JSON.parse every
|
|
46
|
+
// result before reading its fields.
|
|
47
|
+
if (isScriptedToolCall(context))
|
|
48
|
+
return value;
|
|
49
|
+
const result = JSON.stringify(value);
|
|
34
50
|
const budget = params.maxChars ?? 12_000;
|
|
35
51
|
return fitsSerializedText(result, { maxChars: budget, maxBytes: resolveToolResultMaxBytes() })
|
|
36
52
|
? result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-browser-tools.js","sourceRoot":"","sources":["../../../source/tools/session-browser/session-browser-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"session-browser-tools.js","sourceRoot":"","sources":["../../../source/tools/session-browser/session-browser-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-rollover-tool.d.ts","sourceRoot":"","sources":["../../../source/tools/session-rollover/session-rollover-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACjH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASlD,eAAO,MAAM,yBAAyB;;;;;;
|
|
1
|
+
{"version":3,"file":"session-rollover-tool.d.ts","sourceRoot":"","sources":["../../../source/tools/session-rollover/session-rollover-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACjH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASlD,eAAO,MAAM,yBAAyB;;;;;;kBAW3B,CAAC;AAEZ,wBAAgB,mCAAmC,CACjD,eAAe,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,6BAA6B,GAClF,cAAc,CAAC,OAAO,yBAAyB,CAAC,CAsClD"}
|
|
@@ -2,14 +2,20 @@ import { z } from 'zod';
|
|
|
2
2
|
import { createBaseMessage, getCallIdFromItem, getOutputText, isSuccessOutput, normalizeToolArguments, } from '../format-helpers.js';
|
|
3
3
|
export const sessionRolloverParameters = z
|
|
4
4
|
.object({
|
|
5
|
-
brief: z
|
|
5
|
+
brief: z
|
|
6
|
+
.string()
|
|
7
|
+
.max(8_000)
|
|
8
|
+
.describe('Keep well below 8,000 characters. Give the next open step, unfinished decisions, completed effects, and durable paths/commits. ' +
|
|
9
|
+
'When a canonical artifact already holds the state, write a short delta and pointer instead of copying it.'),
|
|
6
10
|
reason: z.enum(['context_pressure', 'task_boundary']).optional(),
|
|
7
11
|
})
|
|
8
12
|
.strict();
|
|
9
13
|
export function createSessionRolloverToolDefinition(requestRollover) {
|
|
10
14
|
return {
|
|
11
15
|
name: 'session_rollover',
|
|
12
|
-
description: 'Request an idle-boundary rotation into a fresh session.
|
|
16
|
+
description: 'Request an idle-boundary rotation into a fresh session. Live background work survives the rotation; include its current status and next action in the brief, but do not wait for it merely to rotate. ' +
|
|
17
|
+
'Keep the brief well below the 8,000-character limit using durable-state pointers and the next open step. ' +
|
|
18
|
+
'The successor retains the session-owned live background registry and can inspect or control those handles; save durable results when they are ready rather than copying transient output into the brief.',
|
|
13
19
|
parameters: sessionRolloverParameters,
|
|
14
20
|
terminateAfterExecution: (result) => typeof result === 'string' &&
|
|
15
21
|
(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-rollover-tool.js","sourceRoot":"","sources":["../../../source/tools/session-rollover/session-rollover-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"session-rollover-tool.js","sourceRoot":"","sources":["../../../source/tools/session-rollover/session-rollover-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,CACP,iIAAiI;QAC/H,2GAA2G,CAC9G;IACH,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjE,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,mCAAmC,CACjD,eAAmF;IAEnF,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,wMAAwM;YACxM,2GAA2G;YAC3G,0MAA0M;QAC5M,UAAU,EAAE,yBAAyB;QACrC,uBAAuB,EAAE,CAAC,MAAM,EAAE,EAAE,CAClC,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,GAAG,EAAE;gBACJ,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA2C,CAAC;oBAC5E,OAAO,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB,CAAC;gBACtE,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,CAAC,EAAE;QACN,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;QAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5D,oBAAoB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,IAAI,GACR,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,SAAS,CAAC;gBACnE,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,EAAE,CAAC;YACL,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO;gBACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;oBACvC,OAAO,EAAE,kBAAkB;oBAC3B,MAAM;oBACN,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;oBAChC,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,IAAI;iBACf,CAAC;aACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { bindRunCodeRegistry, createRunCodeToolDefinition, formatRunCodeCommandMessage, runCodeParametersSchema, RUN_CODE_LIMITS, RUN_CODE_PROHIBITED_TOOLS, TOOL_NAME_DESCRIBE, TOOL_NAME_RUN_CODE, isDirectlyCallable, type CreateRunCodeToolOptions, type RunCodeActionOutcome, type RunCodeActionReceipt, type RunCodeCallRecord, type RunCodeParams, } from './run-code.js';
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../source/tools/system/run-code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,eAAe,EACf,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../source/tools/system/run-code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,eAAe,EACf,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GAMnB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { ILoggingService, LogMetadataContract } from '../../../services/service-interfaces.js';
|
|
2
|
+
import type { HostResult } from '../../../services/sandboxed-code-host/host-types.js';
|
|
3
|
+
import type { RunCodeActionReceipt, RunCodeCallRecord } from './run-code.js';
|
|
4
|
+
/**
|
|
5
|
+
* Structured completion telemetry for one `run_code` invocation.
|
|
6
|
+
*
|
|
7
|
+
* One event per invocation, written through the application logger so it lands
|
|
8
|
+
* in the same durable JSONL app log as every other structured event. It exists
|
|
9
|
+
* to answer the question that gates the type-checked TypeScript slice
|
|
10
|
+
* (docs/plans/run-code-typescript.md): do statically preventable nested-call
|
|
11
|
+
* failures actually cause retries, false completion, or replay? The answer is
|
|
12
|
+
* derived by querying these events, not by re-reading conversations, so the
|
|
13
|
+
* event carries the join keys (sessionId, sourceDigest, outcome, timestamp) as
|
|
14
|
+
* well as the counts.
|
|
15
|
+
*
|
|
16
|
+
* Emitted at `info`: the default log level is `info`, so the older
|
|
17
|
+
* `run_code execution finished` line, which is `debug`, is absent from default
|
|
18
|
+
* app logs and cannot be counted.
|
|
19
|
+
*
|
|
20
|
+
* Privacy: every emitted value is a number, an enum drawn from a closed set, or
|
|
21
|
+
* a source digest. The script source, its arguments, the failure messages, tool
|
|
22
|
+
* names, workspace paths, and the model-authored `description` are deliberately
|
|
23
|
+
* never emitted — nested failure text routinely carries paths and arguments, and
|
|
24
|
+
* an unknown member name is arbitrary model-authored text. Failure attribution
|
|
25
|
+
* reads those messages in-process and emits only a class.
|
|
26
|
+
*/
|
|
27
|
+
export declare const RUN_CODE_COMPLETION_EVENT = "tool.run_code.completion";
|
|
28
|
+
export declare const RUN_CODE_COMPLETION_MESSAGE = "run_code completed";
|
|
29
|
+
/**
|
|
30
|
+
* How the invocation ended.
|
|
31
|
+
*
|
|
32
|
+
* The first six are the categories the plan requires. The remaining four are
|
|
33
|
+
* host outcomes that had no honest home among them: folding a cancellation into
|
|
34
|
+
* `timeout` would contradict the termination-reason distinction established for
|
|
35
|
+
* shell timeouts, and a rejected source or unavailable sandbox is not a script
|
|
36
|
+
* failure at all. `host-error` is unreachable while every `HostErrorCode` is
|
|
37
|
+
* mapped below.
|
|
38
|
+
*/
|
|
39
|
+
export type RunCodeCompletionOutcome = 'success' | 'parse' | 'nested-validation' | 'runtime' | 'return-serialization' | 'timeout' | 'cancelled' | 'input-rejected' | 'host-unavailable' | 'host-error';
|
|
40
|
+
/**
|
|
41
|
+
* Which nested-call failure ended the invocation.
|
|
42
|
+
*
|
|
43
|
+
* `nested-validation` covers every uncaught `tools.*` rejection, including an
|
|
44
|
+
* approval denial, so this class is what says whether the failure was the
|
|
45
|
+
* statically preventable kind the TypeScript slice targets.
|
|
46
|
+
*
|
|
47
|
+
* `typescript-syntax` and `known-return-shape` are reserved: they are the
|
|
48
|
+
* classes the plan names for a checked script path, and nothing produces them
|
|
49
|
+
* while scripts are plain JavaScript and `scriptedReturnShape` stays prose.
|
|
50
|
+
*/
|
|
51
|
+
export type RunCodeFailureClass = 'unknown-tool' | 'parameter-shape' | 'nested-call' | 'approval-denied' | 'budget' | 'typescript-syntax' | 'known-return-shape';
|
|
52
|
+
/** Nested `tools.*` calls this run observed, by outcome. */
|
|
53
|
+
export interface RunCodeNestedCallCounts {
|
|
54
|
+
/** Execution calls; schema lookups are counted separately. */
|
|
55
|
+
calls: number;
|
|
56
|
+
schemaLookups: number;
|
|
57
|
+
ok: number;
|
|
58
|
+
unknownTool: number;
|
|
59
|
+
invalidParams: number;
|
|
60
|
+
approvalDenied: number;
|
|
61
|
+
prohibited: number;
|
|
62
|
+
otherFailures: number;
|
|
63
|
+
}
|
|
64
|
+
/** Host-observed action-effect evidence at the end of the run. */
|
|
65
|
+
export interface RunCodeEffectReceiptCounts {
|
|
66
|
+
applied: number;
|
|
67
|
+
notApplied: number;
|
|
68
|
+
failed: number;
|
|
69
|
+
unknown: number;
|
|
70
|
+
}
|
|
71
|
+
export interface RunCodeCompletionInput {
|
|
72
|
+
code: string;
|
|
73
|
+
result: HostResult;
|
|
74
|
+
durationMs: number;
|
|
75
|
+
timeoutMs: number;
|
|
76
|
+
calls: readonly RunCodeCallRecord[];
|
|
77
|
+
receipts: readonly RunCodeActionReceipt[];
|
|
78
|
+
sessionId?: string;
|
|
79
|
+
/** Process-local bridge run id, for correlating this event with one run's result. */
|
|
80
|
+
runId?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The event's fields. Exported for tests; the emit path below is the only
|
|
84
|
+
* caller in production.
|
|
85
|
+
*/
|
|
86
|
+
export declare const buildRunCodeCompletionMeta: (input: RunCodeCompletionInput) => LogMetadataContract;
|
|
87
|
+
/**
|
|
88
|
+
* Record one completion. Telemetry is diagnostic: a failure to build or write
|
|
89
|
+
* the event must never change what the script did or what the caller receives.
|
|
90
|
+
*/
|
|
91
|
+
export declare function emitRunCodeCompletionTelemetry(loggingService: ILoggingService, input: RunCodeCompletionInput): void;
|
|
92
|
+
//# sourceMappingURL=run-code-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-code-telemetry.d.ts","sourceRoot":"","sources":["../../../../source/tools/system/run-code/run-code-telemetry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AACpG,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACrG,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,2BAA2B,uBAAuB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,OAAO,GACP,mBAAmB,GACnB,SAAS,GACT,sBAAsB,GACtB,SAAS,GACT,WAAW,GACX,gBAAgB,GAChB,kBAAkB,GAClB,YAAY,CAAC;AAEjB;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAC3B,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,iBAAiB,GACjB,QAAQ,GACR,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,kEAAkE;AAClE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0ID;;;GAGG;AACH,eAAO,MAAM,0BAA0B,UAAW,sBAAsB,KAAG,mBAmB1E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAMnH"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Structured completion telemetry for one `run_code` invocation.
|
|
4
|
+
*
|
|
5
|
+
* One event per invocation, written through the application logger so it lands
|
|
6
|
+
* in the same durable JSONL app log as every other structured event. It exists
|
|
7
|
+
* to answer the question that gates the type-checked TypeScript slice
|
|
8
|
+
* (docs/plans/run-code-typescript.md): do statically preventable nested-call
|
|
9
|
+
* failures actually cause retries, false completion, or replay? The answer is
|
|
10
|
+
* derived by querying these events, not by re-reading conversations, so the
|
|
11
|
+
* event carries the join keys (sessionId, sourceDigest, outcome, timestamp) as
|
|
12
|
+
* well as the counts.
|
|
13
|
+
*
|
|
14
|
+
* Emitted at `info`: the default log level is `info`, so the older
|
|
15
|
+
* `run_code execution finished` line, which is `debug`, is absent from default
|
|
16
|
+
* app logs and cannot be counted.
|
|
17
|
+
*
|
|
18
|
+
* Privacy: every emitted value is a number, an enum drawn from a closed set, or
|
|
19
|
+
* a source digest. The script source, its arguments, the failure messages, tool
|
|
20
|
+
* names, workspace paths, and the model-authored `description` are deliberately
|
|
21
|
+
* never emitted — nested failure text routinely carries paths and arguments, and
|
|
22
|
+
* an unknown member name is arbitrary model-authored text. Failure attribution
|
|
23
|
+
* reads those messages in-process and emits only a class.
|
|
24
|
+
*/
|
|
25
|
+
export const RUN_CODE_COMPLETION_EVENT = 'tool.run_code.completion';
|
|
26
|
+
export const RUN_CODE_COMPLETION_MESSAGE = 'run_code completed';
|
|
27
|
+
const SOURCE_DIGEST_CHARS = 16;
|
|
28
|
+
/**
|
|
29
|
+
* Stable identity for a script's source, so repetition and replay are visible
|
|
30
|
+
* by joining events instead of storing the source itself.
|
|
31
|
+
*/
|
|
32
|
+
const digestSource = (code) => createHash('sha256').update(code, 'utf8').digest('hex').slice(0, SOURCE_DIGEST_CHARS);
|
|
33
|
+
const NESTED_BUCKET_BY_OUTCOME = {
|
|
34
|
+
ok: 'ok',
|
|
35
|
+
error: 'otherFailures',
|
|
36
|
+
approval_required: 'approvalDenied',
|
|
37
|
+
unknown_policy: 'otherFailures',
|
|
38
|
+
policy_error: 'otherFailures',
|
|
39
|
+
interceptor_denied: 'otherFailures',
|
|
40
|
+
unknown_tool: 'unknownTool',
|
|
41
|
+
invalid_params: 'invalidParams',
|
|
42
|
+
prohibited: 'prohibited',
|
|
43
|
+
describe: 'schemaLookups',
|
|
44
|
+
};
|
|
45
|
+
const summarizeNestedCalls = (calls) => {
|
|
46
|
+
const counts = {
|
|
47
|
+
calls: 0,
|
|
48
|
+
schemaLookups: 0,
|
|
49
|
+
ok: 0,
|
|
50
|
+
unknownTool: 0,
|
|
51
|
+
invalidParams: 0,
|
|
52
|
+
approvalDenied: 0,
|
|
53
|
+
prohibited: 0,
|
|
54
|
+
otherFailures: 0,
|
|
55
|
+
};
|
|
56
|
+
for (const call of calls) {
|
|
57
|
+
const bucket = NESTED_BUCKET_BY_OUTCOME[call.outcome];
|
|
58
|
+
if (bucket === 'schemaLookups') {
|
|
59
|
+
counts.schemaLookups += 1;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
counts.calls += 1;
|
|
63
|
+
counts[bucket] += 1;
|
|
64
|
+
}
|
|
65
|
+
return counts;
|
|
66
|
+
};
|
|
67
|
+
const summarizeEffectReceipts = (receipts) => {
|
|
68
|
+
const counts = { applied: 0, notApplied: 0, failed: 0, unknown: 0 };
|
|
69
|
+
for (const receipt of receipts) {
|
|
70
|
+
if (receipt.outcome === 'applied')
|
|
71
|
+
counts.applied += 1;
|
|
72
|
+
else if (receipt.outcome === 'not_applied')
|
|
73
|
+
counts.notApplied += 1;
|
|
74
|
+
else if (receipt.outcome === 'failed')
|
|
75
|
+
counts.failed += 1;
|
|
76
|
+
else
|
|
77
|
+
counts.unknown += 1;
|
|
78
|
+
}
|
|
79
|
+
return counts;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* The namespace binding prefixes a refused nested call with `tools.<member>
|
|
83
|
+
* failed: ` and the capability's own message after it (host-worker.ts, pinned by
|
|
84
|
+
* sandboxed-code-host.test.ts). That prefix is the only host-side signal that
|
|
85
|
+
* separates a failure the script caused from one a nested call rejected, until
|
|
86
|
+
* Stage 3A gives the refusal a typed envelope.
|
|
87
|
+
*/
|
|
88
|
+
const FAILED_CALL_MARKER = ' failed: ';
|
|
89
|
+
const NAMESPACE_PREFIX = 'tools.';
|
|
90
|
+
const UNKNOWN_TOOL_PREFIX = 'Unknown tool "';
|
|
91
|
+
const INVALID_PARAMS_PREFIX = 'Invalid parameters for "';
|
|
92
|
+
const nestedRejectionDetail = (message) => {
|
|
93
|
+
if (!message.startsWith(NAMESPACE_PREFIX))
|
|
94
|
+
return null;
|
|
95
|
+
const marker = message.indexOf(FAILED_CALL_MARKER);
|
|
96
|
+
if (marker <= NAMESPACE_PREFIX.length)
|
|
97
|
+
return null;
|
|
98
|
+
return message.slice(marker + FAILED_CALL_MARKER.length);
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Attribution is message-based, so a script that throws the same text itself is
|
|
102
|
+
* misattributed as a nested rejection. That approximation is bounded to the
|
|
103
|
+
* failure class: the host code, the ledgers, and the counts stay exact.
|
|
104
|
+
*/
|
|
105
|
+
const classifyNestedFailure = (message) => {
|
|
106
|
+
if (message.startsWith(UNKNOWN_TOOL_PREFIX))
|
|
107
|
+
return 'unknown-tool';
|
|
108
|
+
const detail = nestedRejectionDetail(message);
|
|
109
|
+
if (detail === null)
|
|
110
|
+
return 'nested-call';
|
|
111
|
+
if (detail.startsWith(UNKNOWN_TOOL_PREFIX))
|
|
112
|
+
return 'unknown-tool';
|
|
113
|
+
if (detail.startsWith(INVALID_PARAMS_PREFIX))
|
|
114
|
+
return 'parameter-shape';
|
|
115
|
+
return 'nested-call';
|
|
116
|
+
};
|
|
117
|
+
const isNestedRejection = (message) => message.startsWith(UNKNOWN_TOOL_PREFIX) || nestedRejectionDetail(message) !== null;
|
|
118
|
+
const assertNeverHostCode = (code) => {
|
|
119
|
+
throw new Error('Unhandled host error code: ' + String(code));
|
|
120
|
+
};
|
|
121
|
+
const classifyRunCodeCompletion = (result) => {
|
|
122
|
+
if (result.ok)
|
|
123
|
+
return { outcome: 'success' };
|
|
124
|
+
const { code, message } = result.error;
|
|
125
|
+
switch (code) {
|
|
126
|
+
case 'syntax_error':
|
|
127
|
+
return { outcome: 'parse', hostErrorCode: code };
|
|
128
|
+
case 'runtime_error':
|
|
129
|
+
return isNestedRejection(message)
|
|
130
|
+
? { outcome: 'nested-validation', hostErrorCode: code, failureClass: classifyNestedFailure(message) }
|
|
131
|
+
: { outcome: 'runtime', hostErrorCode: code };
|
|
132
|
+
case 'invalid_output':
|
|
133
|
+
return { outcome: 'return-serialization', hostErrorCode: code };
|
|
134
|
+
case 'timeout':
|
|
135
|
+
case 'deadline':
|
|
136
|
+
return { outcome: 'timeout', hostErrorCode: code };
|
|
137
|
+
case 'cancelled':
|
|
138
|
+
return { outcome: 'cancelled', hostErrorCode: code };
|
|
139
|
+
case 'code_too_large':
|
|
140
|
+
return { outcome: 'input-rejected', hostErrorCode: code };
|
|
141
|
+
case 'sandbox_unavailable':
|
|
142
|
+
return { outcome: 'host-unavailable', hostErrorCode: code };
|
|
143
|
+
case 'limit_exceeded':
|
|
144
|
+
return { outcome: 'nested-validation', hostErrorCode: code, failureClass: 'budget' };
|
|
145
|
+
case 'approval_required':
|
|
146
|
+
return { outcome: 'nested-validation', hostErrorCode: code, failureClass: 'approval-denied' };
|
|
147
|
+
default:
|
|
148
|
+
// Exhaustive over HostErrorCode: a new code fails to compile here rather
|
|
149
|
+
// than reaching a silent fallback.
|
|
150
|
+
return assertNeverHostCode(code);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* The event's fields. Exported for tests; the emit path below is the only
|
|
155
|
+
* caller in production.
|
|
156
|
+
*/
|
|
157
|
+
export const buildRunCodeCompletionMeta = (input) => {
|
|
158
|
+
const classification = classifyRunCodeCompletion(input.result);
|
|
159
|
+
return {
|
|
160
|
+
eventType: RUN_CODE_COMPLETION_EVENT,
|
|
161
|
+
// Not imported from run-code.ts: that module imports this one.
|
|
162
|
+
toolName: 'run_code',
|
|
163
|
+
...(input.sessionId ? { sessionId: input.sessionId } : {}),
|
|
164
|
+
...(input.runId ? { runId: input.runId } : {}),
|
|
165
|
+
outcome: classification.outcome,
|
|
166
|
+
...(classification.hostErrorCode ? { hostErrorCode: classification.hostErrorCode } : {}),
|
|
167
|
+
...(classification.failureClass ? { failureClass: classification.failureClass } : {}),
|
|
168
|
+
durationMs: Math.max(0, Math.round(input.durationMs)),
|
|
169
|
+
timeoutMs: input.timeoutMs,
|
|
170
|
+
sourceBytes: Buffer.byteLength(input.code, 'utf8'),
|
|
171
|
+
sourceLines: input.code.length === 0 ? 0 : input.code.split('\n').length,
|
|
172
|
+
sourceDigest: digestSource(input.code),
|
|
173
|
+
nested: summarizeNestedCalls(input.calls),
|
|
174
|
+
effectReceipts: summarizeEffectReceipts(input.receipts),
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Record one completion. Telemetry is diagnostic: a failure to build or write
|
|
179
|
+
* the event must never change what the script did or what the caller receives.
|
|
180
|
+
*/
|
|
181
|
+
export function emitRunCodeCompletionTelemetry(loggingService, input) {
|
|
182
|
+
try {
|
|
183
|
+
loggingService.info(RUN_CODE_COMPLETION_MESSAGE, buildRunCodeCompletionMeta(input));
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Intentionally ignored. See above.
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=run-code-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-code-telemetry.js","sourceRoot":"","sources":["../../../../source/tools/system/run-code/run-code-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { ExecutionContext } from '../../../services/execution-context.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { ILoggingService } from '../../../services/service-interfaces.js';
|
|
4
|
+
import type { ToolApprovalPolicyRegistry } from '../../../services/approval/tool-approval-policy-registry.js';
|
|
5
|
+
import type { NestedApprovalOwner } from '../../../services/approval/nested-approval-owner.js';
|
|
6
|
+
import { type AnyToolDefinition, type FormatCommandMessage, type SchemaToolDefinition, type ToolRegistry } from '../../types.js';
|
|
7
|
+
export declare const TOOL_NAME_RUN_CODE = "run_code";
|
|
8
|
+
export declare const TOOL_NAME_DESCRIBE = "describe";
|
|
9
|
+
/**
|
|
10
|
+
* Script-shaped limits. They are deliberately not the workflow's: a workflow
|
|
11
|
+
* spawns a handful of agents, while a script's whole point is looping over many
|
|
12
|
+
* cheap tool calls.
|
|
13
|
+
*/
|
|
14
|
+
export declare const RUN_CODE_LIMITS: {
|
|
15
|
+
/** Total `tools.*` calls one script may make. */
|
|
16
|
+
readonly maxCalls: 200;
|
|
17
|
+
/** Parallel-safe calls that may overlap; others take a serial lane of one. */
|
|
18
|
+
readonly maxConcurrency: 8;
|
|
19
|
+
/** Per-result cap. A larger result is truncated with an explicit marker. */
|
|
20
|
+
readonly maxResultChars: 100000;
|
|
21
|
+
/** Maximum raw bytes in one media attachment retained outside the script. */
|
|
22
|
+
readonly maxMediaBytes: number;
|
|
23
|
+
/** Maximum raw bytes and attachment count retained for one script run. */
|
|
24
|
+
readonly maxMediaTotalBytes: number;
|
|
25
|
+
readonly maxMediaAttachments: 32;
|
|
26
|
+
readonly maxCodeBytes: 65536;
|
|
27
|
+
readonly maxOutputBytes: 262144;
|
|
28
|
+
readonly maxConsoleBytes: 262144;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Tools a script may never call.
|
|
32
|
+
*
|
|
33
|
+
* `run_code` excludes itself because each run owns its own call budget, and
|
|
34
|
+
* nesting would let one run spend many. The rest are the workflow's prohibited
|
|
35
|
+
* set: `run_subagent` in particular spawns agents outside any run budget, so a
|
|
36
|
+
* script could loop on it indefinitely. Shell tools are excluded because their
|
|
37
|
+
* complete approval state also lives in the interactive batch coordinator.
|
|
38
|
+
*/
|
|
39
|
+
export declare const RUN_CODE_PROHIBITED_TOOLS: ReadonlySet<string>;
|
|
40
|
+
export declare const runCodeParametersSchema: z.ZodObject<{
|
|
41
|
+
code: z.ZodString;
|
|
42
|
+
include_console: z.ZodOptional<z.ZodBoolean>;
|
|
43
|
+
timeout_ms: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
44
|
+
description: z.ZodString;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
export type RunCodeParams = z.infer<typeof runCodeParametersSchema>;
|
|
47
|
+
/**
|
|
48
|
+
* Terminal semantic outcome of one observed nested action call, derived
|
|
49
|
+
* host-side from the raw executor result. Promise fulfillment alone is never
|
|
50
|
+
* success: only the per-tool adapter maps a resolved value to `applied`.
|
|
51
|
+
*/
|
|
52
|
+
export type RunCodeActionOutcome = 'applied' | 'not_applied' | 'failed' | 'unknown';
|
|
53
|
+
/**
|
|
54
|
+
* One host-observed nested action receipt. The ledger is host-private: script
|
|
55
|
+
* code has no write path to it, so a script cannot catch, relabel, or
|
|
56
|
+
* contradict its way out of an observed outcome.
|
|
57
|
+
*/
|
|
58
|
+
export interface RunCodeActionReceipt {
|
|
59
|
+
/** Stable call identity (`<bridgeRunId>:<callId>`, or `:rejected-<seq>` pre-admission). */
|
|
60
|
+
callId: string;
|
|
61
|
+
tool: string;
|
|
62
|
+
outcome: RunCodeActionOutcome;
|
|
63
|
+
reason?: string;
|
|
64
|
+
}
|
|
65
|
+
/** One `tools.*` call observed during a run, for the user-facing summary. */
|
|
66
|
+
export interface RunCodeCallRecord {
|
|
67
|
+
tool: string;
|
|
68
|
+
outcome: 'ok' | 'error' | 'approval_required' | 'unknown_policy' | 'policy_error' | 'interceptor_denied' | 'unknown_tool' | 'invalid_params' | 'prohibited' | 'describe';
|
|
69
|
+
durationMs: number;
|
|
70
|
+
directlyCallable?: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface CreateRunCodeToolOptions {
|
|
73
|
+
loggingService: ILoggingService;
|
|
74
|
+
/**
|
|
75
|
+
* Resolves the tools exposed to the script. Supplying it directly is a test
|
|
76
|
+
* seam; in production {@link bindRunCodeRegistry} installs the wrapped
|
|
77
|
+
* registry, so scripts go through the same policy layer as a direct call.
|
|
78
|
+
*/
|
|
79
|
+
getToolRegistry?: () => ToolRegistry;
|
|
80
|
+
/** Policy authority used for out-of-band script calls. */
|
|
81
|
+
approvalPolicyRegistry: ToolApprovalPolicyRegistry;
|
|
82
|
+
getCwd?: () => string;
|
|
83
|
+
executionContext?: ExecutionContext;
|
|
84
|
+
nestedApprovalOwner?: NestedApprovalOwner;
|
|
85
|
+
sessionAccess?: import('../../../services/session/session-access-state.js').SessionAccessState;
|
|
86
|
+
nestedCompatibility?: import('../../../services/session/nested-tool-compatibility-state.js').NestedToolCompatibilityState;
|
|
87
|
+
}
|
|
88
|
+
/** Installs the wrapped registry into any `run_code` definition in `tools`. */
|
|
89
|
+
export declare function bindRunCodeRegistry(tools: ToolRegistry): void;
|
|
90
|
+
export declare function bindRunCodeNestedApprovalOwner(tools: ToolRegistry, owner: NestedApprovalOwner): void;
|
|
91
|
+
/**
|
|
92
|
+
* Direct calls are the tools a script structurally cannot reach, including
|
|
93
|
+
* `run_code` itself. Visibility does not depend on `canRequireApproval`.
|
|
94
|
+
*/
|
|
95
|
+
export declare function isDirectlyCallable(tool: Pick<AnyToolDefinition, 'name'>): boolean;
|
|
96
|
+
export declare const formatRunCodeCommandMessage: FormatCommandMessage;
|
|
97
|
+
export declare function createRunCodeToolDefinition(options: CreateRunCodeToolOptions): SchemaToolDefinition<typeof runCodeParametersSchema>;
|
|
98
|
+
//# sourceMappingURL=run-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-code.d.ts","sourceRoot":"","sources":["../../../../source/tools/system/run-code/run-code.ts"],"names":[],"mappings":"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"}
|