@qduc/term2 0.19.0 → 0.21.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 +9 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +151 -93
- 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 +62 -36
- package/dist/app.js.map +1 -1
- package/dist/cli.js +122 -41
- 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/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 +1 -0
- package/dist/components/input/MenuSurface.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/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 +4 -0
- 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 +26 -0
- 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.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.js +16 -8
- 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/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +4 -3
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +28 -13
- package/dist/components/layout/StatusBar.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 +48 -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 +6 -14
- package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
- package/dist/components/message/ChatMessage.js +1 -1
- package/dist/components/message/ChatMessage.js.map +1 -1
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +32 -16
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/command-grouping.d.ts +6 -6
- package/dist/components/message/command-grouping.d.ts.map +1 -1
- package/dist/components/message/command-grouping.js +21 -8
- package/dist/components/message/command-grouping.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 +20 -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/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +25 -3
- package/dist/hooks/settings-completion-config.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-conversation.d.ts +2 -2
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +1 -1
- 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-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-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +16 -0
- 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/lib/agent-client.d.ts +18 -0
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +69 -14
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +8 -0
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +7 -4
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +8 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +65 -41
- package/dist/lib/agent-factory.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/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +6 -6
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/memory.md +1 -1
- package/dist/prompts/prefix-quality.test.ts +8 -5
- package/dist/prompts/prompt-constructor.d.ts +5 -6
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +15 -7
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +73 -48
- package/dist/prompts/prompt-constructor.ts +21 -13
- package/dist/prompts/session-browser.md +2 -0
- 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/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-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +75 -14
- 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.map +1 -1
- package/dist/providers/codex.provider.js +1 -0
- 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/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/registry.d.ts +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/retrying-model.d.ts.map +1 -1
- package/dist/providers/retrying-model.js +11 -2
- package/dist/providers/retrying-model.js.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +3 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +99 -19
- 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/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-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-policy.js +2 -2
- package/dist/services/approval/approval-decision-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 +42 -18
- 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 +117 -20
- package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +20 -3
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +2 -9
- 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.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +22 -2
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-persistence.d.ts +30 -0
- package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.js +101 -7
- 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.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +21 -4
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +3 -2
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +36 -15
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/session-browser.d.ts +8 -1
- package/dist/services/conversation/session-browser.d.ts.map +1 -1
- package/dist/services/conversation/session-browser.js +134 -16
- package/dist/services/conversation/session-browser.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/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/logging-service.d.ts +1 -0
- package/dist/services/logging/logging-service.d.ts.map +1 -1
- package/dist/services/logging/logging-service.js +5 -2
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/logging/provider-traffic.d.ts +8 -1
- package/dist/services/logging/provider-traffic.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.js +105 -10
- 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 +74 -27
- 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 +22 -4
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +148 -1
- 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 +7 -3
- package/dist/services/models/model-catalog-session.js.map +1 -1
- package/dist/services/models/model-listing.d.ts +57 -0
- package/dist/services/models/model-listing.d.ts.map +1 -0
- package/dist/services/models/model-listing.js +96 -0
- package/dist/services/models/model-listing.js.map +1 -0
- package/dist/services/models/model-resolution.d.ts +88 -0
- package/dist/services/models/model-resolution.d.ts.map +1 -0
- package/dist/services/models/model-resolution.js +292 -0
- package/dist/services/models/model-resolution.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/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/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/session/background-check-in-scheduler.d.ts +20 -4
- package/dist/services/session/background-check-in-scheduler.d.ts.map +1 -1
- package/dist/services/session/background-check-in-scheduler.js +73 -6
- package/dist/services/session/background-check-in-scheduler.js.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.js +4 -4
- package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +2 -1
- package/dist/services/session/session-composition.js.map +1 -1
- 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-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-rollover/session-rollover-brief.d.ts +2 -1
- package/dist/services/session-rollover/session-rollover-brief.d.ts.map +1 -1
- package/dist/services/session-rollover/session-rollover-brief.js +5 -3
- package/dist/services/session-rollover/session-rollover-brief.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 +124 -19
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +111 -31
- 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.map +1 -1
- package/dist/services/settings/settings-sources.js +13 -1
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +3 -3
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +15 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.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/subagent-notification-store.d.ts +10 -2
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +10 -5
- package/dist/services/subagents/subagent-notification-store.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +10 -15
- package/dist/services/subagents/tool-policy.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/tools/agent/configure-task-check-in.d.ts +19 -0
- package/dist/tools/agent/configure-task-check-in.d.ts.map +1 -0
- package/dist/tools/agent/configure-task-check-in.js +82 -0
- package/dist/tools/agent/configure-task-check-in.js.map +1 -0
- package/dist/tools/agent/run-subagent-async.d.ts +11 -1
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent-async.js +22 -1
- package/dist/tools/agent/run-subagent-async.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts +15 -0
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +24 -2
- package/dist/tools/agent/run-subagent.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 +163 -98
- package/dist/tools/file/apply-patch.js.map +1 -1
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +48 -0
- package/dist/tools/file/read-file.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 +123 -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 +7 -0
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/memory/memory-tools.js +1 -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 +11 -1
- 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 +10 -1
- package/dist/tools/session-rollover/session-rollover-tool.js.map +1 -1
- package/dist/tools/system/shell.d.ts +12 -0
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +30 -4
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +15 -2
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/utils/ai/token-usage.d.ts +9 -0
- package/dist/utils/ai/token-usage.d.ts.map +1 -1
- package/dist/utils/ai/token-usage.js +15 -3
- package/dist/utils/ai/token-usage.js.map +1 -1
- package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-utils.js +40 -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/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.map +1 -1
- package/dist/utils/settings-command.js +95 -14
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.d.ts +3 -0
- package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.js +35 -17
- package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
- package/dist/utils/streaming/streaming-speed-tracker.d.ts +47 -6
- package/dist/utils/streaming/streaming-speed-tracker.d.ts.map +1 -1
- package/dist/utils/streaming/streaming-speed-tracker.js +91 -23
- package/dist/utils/streaming/streaming-speed-tracker.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline';
|
|
2
|
+
import { getProvider, getProviderIds } from '../../providers/index.js';
|
|
3
|
+
import { filterModels } from '../model-service.js';
|
|
4
|
+
import { scoreSubsequence } from '../../utils/subsequence-filter.js';
|
|
5
|
+
import { collectProviderModels } from './model-listing.js';
|
|
6
|
+
import { HARNESS_IDLE_ENV } from '../../lib/harness-input-idle.js';
|
|
7
|
+
export const VALID_REASONING_EFFORTS = ['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'];
|
|
8
|
+
/**
|
|
9
|
+
* Parse a raw `--model` flag string, separating optional thinking suffix
|
|
10
|
+
* (":<thinking>") and optional provider prefix ("<provider>/<id>").
|
|
11
|
+
*/
|
|
12
|
+
export function parseModelFlag(rawModelFlag, options) {
|
|
13
|
+
const trimmed = rawModelFlag.trim();
|
|
14
|
+
// 1. Extract thinking suffix (e.g. :high, :low, :medium)
|
|
15
|
+
let withoutThinking = trimmed;
|
|
16
|
+
let reasoningEffort;
|
|
17
|
+
const colonIdx = trimmed.lastIndexOf(':');
|
|
18
|
+
if (colonIdx !== -1) {
|
|
19
|
+
const potentialEffort = trimmed.slice(colonIdx + 1).toLowerCase();
|
|
20
|
+
if (VALID_REASONING_EFFORTS.includes(potentialEffort)) {
|
|
21
|
+
reasoningEffort = potentialEffort;
|
|
22
|
+
withoutThinking = trimmed.slice(0, colonIdx).trim();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const rawPattern = withoutThinking;
|
|
26
|
+
// 2. Extract provider prefix
|
|
27
|
+
if (options?.providerFlag) {
|
|
28
|
+
return {
|
|
29
|
+
provider: options.providerFlag,
|
|
30
|
+
pattern: withoutThinking,
|
|
31
|
+
reasoningEffort,
|
|
32
|
+
rawPattern,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const slashIdx = withoutThinking.indexOf('/');
|
|
36
|
+
if (slashIdx !== -1) {
|
|
37
|
+
const prefix = withoutThinking.slice(0, slashIdx).toLowerCase();
|
|
38
|
+
const known = options?.knownProviders ?? getProviderIds();
|
|
39
|
+
if (known.map((k) => k.toLowerCase()).includes(prefix)) {
|
|
40
|
+
return {
|
|
41
|
+
provider: prefix,
|
|
42
|
+
pattern: withoutThinking.slice(slashIdx + 1).trim(),
|
|
43
|
+
reasoningEffort,
|
|
44
|
+
rawPattern,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
provider: undefined,
|
|
50
|
+
pattern: withoutThinking,
|
|
51
|
+
reasoningEffort,
|
|
52
|
+
rawPattern,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Match parsed model pattern against loaded provider model groups.
|
|
57
|
+
* Exact matches take strict precedence over partial/fuzzy matches, and an
|
|
58
|
+
* exact match of the flag exactly as typed (including any provider-style
|
|
59
|
+
* prefix) takes precedence over the split provider+pattern reading, so a
|
|
60
|
+
* literal aggregator id like `anthropic/claude-3.5-sonnet` is never
|
|
61
|
+
* reinterpreted when the vendor name collides with a provider id.
|
|
62
|
+
*/
|
|
63
|
+
export function matchModels(groups, parsed) {
|
|
64
|
+
const patternLower = parsed.pattern.toLowerCase();
|
|
65
|
+
const rawPatternLower = parsed.rawPattern.toLowerCase();
|
|
66
|
+
// Stage 0: The id exactly as typed. When the raw flag (prefix included) is a
|
|
67
|
+
// real model id somewhere, use it verbatim instead of the split reading.
|
|
68
|
+
const asTypedMatches = [];
|
|
69
|
+
for (const group of groups) {
|
|
70
|
+
for (const model of group.models) {
|
|
71
|
+
if (model.id.toLowerCase() === rawPatternLower) {
|
|
72
|
+
asTypedMatches.push({ provider: group.provider, model });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (asTypedMatches.length > 0) {
|
|
77
|
+
return { exact: true, matches: asTypedMatches };
|
|
78
|
+
}
|
|
79
|
+
// Stage 1: Exact matches on the stripped pattern
|
|
80
|
+
const exactMatches = [];
|
|
81
|
+
for (const group of groups) {
|
|
82
|
+
if (parsed.provider && group.provider.toLowerCase() !== parsed.provider.toLowerCase()) {
|
|
83
|
+
// Check if rawPattern matches a slash model id in another provider (e.g. openrouter)
|
|
84
|
+
for (const model of group.models) {
|
|
85
|
+
if (model.id.toLowerCase() === rawPatternLower) {
|
|
86
|
+
exactMatches.push({ provider: group.provider, model });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
for (const model of group.models) {
|
|
92
|
+
if (model.id.toLowerCase() === patternLower || model.id.toLowerCase() === rawPatternLower) {
|
|
93
|
+
exactMatches.push({ provider: group.provider, model });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (exactMatches.length > 0) {
|
|
98
|
+
return { exact: true, matches: exactMatches };
|
|
99
|
+
}
|
|
100
|
+
// Stage 2: Fuzzy / partial matches
|
|
101
|
+
const fuzzyMatches = [];
|
|
102
|
+
const trimmed = parsed.pattern.trim();
|
|
103
|
+
for (const group of groups) {
|
|
104
|
+
if (parsed.provider) {
|
|
105
|
+
if (group.provider.toLowerCase() === parsed.provider.toLowerCase()) {
|
|
106
|
+
const filtered = filterModels(group.models, trimmed);
|
|
107
|
+
for (const model of filtered) {
|
|
108
|
+
fuzzyMatches.push({ provider: group.provider, model });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
// No provider specified: match provider name or model id/name
|
|
114
|
+
if (scoreSubsequence(trimmed, group.provider) !== -Infinity) {
|
|
115
|
+
for (const model of group.models) {
|
|
116
|
+
fuzzyMatches.push({ provider: group.provider, model });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const filtered = filterModels(group.models, trimmed);
|
|
121
|
+
for (const model of filtered) {
|
|
122
|
+
fuzzyMatches.push({ provider: group.provider, model });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return { exact: false, matches: fuzzyMatches };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Format matching models as a numbered list grouped by provider,
|
|
130
|
+
* matching `--list-models` style with sequential 1-based numbering.
|
|
131
|
+
*/
|
|
132
|
+
export function formatDisambiguationPrompt(matches, groups) {
|
|
133
|
+
const lines = [];
|
|
134
|
+
const labelByProvider = new Map();
|
|
135
|
+
for (const group of groups) {
|
|
136
|
+
const label = group.label ?? getProvider(group.provider)?.label;
|
|
137
|
+
if (label && label !== group.provider) {
|
|
138
|
+
labelByProvider.set(group.provider, label);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const byProvider = new Map();
|
|
142
|
+
for (const match of matches) {
|
|
143
|
+
const list = byProvider.get(match.provider) ?? [];
|
|
144
|
+
list.push(match);
|
|
145
|
+
byProvider.set(match.provider, list);
|
|
146
|
+
}
|
|
147
|
+
let index = 1;
|
|
148
|
+
for (const [provider, list] of byProvider) {
|
|
149
|
+
const label = labelByProvider.get(provider);
|
|
150
|
+
const header = label ? `${provider} (${label}):` : `${provider}:`;
|
|
151
|
+
lines.push(header);
|
|
152
|
+
for (const match of list) {
|
|
153
|
+
const model = match.model;
|
|
154
|
+
const name = model.name && model.name !== model.id ? ` ${model.name}` : '';
|
|
155
|
+
lines.push(` ${index}) ${model.id}${name}`);
|
|
156
|
+
index++;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return lines.join('\n');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Interactive prompt for disambiguating multiple matching models.
|
|
163
|
+
*/
|
|
164
|
+
export async function promptForDisambiguation(matches, groups, pattern, prompter, streams) {
|
|
165
|
+
const formatted = formatDisambiguationPrompt(matches, groups);
|
|
166
|
+
const promptText = `Multiple models match "${pattern}":\n\n${formatted}\n\nSelect a model [1-${matches.length}]: `;
|
|
167
|
+
if (prompter) {
|
|
168
|
+
const answer = await prompter(promptText);
|
|
169
|
+
if (!answer)
|
|
170
|
+
return null;
|
|
171
|
+
const num = parseInt(answer.trim(), 10);
|
|
172
|
+
if (!Number.isNaN(num) && num >= 1 && num <= matches.length) {
|
|
173
|
+
return matches[num - 1];
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
const input = streams?.input ?? process.stdin;
|
|
178
|
+
// Prompts go to stderr by default: stdout carries structured output (--json
|
|
179
|
+
// NDJSON, pipes) and must stay machine-readable.
|
|
180
|
+
const output = streams?.output ?? process.stderr;
|
|
181
|
+
const rl = createInterface({ input, output });
|
|
182
|
+
try {
|
|
183
|
+
output.write(`Multiple models match "${pattern}":\n\n${formatted}\n\n`);
|
|
184
|
+
while (true) {
|
|
185
|
+
const answer = await new Promise((resolve) => {
|
|
186
|
+
rl.question(`Select a model [1-${matches.length}]: `, (res) => resolve(res));
|
|
187
|
+
rl.once('close', () => resolve(null));
|
|
188
|
+
});
|
|
189
|
+
if (answer === null)
|
|
190
|
+
return null;
|
|
191
|
+
const num = parseInt(answer.trim(), 10);
|
|
192
|
+
if (!Number.isNaN(num) && num >= 1 && num <= matches.length) {
|
|
193
|
+
return matches[num - 1];
|
|
194
|
+
}
|
|
195
|
+
output.write(`Please enter a number between 1 and ${matches.length}.\n`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
finally {
|
|
199
|
+
rl.close();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Resolves `--model <pattern>` against the model catalog with exact match
|
|
204
|
+
* precedence, partial/fuzzy matching, and interactive disambiguation when needed.
|
|
205
|
+
*/
|
|
206
|
+
export async function resolveModelFlag(deps) {
|
|
207
|
+
const knownProviders = deps.knownProviders ?? getProviderIds();
|
|
208
|
+
const parsed = parseModelFlag(deps.modelFlag, {
|
|
209
|
+
providerFlag: deps.providerFlag,
|
|
210
|
+
knownProviders,
|
|
211
|
+
});
|
|
212
|
+
// Isolated black-box provider harnesses replay wire turns and do not mock catalog endpoints
|
|
213
|
+
if (process.env[HARNESS_IDLE_ENV] && deps.prompter === undefined) {
|
|
214
|
+
return {
|
|
215
|
+
status: 'passthrough',
|
|
216
|
+
modelId: parsed.rawPattern,
|
|
217
|
+
provider: parsed.provider,
|
|
218
|
+
reasoningEffort: parsed.reasoningEffort,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// Narrow the catalog load only when the user explicitly scoped it with
|
|
222
|
+
// --provider. A provider prefix parsed out of the flag itself (e.g. the
|
|
223
|
+
// `anthropic/` in `anthropic/claude-3.5-sonnet` on an aggregator) must not
|
|
224
|
+
// narrow: the full id may be a literal model id on a different provider.
|
|
225
|
+
const providerIds = deps.providerIds ?? (deps.providerFlag && parsed.provider ? [parsed.provider] : undefined);
|
|
226
|
+
const groups = await collectProviderModels({
|
|
227
|
+
settingsService: deps.settingsService,
|
|
228
|
+
loggingService: deps.loggingService,
|
|
229
|
+
fetcher: deps.fetcher,
|
|
230
|
+
}, providerIds);
|
|
231
|
+
const warnings = groups
|
|
232
|
+
.filter((group) => group.error !== undefined)
|
|
233
|
+
.map((group) => `warning: ${group.provider}: ${group.error}`);
|
|
234
|
+
const totalLoadedModels = groups.reduce((acc, g) => acc + g.models.length, 0);
|
|
235
|
+
const hasFetchErrors = groups.some((g) => g.error !== undefined);
|
|
236
|
+
// If providers had errors and yielded 0 models, pass through rather than blocking startup
|
|
237
|
+
if (totalLoadedModels === 0 && hasFetchErrors) {
|
|
238
|
+
return {
|
|
239
|
+
status: 'passthrough',
|
|
240
|
+
// Fail open with the flag as typed, matching pre-resolution behavior.
|
|
241
|
+
modelId: parsed.rawPattern,
|
|
242
|
+
provider: parsed.provider,
|
|
243
|
+
reasoningEffort: parsed.reasoningEffort,
|
|
244
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
const { matches } = matchModels(groups, parsed);
|
|
248
|
+
if (matches.length === 0) {
|
|
249
|
+
// If the target provider failed to fetch its catalog, allow passthrough
|
|
250
|
+
if (parsed.provider) {
|
|
251
|
+
const targetGroup = groups.find((g) => g.provider.toLowerCase() === parsed.provider.toLowerCase());
|
|
252
|
+
if (targetGroup?.error) {
|
|
253
|
+
return {
|
|
254
|
+
status: 'passthrough',
|
|
255
|
+
modelId: parsed.rawPattern,
|
|
256
|
+
provider: parsed.provider,
|
|
257
|
+
reasoningEffort: parsed.reasoningEffort,
|
|
258
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
status: 'no_match',
|
|
264
|
+
error: `Error: No models match "${deps.modelFlag}".`,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
if (matches.length === 1) {
|
|
268
|
+
return {
|
|
269
|
+
status: 'resolved',
|
|
270
|
+
modelId: matches[0].model.id,
|
|
271
|
+
provider: matches[0].provider,
|
|
272
|
+
reasoningEffort: parsed.reasoningEffort,
|
|
273
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
// Ambiguous match: disambiguate
|
|
277
|
+
const selected = await promptForDisambiguation(matches, groups, deps.modelFlag, deps.prompter, deps.streams);
|
|
278
|
+
if (!selected) {
|
|
279
|
+
return {
|
|
280
|
+
status: 'cancelled',
|
|
281
|
+
error: 'Cancelled.',
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
return {
|
|
285
|
+
status: 'resolved',
|
|
286
|
+
modelId: selected.model.id,
|
|
287
|
+
provider: selected.provider,
|
|
288
|
+
reasoningEffort: parsed.reasoningEffort,
|
|
289
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=model-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-resolution.js","sourceRoot":"","sources":["../../../source/services/models/model-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-mode-interceptor.d.ts","sourceRoot":"","sources":["../../source/services/plan-mode-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan-mode-interceptor.d.ts","sourceRoot":"","sources":["../../source/services/plan-mode-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAEtG,KAAK,wBAAwB,GAAG;IAC9B,kBAAkB,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,MAAM,IAAI,CAAC;CAClE,CAAC;AAEF,eAAO,MAAM,0BAA0B,gBACxB,wBAAwB,QAC/B;IAAE,eAAe,EAAE,gBAAgB,CAAA;CAAE,KAC1C,CAAC,MAAM,IAAI,CA2Cb,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveActiveEnforcement } from './profiles/index.js';
|
|
1
2
|
export const installPlanModeInterceptor = (agentClient, deps) => {
|
|
2
3
|
// Subagent roles that cannot mutate the workspace (canWrite: false). The
|
|
3
4
|
// `worker` role (and any future write-capable/custom role) is blocked.
|
|
@@ -16,18 +17,16 @@ export const installPlanModeInterceptor = (agentClient, deps) => {
|
|
|
16
17
|
return typeof role === 'string' ? role : undefined;
|
|
17
18
|
};
|
|
18
19
|
const interceptor = async (name, params) => {
|
|
19
|
-
const
|
|
20
|
-
if (
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
if (['create_file', 'search_replace', 'apply_patch'].includes(name)) {
|
|
20
|
+
const denials = resolveActiveEnforcement(deps.settingsService).denials;
|
|
21
|
+
if (denials.has('filesystem-mutation') && ['create_file', 'search_replace', 'apply_patch'].includes(name)) {
|
|
24
22
|
return `Plan mode is active (read-only). The "${name}" tool is disabled. Do not attempt file or state changes — investigate with read-only tools and present an ordered implementation plan. Tell the user to exit plan mode to execute it.`;
|
|
25
23
|
}
|
|
26
24
|
if (name === 'run_subagent' || name === 'run_subagent_async') {
|
|
27
25
|
const role = extractRole(params);
|
|
28
26
|
// Allow only read-only subagent roles; block worker and unknown roles
|
|
29
27
|
// (an unknown role could be a write-capable custom subagent).
|
|
30
|
-
if (
|
|
28
|
+
if ((role !== undefined && !READ_ONLY_SUBAGENT_ROLES.has(role) && denials.has('delegated-write')) ||
|
|
29
|
+
(role === undefined && denials.has('unknown-delegated-role'))) {
|
|
31
30
|
return `Plan mode is active (read-only). The "${name}" tool is restricted to read-only roles (explorer, mentor, librarian) — the "${role ?? 'unknown'}" role is disabled. Use a read-only subagent to investigate, then present an ordered implementation plan. Tell the user to exit plan mode to execute it.`;
|
|
32
31
|
}
|
|
33
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-mode-interceptor.js","sourceRoot":"","sources":["../../source/services/plan-mode-interceptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan-mode-interceptor.js","sourceRoot":"","sources":["../../source/services/plan-mode-interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,WAAqC,EACrC,IAA2C,EAC7B,EAAE;IAChB,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAE9E,MAAM,WAAW,GAAG,CAAC,MAAe,EAAsB,EAAE;QAC1D,IAAI,GAAG,GAAG,MAAM,CAAC;QACjB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAI,GAAiC,EAAE,IAAI,CAAC;QACtD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAoB,KAAK,EAAE,IAAY,EAAE,MAAe,EAAE,EAAE;QAC3E,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;QAEvE,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1G,OAAO,yCAAyC,IAAI,wLAAwL,CAAC;QAC/O,CAAC;QAED,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,sEAAsE;YACtE,8DAA8D;YAC9D,IACE,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC7F,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,EAC7D,CAAC;gBACD,OAAO,yCAAyC,IAAI,gFAClD,IAAI,IAAI,SACV,0JAA0J,CAAC;YAC7J,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACrD,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ISettingsService } from '../service-interfaces.js';
|
|
2
|
+
import type { ResolveOptions, ResolvedEnforcementPolicy, ResolvedProfile } from './types.js';
|
|
3
|
+
export declare function resolveActiveProfile(settingsService: ISettingsService, options?: ResolveOptions): ResolvedProfile;
|
|
4
|
+
export declare function resolveActiveEnforcement(settingsService: ISettingsService): ResolvedEnforcementPolicy;
|
|
5
|
+
//# sourceMappingURL=active-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-profile.d.ts","sourceRoot":"","sources":["../../../source/services/profiles/active-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAU7F,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,eAAe,CAEjH;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,gBAAgB,GAAG,yBAAyB,CAkBrG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { resolveProfile } from './resolver.js';
|
|
2
|
+
import { ProfileResolutionError } from './types.js';
|
|
3
|
+
const STANDARD_PROFILE_ID = 'builtin:standard';
|
|
4
|
+
const enforcementCache = new WeakMap();
|
|
5
|
+
const readActiveProfileId = (settingsService) => {
|
|
6
|
+
const value = settingsService.get('app.activeProfileId');
|
|
7
|
+
return typeof value === 'string' && value.trim().length > 0 ? value : STANDARD_PROFILE_ID;
|
|
8
|
+
};
|
|
9
|
+
export function resolveActiveProfile(settingsService, options) {
|
|
10
|
+
return resolveProfile(readActiveProfileId(settingsService), options);
|
|
11
|
+
}
|
|
12
|
+
export function resolveActiveEnforcement(settingsService) {
|
|
13
|
+
const profileId = readActiveProfileId(settingsService);
|
|
14
|
+
const cached = enforcementCache.get(settingsService);
|
|
15
|
+
if (cached?.profileId === profileId)
|
|
16
|
+
return cached.enforcement;
|
|
17
|
+
let enforcement;
|
|
18
|
+
try {
|
|
19
|
+
enforcement = resolveActiveProfile(settingsService).enforcement;
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (!(error instanceof ProfileResolutionError))
|
|
23
|
+
throw error;
|
|
24
|
+
enforcement = {
|
|
25
|
+
policies: new Set(),
|
|
26
|
+
denials: new Set(),
|
|
27
|
+
handoffRestrictions: new Set(),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
enforcementCache.set(settingsService, { profileId, enforcement });
|
|
31
|
+
return enforcement;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=active-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-profile.js","sourceRoot":"","sources":["../../../source/services/profiles/active-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAC/C,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAmF,CAAC;AAExH,MAAM,mBAAmB,GAAG,CAAC,eAAiC,EAAU,EAAE;IACxE,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAC5F,CAAC,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,eAAiC,EAAE,OAAwB;IAC9F,OAAO,cAAc,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,eAAiC;IACxE,MAAM,SAAS,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,WAAW,CAAC;IAE/D,IAAI,WAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,WAAW,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,sBAAsB,CAAC;YAAE,MAAM,KAAK,CAAC;QAC5D,WAAW,GAAG;YACZ,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,mBAAmB,EAAE,IAAI,GAAG,EAAE;SAC/B,CAAC;IACJ,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './schema.js';
|
|
3
|
+
export * from './registry.js';
|
|
4
|
+
export * from './resolver.js';
|
|
5
|
+
export * from './legacy-adapter.js';
|
|
6
|
+
export * from './labels.js';
|
|
7
|
+
export * from './active-profile.js';
|
|
8
|
+
export * from './profile-transition.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/services/profiles/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './schema.js';
|
|
3
|
+
export * from './registry.js';
|
|
4
|
+
export * from './resolver.js';
|
|
5
|
+
export * from './legacy-adapter.js';
|
|
6
|
+
export * from './labels.js';
|
|
7
|
+
export * from './active-profile.js';
|
|
8
|
+
export * from './profile-transition.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/services/profiles/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the lowercase display label for a built-in Profile ID.
|
|
3
|
+
* Unknown IDs intentionally fall back to Standard for safe, stable display
|
|
4
|
+
* while custom Profile presentation metadata is not yet available.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getProfileLabel(profileId: string): string;
|
|
7
|
+
//# sourceMappingURL=labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../source/services/profiles/labels.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAczD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MENTOR_PROFILE_ID, LITE_PROFILE_ID, ORCHESTRATOR_PROFILE_ID, PLAN_PROFILE_ID, STANDARD_PROFILE_ID, } from './legacy-adapter.js';
|
|
2
|
+
/**
|
|
3
|
+
* Return the lowercase display label for a built-in Profile ID.
|
|
4
|
+
* Unknown IDs intentionally fall back to Standard for safe, stable display
|
|
5
|
+
* while custom Profile presentation metadata is not yet available.
|
|
6
|
+
*/
|
|
7
|
+
export function getProfileLabel(profileId) {
|
|
8
|
+
switch (profileId) {
|
|
9
|
+
case LITE_PROFILE_ID:
|
|
10
|
+
return 'lite';
|
|
11
|
+
case PLAN_PROFILE_ID:
|
|
12
|
+
return 'plan';
|
|
13
|
+
case MENTOR_PROFILE_ID:
|
|
14
|
+
return 'mentor';
|
|
15
|
+
case ORCHESTRATOR_PROFILE_ID:
|
|
16
|
+
return 'orchestrator';
|
|
17
|
+
case STANDARD_PROFILE_ID:
|
|
18
|
+
default:
|
|
19
|
+
return 'standard';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../source/services/profiles/labels.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,eAAe;YAClB,OAAO,MAAM,CAAC;QAChB,KAAK,eAAe;YAClB,OAAO,MAAM,CAAC;QAChB,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAC;QAClB,KAAK,uBAAuB;YAC1B,OAAO,cAAc,CAAC;QACxB,KAAK,mBAAmB,CAAC;QACzB;YACE,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ProfileId, SavedAppMode } from './types.js';
|
|
2
|
+
export declare const STANDARD_PROFILE_ID: 'builtin:standard';
|
|
3
|
+
export declare const LITE_PROFILE_ID: 'builtin:lite';
|
|
4
|
+
export declare const PLAN_PROFILE_ID: 'builtin:plan';
|
|
5
|
+
export declare const MENTOR_PROFILE_ID: 'builtin:mentor';
|
|
6
|
+
export declare const ORCHESTRATOR_PROFILE_ID: 'builtin:orchestrator';
|
|
7
|
+
/** Compatibility projection for persisted settings; Profile identity remains canonical. */
|
|
8
|
+
export declare function profileIdFromLegacyMode(mode: Partial<SavedAppMode> | undefined): ProfileId;
|
|
9
|
+
export declare function legacyModeFromProfileId(profileId: string): SavedAppMode;
|
|
10
|
+
export declare function normalizeLegacyMode(mode: Partial<SavedAppMode> | undefined): SavedAppMode;
|
|
11
|
+
declare const LEGACY_MODE_SETTING_FIELDS: Readonly<{
|
|
12
|
+
readonly 'app.orchestratorMode': 'orchestratorMode';
|
|
13
|
+
readonly 'app.liteMode': 'liteMode';
|
|
14
|
+
readonly 'app.planMode': 'planMode';
|
|
15
|
+
readonly 'app.mentorMode': 'mentorMode';
|
|
16
|
+
}>;
|
|
17
|
+
export type LegacyModeSettingKey = keyof typeof LEGACY_MODE_SETTING_FIELDS;
|
|
18
|
+
export declare function isLegacyModeSettingKey(key: string): key is LegacyModeSettingKey;
|
|
19
|
+
/** Map one legacy setting write to the canonical Profile selected by the flags. */
|
|
20
|
+
export declare function profileIdFromLegacyModeSetting(key: string, value: unknown, currentProfileId: string): ProfileId | undefined;
|
|
21
|
+
export declare const legacyModeAdapter: Readonly<{
|
|
22
|
+
profileIdFromLegacyMode: typeof profileIdFromLegacyMode;
|
|
23
|
+
legacyModeFromProfileId: typeof legacyModeFromProfileId;
|
|
24
|
+
normalizeLegacyMode: typeof normalizeLegacyMode;
|
|
25
|
+
profileIdFromLegacyModeSetting: typeof profileIdFromLegacyModeSetting;
|
|
26
|
+
}>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=legacy-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-adapter.d.ts","sourceRoot":"","sources":["../../../source/services/profiles/legacy-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,eAAO,MAAM,mBAAmB,EAAG,kBAA2B,CAAC;AAC/D,eAAO,MAAM,eAAe,EAAG,cAAuB,CAAC;AACvD,eAAO,MAAM,eAAe,EAAG,cAAuB,CAAC;AACvD,eAAO,MAAM,iBAAiB,EAAG,gBAAyB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,EAAG,sBAA+B,CAAC;AAEvE,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,SAAS,CAM1F;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAevE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,YAAY,CAEzF;AAED,QAAA,MAAM,0BAA0B;qCACN,kBAAkB;6BAC1B,UAAU;6BACV,UAAU;+BACR,YAAY;EACrB,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAE3E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAE/E;AAED,mFAAmF;AACnF,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,MAAM,GACvB,SAAS,GAAG,SAAS,CAYvB;AAED,eAAO,MAAM,iBAAiB;;;;;EAK5B,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export const STANDARD_PROFILE_ID = 'builtin:standard';
|
|
2
|
+
export const LITE_PROFILE_ID = 'builtin:lite';
|
|
3
|
+
export const PLAN_PROFILE_ID = 'builtin:plan';
|
|
4
|
+
export const MENTOR_PROFILE_ID = 'builtin:mentor';
|
|
5
|
+
export const ORCHESTRATOR_PROFILE_ID = 'builtin:orchestrator';
|
|
6
|
+
/** Compatibility projection for persisted settings; Profile identity remains canonical. */
|
|
7
|
+
export function profileIdFromLegacyMode(mode) {
|
|
8
|
+
if (mode?.orchestratorMode)
|
|
9
|
+
return ORCHESTRATOR_PROFILE_ID;
|
|
10
|
+
if (mode?.liteMode)
|
|
11
|
+
return LITE_PROFILE_ID;
|
|
12
|
+
if (mode?.planMode)
|
|
13
|
+
return PLAN_PROFILE_ID;
|
|
14
|
+
if (mode?.mentorMode)
|
|
15
|
+
return MENTOR_PROFILE_ID;
|
|
16
|
+
return STANDARD_PROFILE_ID;
|
|
17
|
+
}
|
|
18
|
+
export function legacyModeFromProfileId(profileId) {
|
|
19
|
+
switch (profileId) {
|
|
20
|
+
case ORCHESTRATOR_PROFILE_ID:
|
|
21
|
+
return { orchestratorMode: true, liteMode: false, planMode: false, mentorMode: false };
|
|
22
|
+
case LITE_PROFILE_ID:
|
|
23
|
+
return { orchestratorMode: false, liteMode: true, planMode: false, mentorMode: false };
|
|
24
|
+
case PLAN_PROFILE_ID:
|
|
25
|
+
return { orchestratorMode: false, liteMode: false, planMode: true, mentorMode: false };
|
|
26
|
+
case MENTOR_PROFILE_ID:
|
|
27
|
+
return { orchestratorMode: false, liteMode: false, planMode: false, mentorMode: true };
|
|
28
|
+
case STANDARD_PROFILE_ID:
|
|
29
|
+
return { orchestratorMode: false, liteMode: false, planMode: false, mentorMode: false };
|
|
30
|
+
default:
|
|
31
|
+
throw new Error(`Cannot project unknown Profile '${profileId}' to legacy mode flags`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function normalizeLegacyMode(mode) {
|
|
35
|
+
return legacyModeFromProfileId(profileIdFromLegacyMode(mode));
|
|
36
|
+
}
|
|
37
|
+
const LEGACY_MODE_SETTING_FIELDS = Object.freeze({
|
|
38
|
+
'app.orchestratorMode': 'orchestratorMode',
|
|
39
|
+
'app.liteMode': 'liteMode',
|
|
40
|
+
'app.planMode': 'planMode',
|
|
41
|
+
'app.mentorMode': 'mentorMode',
|
|
42
|
+
});
|
|
43
|
+
export function isLegacyModeSettingKey(key) {
|
|
44
|
+
return Object.prototype.hasOwnProperty.call(LEGACY_MODE_SETTING_FIELDS, key);
|
|
45
|
+
}
|
|
46
|
+
/** Map one legacy setting write to the canonical Profile selected by the flags. */
|
|
47
|
+
export function profileIdFromLegacyModeSetting(key, value, currentProfileId) {
|
|
48
|
+
if (!isLegacyModeSettingKey(key) || typeof value !== 'boolean')
|
|
49
|
+
return undefined;
|
|
50
|
+
const field = LEGACY_MODE_SETTING_FIELDS[key];
|
|
51
|
+
if (value)
|
|
52
|
+
return profileIdFromLegacyMode({ [field]: true });
|
|
53
|
+
const activeField = Object.entries(LEGACY_MODE_SETTING_FIELDS).find(([, name]) => {
|
|
54
|
+
try {
|
|
55
|
+
return legacyModeFromProfileId(currentProfileId)[name] === true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
})?.[1];
|
|
61
|
+
return activeField === field ? STANDARD_PROFILE_ID : currentProfileId;
|
|
62
|
+
}
|
|
63
|
+
export const legacyModeAdapter = Object.freeze({
|
|
64
|
+
profileIdFromLegacyMode,
|
|
65
|
+
legacyModeFromProfileId,
|
|
66
|
+
normalizeLegacyMode,
|
|
67
|
+
profileIdFromLegacyModeSetting,
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=legacy-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-adapter.js","sourceRoot":"","sources":["../../../source/services/profiles/legacy-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ISettingsService } from '../service-interfaces.js';
|
|
2
|
+
import type { ResolvedProfile } from './types.js';
|
|
3
|
+
export type ProfileTransitionClass = 'noop' | 'structural' | 'notice-only' | 'agent-rebuild';
|
|
4
|
+
export type ProfileTransitionPlan = {
|
|
5
|
+
targetId: string;
|
|
6
|
+
class: ProfileTransitionClass;
|
|
7
|
+
exitNotice: string | null;
|
|
8
|
+
enterNotice: string | null;
|
|
9
|
+
composedNotice: string | null;
|
|
10
|
+
};
|
|
11
|
+
export type ProfileTransitionPlanningDeps = {
|
|
12
|
+
availableIntegrations?: ReadonlyMap<string, boolean>;
|
|
13
|
+
};
|
|
14
|
+
export type ProfileTransitionDeps = ProfileTransitionPlanningDeps & {
|
|
15
|
+
/** Rebuild the active agent using the currently selected model. */
|
|
16
|
+
rebuildAgent?: () => void;
|
|
17
|
+
/** Queue the one notice produced by this transition. */
|
|
18
|
+
queueModeNotice?: (text: string) => void;
|
|
19
|
+
/** Whether this structural transition has existing history to protect. */
|
|
20
|
+
requiresHistoryConfirmation?: boolean | (() => boolean);
|
|
21
|
+
/** Clear the conversation when a structural transition is confirmed. */
|
|
22
|
+
clearConversation?: () => void | Promise<void>;
|
|
23
|
+
};
|
|
24
|
+
/** The interactive runtime exposes all built-in integration points. */
|
|
25
|
+
export declare const DEFAULT_AVAILABLE_INTEGRATIONS: ReadonlyMap<string, boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Classify the runtime impact of changing between two resolved Profiles.
|
|
28
|
+
* Identity equality intentionally wins: re-selecting a Profile has no effects,
|
|
29
|
+
* even when that Profile itself carries a workflow notice.
|
|
30
|
+
*/
|
|
31
|
+
export declare function classifyProfileTransition(current: ResolvedProfile, target: ResolvedProfile): ProfileTransitionClass;
|
|
32
|
+
export declare function planProfileTransition(settingsService: ISettingsService, targetId: string, deps?: ProfileTransitionPlanningDeps): ProfileTransitionPlan;
|
|
33
|
+
/** Owns Profile activation effects after pure resolution and classification. */
|
|
34
|
+
export declare class ProfileTransitionService {
|
|
35
|
+
#private;
|
|
36
|
+
constructor(settingsService: ISettingsService, deps?: ProfileTransitionDeps);
|
|
37
|
+
constructor(deps: ProfileTransitionDeps & {
|
|
38
|
+
settingsService: ISettingsService;
|
|
39
|
+
});
|
|
40
|
+
plan(targetId: string): ProfileTransitionPlan;
|
|
41
|
+
activate(targetId: string): ProfileTransitionPlan;
|
|
42
|
+
/**
|
|
43
|
+
* Apply the runtime effects of a plan whose canonical selection has already
|
|
44
|
+
* been committed by a surrounding settings transaction.
|
|
45
|
+
*/
|
|
46
|
+
commit(plan: ProfileTransitionPlan): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=profile-transition.d.ts.map
|