@qduc/term2 0.14.0 → 0.15.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 +17 -7
- package/dist/agent.js.map +1 -1
- package/dist/app-helpers.d.ts +4 -0
- package/dist/app-helpers.d.ts.map +1 -1
- package/dist/app-helpers.js +6 -0
- package/dist/app-helpers.js.map +1 -1
- package/dist/app.d.ts +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +141 -13
- package/dist/app.js.map +1 -1
- package/dist/cli.js +112 -28
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto-approve-command.js +3 -3
- package/dist/commands/auto-approve-command.js.map +1 -1
- package/dist/commands/guarded-settings-command.d.ts +3 -1
- package/dist/commands/guarded-settings-command.d.ts.map +1 -1
- package/dist/commands/guarded-settings-command.js +21 -5
- package/dist/commands/guarded-settings-command.js.map +1 -1
- package/dist/commands/mode-commands.d.ts +9 -2
- package/dist/commands/mode-commands.d.ts.map +1 -1
- package/dist/commands/mode-commands.js +12 -3
- package/dist/commands/mode-commands.js.map +1 -1
- package/dist/commands/usage-command.d.ts +10 -1
- package/dist/commands/usage-command.d.ts.map +1 -1
- package/dist/commands/usage-command.js +11 -1
- package/dist/commands/usage-command.js.map +1 -1
- package/dist/components/InputBox.js +14 -1
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/input/FirstRunSetupPrompt.js +1 -1
- package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
- package/dist/components/input/PendingQueueList.d.ts.map +1 -1
- package/dist/components/input/PendingQueueList.js +22 -5
- package/dist/components/input/PendingQueueList.js.map +1 -1
- package/dist/components/input/ProviderMenuSession.d.ts.map +1 -1
- package/dist/components/input/ProviderMenuSession.js +1 -0
- package/dist/components/input/ProviderMenuSession.js.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.js +6 -0
- package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.d.ts +2 -0
- package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.js +156 -64
- package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts +10 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.js +193 -59
- package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
- package/dist/components/layout/BottomArea.d.ts +11 -1
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +30 -13
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts +5 -0
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +45 -3
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/layout/live-task-rows.d.ts +16 -0
- package/dist/components/layout/live-task-rows.d.ts.map +1 -0
- package/dist/components/layout/live-task-rows.js +28 -0
- package/dist/components/layout/live-task-rows.js.map +1 -0
- package/dist/components/layout/terminal-text-budget.d.ts +4 -0
- package/dist/components/layout/terminal-text-budget.d.ts.map +1 -0
- package/dist/components/layout/terminal-text-budget.js +18 -0
- package/dist/components/layout/terminal-text-budget.js.map +1 -0
- package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.js +18 -5
- package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.js +27 -2
- package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.js +5 -0
- package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/message/CommandGroupSummary.d.ts +9 -0
- package/dist/components/message/CommandGroupSummary.d.ts.map +1 -0
- package/dist/components/message/CommandGroupSummary.js +31 -0
- package/dist/components/message/CommandGroupSummary.js.map +1 -0
- package/dist/components/message/CommandMessage.d.ts +8 -0
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +54 -25
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/MessageList.d.ts +6 -2
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +64 -10
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/SubagentActivityMessage.js +4 -2
- package/dist/components/message/SubagentActivityMessage.js.map +1 -1
- package/dist/components/message/command-grouping.d.ts +43 -0
- package/dist/components/message/command-grouping.d.ts.map +1 -0
- package/dist/components/message/command-grouping.js +142 -0
- package/dist/components/message/command-grouping.js.map +1 -0
- package/dist/components/message/command-message-helpers.d.ts +6 -5
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +36 -0
- package/dist/components/message/command-message-helpers.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +136 -90
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts +11 -0
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts.map +1 -0
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.js +50 -0
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.js.map +1 -0
- package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
- package/dist/components/prompt/QueuePausedPrompt.js +14 -8
- package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
- package/dist/contracts/application-stream.d.ts +7 -0
- package/dist/contracts/application-stream.d.ts.map +1 -1
- package/dist/contracts/conversation.d.ts +24 -1
- package/dist/contracts/conversation.d.ts.map +1 -1
- package/dist/contracts/conversation.js +8 -0
- package/dist/contracts/conversation.js.map +1 -1
- package/dist/contracts/streamed-model-turn.d.ts +22 -1
- package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/session-runtime.d.ts +10 -0
- package/dist/core/session-runtime.d.ts.map +1 -0
- package/dist/core/session-runtime.js +9 -0
- package/dist/core/session-runtime.js.map +1 -0
- package/dist/gateway/assertion.d.ts +38 -0
- package/dist/gateway/assertion.d.ts.map +1 -0
- package/dist/gateway/assertion.js +146 -0
- package/dist/gateway/assertion.js.map +1 -0
- package/dist/gateway/contracts.d.ts +124 -0
- package/dist/gateway/contracts.d.ts.map +1 -0
- package/dist/gateway/contracts.js +13 -0
- package/dist/gateway/contracts.js.map +1 -0
- package/dist/gateway/gateway.d.ts +72 -0
- package/dist/gateway/gateway.d.ts.map +1 -0
- package/dist/gateway/gateway.js +1277 -0
- package/dist/gateway/gateway.js.map +1 -0
- package/dist/gateway/index.d.ts +22 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +22 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/interaction-protocol.d.ts +76 -0
- package/dist/gateway/interaction-protocol.d.ts.map +1 -0
- package/dist/gateway/interaction-protocol.js +548 -0
- package/dist/gateway/interaction-protocol.js.map +1 -0
- package/dist/gateway/launcher.d.ts +8 -0
- package/dist/gateway/launcher.d.ts.map +1 -0
- package/dist/gateway/launcher.js +20 -0
- package/dist/gateway/launcher.js.map +1 -0
- package/dist/gateway/lifecycle.d.ts +12 -0
- package/dist/gateway/lifecycle.d.ts.map +1 -0
- package/dist/gateway/lifecycle.js +38 -0
- package/dist/gateway/lifecycle.js.map +1 -0
- package/dist/gateway/persistence/admission-persistence.d.ts +82 -0
- package/dist/gateway/persistence/admission-persistence.d.ts.map +1 -0
- package/dist/gateway/persistence/admission-persistence.js +215 -0
- package/dist/gateway/persistence/admission-persistence.js.map +1 -0
- package/dist/gateway/persistence/contracts.d.ts +94 -0
- package/dist/gateway/persistence/contracts.d.ts.map +1 -0
- package/dist/gateway/persistence/contracts.js +32 -0
- package/dist/gateway/persistence/contracts.js.map +1 -0
- package/dist/gateway/persistence/coordinator.d.ts +25 -0
- package/dist/gateway/persistence/coordinator.d.ts.map +1 -0
- package/dist/gateway/persistence/coordinator.js +181 -0
- package/dist/gateway/persistence/coordinator.js.map +1 -0
- package/dist/gateway/persistence/event-journal.d.ts +31 -0
- package/dist/gateway/persistence/event-journal.d.ts.map +1 -0
- package/dist/gateway/persistence/event-journal.js +378 -0
- package/dist/gateway/persistence/event-journal.js.map +1 -0
- package/dist/gateway/persistence/interaction-checkpoint.d.ts +17 -0
- package/dist/gateway/persistence/interaction-checkpoint.d.ts.map +1 -0
- package/dist/gateway/persistence/interaction-checkpoint.js +75 -0
- package/dist/gateway/persistence/interaction-checkpoint.js.map +1 -0
- package/dist/gateway/persistence/projection.d.ts +53 -0
- package/dist/gateway/persistence/projection.d.ts.map +1 -0
- package/dist/gateway/persistence/projection.js +226 -0
- package/dist/gateway/persistence/projection.js.map +1 -0
- package/dist/gateway/persistence/retention.d.ts +16 -0
- package/dist/gateway/persistence/retention.d.ts.map +1 -0
- package/dist/gateway/persistence/retention.js +93 -0
- package/dist/gateway/persistence/retention.js.map +1 -0
- package/dist/gateway/persistence/session-index.d.ts +34 -0
- package/dist/gateway/persistence/session-index.d.ts.map +1 -0
- package/dist/gateway/persistence/session-index.js +348 -0
- package/dist/gateway/persistence/session-index.js.map +1 -0
- package/dist/gateway/persistence/session-persistence.d.ts +68 -0
- package/dist/gateway/persistence/session-persistence.d.ts.map +1 -0
- package/dist/gateway/persistence/session-persistence.js +165 -0
- package/dist/gateway/persistence/session-persistence.js.map +1 -0
- package/dist/gateway/persistence/storage.d.ts +13 -0
- package/dist/gateway/persistence/storage.d.ts.map +1 -0
- package/dist/gateway/persistence/storage.js +87 -0
- package/dist/gateway/persistence/storage.js.map +1 -0
- package/dist/gateway/replay-ledger.d.ts +30 -0
- package/dist/gateway/replay-ledger.d.ts.map +1 -0
- package/dist/gateway/replay-ledger.js +83 -0
- package/dist/gateway/replay-ledger.js.map +1 -0
- package/dist/gateway/runtime-factory.d.ts +84 -0
- package/dist/gateway/runtime-factory.d.ts.map +1 -0
- package/dist/gateway/runtime-factory.js +213 -0
- package/dist/gateway/runtime-factory.js.map +1 -0
- package/dist/gateway/safe-log.d.ts +15 -0
- package/dist/gateway/safe-log.d.ts.map +1 -0
- package/dist/gateway/safe-log.js +89 -0
- package/dist/gateway/safe-log.js.map +1 -0
- package/dist/gateway/server-session.d.ts +65 -0
- package/dist/gateway/server-session.d.ts.map +1 -0
- package/dist/gateway/server-session.js +252 -0
- package/dist/gateway/server-session.js.map +1 -0
- package/dist/gateway/server.d.ts +42 -0
- package/dist/gateway/server.d.ts.map +1 -0
- package/dist/gateway/server.js +126 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/worker-boundary.d.ts +40 -0
- package/dist/gateway/worker-boundary.d.ts.map +1 -0
- package/dist/gateway/worker-boundary.js +149 -0
- package/dist/gateway/worker-boundary.js.map +1 -0
- package/dist/gateway/workspace-admission.d.ts +37 -0
- package/dist/gateway/workspace-admission.d.ts.map +1 -0
- package/dist/gateway/workspace-admission.js +285 -0
- package/dist/gateway/workspace-admission.js.map +1 -0
- package/dist/hooks/conversation-ui-reducer.d.ts +6 -0
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +3 -0
- package/dist/hooks/conversation-ui-reducer.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +30 -2
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +4 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +14 -3
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts +5 -0
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.js +11 -0
- package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +1 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +14 -3
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-grok-credit-usage.d.ts +20 -0
- package/dist/hooks/use-grok-credit-usage.d.ts.map +1 -0
- package/dist/hooks/use-grok-credit-usage.js +48 -0
- package/dist/hooks/use-grok-credit-usage.js.map +1 -0
- package/dist/hooks/use-provider-selection.d.ts +10 -0
- package/dist/hooks/use-provider-selection.d.ts.map +1 -1
- package/dist/hooks/use-provider-selection.js +105 -6
- package/dist/hooks/use-provider-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 +10 -2
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/lib/agent-client.d.ts +10 -3
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +115 -23
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +2 -0
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +6 -2
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +2 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +28 -10
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/editor-impl.d.ts.map +1 -1
- package/dist/lib/editor-impl.js +14 -17
- package/dist/lib/editor-impl.js.map +1 -1
- package/dist/lib/harness-input-idle.d.ts +16 -0
- package/dist/lib/harness-input-idle.d.ts.map +1 -0
- package/dist/lib/harness-input-idle.js +51 -0
- package/dist/lib/harness-input-idle.js.map +1 -0
- package/dist/lib/input-owner.d.ts +3 -0
- package/dist/lib/input-owner.d.ts.map +1 -1
- package/dist/lib/input-owner.js +2 -0
- package/dist/lib/input-owner.js.map +1 -1
- package/dist/lib/subagent-bridge.d.ts +3 -3
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +16 -9
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/lib/tool-invoke.d.ts +2 -0
- package/dist/lib/tool-invoke.d.ts.map +1 -1
- package/dist/lib/tool-invoke.js +3 -0
- package/dist/lib/tool-invoke.js.map +1 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +5 -0
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/explorer-delegation-contract.test.ts +22 -0
- package/dist/prompts/gpt-5.6.md +1 -1
- package/dist/prompts/kimi.md +1 -1
- package/dist/prompts/orchestrator.md +10 -1
- package/dist/prompts/plan-mode-info.md +3 -3
- package/dist/prompts/plan-mode-stub.md +7 -0
- package/dist/prompts/prefix-quality.test.ts +102 -0
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +4 -1
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +12 -4
- package/dist/prompts/prompt-constructor.ts +4 -1
- package/dist/prompts/subagents/explorer.md +7 -1
- package/dist/prompts/subagents/librarian.md +2 -0
- package/dist/prompts/subagents/mentor.md +2 -0
- package/dist/prompts/subagents/worker.md +2 -0
- package/dist/providers/ai-sdk-streamed-model.d.ts +5 -0
- package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.js +64 -1
- package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
- package/dist/providers/chained-wire-state.d.ts +6 -0
- package/dist/providers/chained-wire-state.d.ts.map +1 -1
- package/dist/providers/chained-wire-state.js +1 -3
- package/dist/providers/chained-wire-state.js.map +1 -1
- package/dist/providers/codex-auth.d.ts +73 -2
- package/dist/providers/codex-auth.d.ts.map +1 -1
- package/dist/providers/codex-auth.js +166 -2
- package/dist/providers/codex-auth.js.map +1 -1
- package/dist/providers/codex-responses-model.d.ts +3 -0
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +295 -162
- 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 +7 -1
- package/dist/providers/codex-turn-converter.js.map +1 -1
- package/dist/providers/codex.provider.d.ts +25 -2
- package/dist/providers/codex.provider.d.ts.map +1 -1
- package/dist/providers/codex.provider.js +83 -71
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/common/provider-errors.d.ts +20 -0
- package/dist/providers/common/provider-errors.d.ts.map +1 -1
- package/dist/providers/common/provider-errors.js +35 -0
- package/dist/providers/common/provider-errors.js.map +1 -1
- package/dist/providers/grok-auth.d.ts +105 -0
- package/dist/providers/grok-auth.d.ts.map +1 -0
- package/dist/providers/grok-auth.js +316 -0
- package/dist/providers/grok-auth.js.map +1 -0
- package/dist/providers/grok-credit-usage.d.ts +53 -0
- package/dist/providers/grok-credit-usage.d.ts.map +1 -0
- package/dist/providers/grok-credit-usage.js +108 -0
- package/dist/providers/grok-credit-usage.js.map +1 -0
- package/dist/providers/grok.provider.d.ts +24 -0
- package/dist/providers/grok.provider.d.ts.map +1 -0
- package/dist/providers/grok.provider.js +153 -0
- package/dist/providers/grok.provider.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/jwt-claims.d.ts +12 -0
- package/dist/providers/jwt-claims.d.ts.map +1 -0
- package/dist/providers/jwt-claims.js +25 -0
- package/dist/providers/jwt-claims.js.map +1 -0
- package/dist/providers/luna-responses-lite-wire-protocol.d.ts +1 -0
- package/dist/providers/luna-responses-lite-wire-protocol.d.ts.map +1 -1
- package/dist/providers/luna-responses-lite-wire-protocol.js +19 -0
- package/dist/providers/luna-responses-lite-wire-protocol.js.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.d.ts +360 -232
- package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.js +360 -232
- package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.js +21 -1
- package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
- package/dist/providers/oauth-account-store.d.ts +84 -0
- package/dist/providers/oauth-account-store.d.ts.map +1 -0
- package/dist/providers/oauth-account-store.js +142 -0
- package/dist/providers/oauth-account-store.js.map +1 -0
- package/dist/providers/oauth-accounts.d.ts +24 -0
- package/dist/providers/oauth-accounts.d.ts.map +1 -0
- package/dist/providers/oauth-accounts.js +37 -0
- package/dist/providers/oauth-accounts.js.map +1 -0
- package/dist/providers/oauth-pkce.d.ts +53 -0
- package/dist/providers/oauth-pkce.d.ts.map +1 -0
- package/dist/providers/oauth-pkce.js +200 -0
- package/dist/providers/oauth-pkce.js.map +1 -0
- package/dist/providers/oauth-session-account.d.ts +5 -0
- package/dist/providers/oauth-session-account.d.ts.map +1 -0
- package/dist/providers/oauth-session-account.js +24 -0
- package/dist/providers/oauth-session-account.js.map +1 -0
- package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
- package/dist/providers/openai-chat-completions-model.js +37 -16
- package/dist/providers/openai-chat-completions-model.js.map +1 -1
- package/dist/providers/openai-compatible-lazy.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts +5 -0
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +32 -2
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai-responses-model.d.ts +13 -3
- package/dist/providers/openai-responses-model.d.ts.map +1 -1
- package/dist/providers/openai-responses-model.js +92 -39
- package/dist/providers/openai-responses-model.js.map +1 -1
- package/dist/providers/openai.provider.d.ts.map +1 -1
- package/dist/providers/openai.provider.js +23 -2
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/opencode-routing.d.ts +2 -0
- package/dist/providers/opencode-routing.d.ts.map +1 -1
- package/dist/providers/opencode-routing.js +12 -6
- package/dist/providers/opencode-routing.js.map +1 -1
- package/dist/providers/opencode-transport-discovery.d.ts +18 -0
- package/dist/providers/opencode-transport-discovery.d.ts.map +1 -0
- package/dist/providers/opencode-transport-discovery.js +115 -0
- package/dist/providers/opencode-transport-discovery.js.map +1 -0
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/provider-opaque-compatibility.d.ts +58 -0
- package/dist/providers/provider-opaque-compatibility.d.ts.map +1 -0
- package/dist/providers/provider-opaque-compatibility.js +80 -0
- package/dist/providers/provider-opaque-compatibility.js.map +1 -0
- package/dist/providers/provider-service.d.ts +1 -1
- package/dist/providers/provider-service.d.ts.map +1 -1
- package/dist/providers/provider-service.js.map +1 -1
- package/dist/providers/registry.d.ts +10 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/responses-websocket-sessions.d.ts +25 -0
- package/dist/providers/responses-websocket-sessions.d.ts.map +1 -0
- package/dist/providers/responses-websocket-sessions.js +102 -0
- package/dist/providers/responses-websocket-sessions.js.map +1 -0
- package/dist/providers/websocket-close-evidence.d.ts +45 -0
- package/dist/providers/websocket-close-evidence.d.ts.map +1 -0
- package/dist/providers/websocket-close-evidence.js +78 -0
- package/dist/providers/websocket-close-evidence.js.map +1 -0
- package/dist/providers/websocket-receive-watchdog.d.ts +9 -1
- package/dist/providers/websocket-receive-watchdog.d.ts.map +1 -1
- package/dist/providers/websocket-receive-watchdog.js +27 -1
- package/dist/providers/websocket-receive-watchdog.js.map +1 -1
- package/dist/providers/websocket-request-dispatch.d.ts +35 -0
- package/dist/providers/websocket-request-dispatch.d.ts.map +1 -0
- package/dist/providers/websocket-request-dispatch.js +23 -0
- package/dist/providers/websocket-request-dispatch.js.map +1 -0
- package/dist/scripts/eval-context-compaction/runner.js +1 -1
- package/dist/scripts/eval-context-compaction/runner.js.map +1 -1
- package/dist/services/agent-runtime/agent-handle.d.ts.map +1 -1
- package/dist/services/agent-runtime/agent-handle.js +8 -5
- package/dist/services/agent-runtime/agent-handle.js.map +1 -1
- package/dist/services/agent-runtime/agent-runtime.d.ts +1 -1
- package/dist/services/agent-runtime/agent-runtime.js +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +33 -9
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +300 -87
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +6 -1
- 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 +72 -4
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
- package/dist/services/agent-runtime/executor.d.ts +1 -1
- package/dist/services/agent-runtime/executor.d.ts.map +1 -1
- package/dist/services/agent-runtime/executor.js +5 -5
- package/dist/services/agent-runtime/executor.js.map +1 -1
- package/dist/services/agent-runtime/generation-guard.d.ts +2 -1
- package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
- package/dist/services/agent-runtime/generation-guard.js +7 -2
- package/dist/services/agent-runtime/generation-guard.js.map +1 -1
- package/dist/services/agent-runtime/run-budget.d.ts +131 -0
- package/dist/services/agent-runtime/run-budget.d.ts.map +1 -0
- package/dist/services/agent-runtime/run-budget.js +268 -0
- package/dist/services/agent-runtime/run-budget.js.map +1 -0
- 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/tool-invocation-context.js.map +1 -1
- package/dist/services/agent-runtime/types.d.ts +5 -4
- package/dist/services/agent-runtime/types.d.ts.map +1 -1
- package/dist/services/agent-stream.d.ts.map +1 -1
- package/dist/services/agent-stream.js +2 -1
- package/dist/services/agent-stream.js.map +1 -1
- package/dist/services/approval/approval-decision-executor.d.ts +6 -1
- package/dist/services/approval/approval-decision-executor.d.ts.map +1 -1
- package/dist/services/approval/approval-decision-executor.js +15 -3
- package/dist/services/approval/approval-decision-executor.js.map +1 -1
- package/dist/services/approval/approval-decision-policy.d.ts.map +1 -1
- package/dist/services/approval/approval-decision-policy.js +3 -0
- package/dist/services/approval/approval-decision-policy.js.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.d.ts +2 -0
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +14 -2
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts +3 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.js +7 -4
- package/dist/services/approval/background-subagent-approval-controller.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 +8 -0
- 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 -11
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/approval/tool-ownership-registry.d.ts +5 -1
- package/dist/services/approval/tool-ownership-registry.d.ts.map +1 -1
- package/dist/services/approval/tool-ownership-registry.js +5 -22
- package/dist/services/approval/tool-ownership-registry.js.map +1 -1
- package/dist/services/background-task-activity.d.ts +79 -0
- package/dist/services/background-task-activity.d.ts.map +1 -0
- package/dist/services/background-task-activity.js +34 -0
- package/dist/services/background-task-activity.js.map +1 -0
- package/dist/services/command-message-streaming.d.ts +4 -2
- package/dist/services/command-message-streaming.d.ts.map +1 -1
- package/dist/services/command-message-streaming.js +2 -2
- package/dist/services/command-message-streaming.js.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.d.ts +6 -2
- package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.js +5 -1
- package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts +41 -9
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +218 -37
- 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 +4 -0
- package/dist/services/conversation/conversation-decoder.js.map +1 -1
- package/dist/services/conversation/conversation-events.d.ts +55 -2
- package/dist/services/conversation/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +103 -11
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts +3 -0
- package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.d.ts +38 -2
- package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.js +160 -16
- package/dist/services/conversation/conversation-persistence.js.map +1 -1
- package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.js +27 -0
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-result-builder.d.ts +6 -2
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +60 -1
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.d.ts +9 -1
- package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.js +5 -1
- package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +32 -3
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +82 -8
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/conversation-state-projector.d.ts +2 -1
- package/dist/services/conversation/conversation-state-projector.d.ts.map +1 -1
- package/dist/services/conversation/conversation-state-projector.js +31 -3
- package/dist/services/conversation/conversation-state-projector.js.map +1 -1
- package/dist/services/conversation/run-item-normalizer.d.ts.map +1 -1
- package/dist/services/conversation/run-item-normalizer.js +24 -1
- package/dist/services/conversation/run-item-normalizer.js.map +1 -1
- package/dist/services/conversation-agent-client.d.ts +21 -2
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/cost/model-cost.d.ts +13 -1
- package/dist/services/cost/model-cost.d.ts.map +1 -1
- package/dist/services/cost/model-cost.js +59 -0
- package/dist/services/cost/model-cost.js.map +1 -1
- package/dist/services/cost/subscription-providers.d.ts +2 -0
- package/dist/services/cost/subscription-providers.d.ts.map +1 -0
- package/dist/services/cost/subscription-providers.js +14 -0
- package/dist/services/cost/subscription-providers.js.map +1 -0
- package/dist/services/grok/grok-credit-usage-service.d.ts +62 -0
- package/dist/services/grok/grok-credit-usage-service.d.ts.map +1 -0
- package/dist/services/grok/grok-credit-usage-service.js +137 -0
- package/dist/services/grok/grok-credit-usage-service.js.map +1 -0
- package/dist/services/history-service.d.ts +9 -0
- package/dist/services/history-service.d.ts.map +1 -1
- package/dist/services/history-service.js +49 -2
- package/dist/services/history-service.js.map +1 -1
- package/dist/services/hooks/hook-composition.d.ts +17 -0
- package/dist/services/hooks/hook-composition.d.ts.map +1 -0
- package/dist/services/hooks/hook-composition.js +19 -0
- package/dist/services/hooks/hook-composition.js.map +1 -0
- package/dist/services/logging/conversation-log-events.d.ts +35 -1
- package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.js +17 -0
- package/dist/services/logging/conversation-log-events.js.map +1 -1
- package/dist/services/logging/conversation-log-writer.d.ts +8 -1
- package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-writer.js +145 -10
- package/dist/services/logging/conversation-log-writer.js.map +1 -1
- package/dist/services/logging/conversation-logger.d.ts.map +1 -1
- package/dist/services/logging/conversation-logger.js +18 -0
- package/dist/services/logging/conversation-logger.js.map +1 -1
- package/dist/services/logging/logging-service.d.ts +6 -6
- package/dist/services/logging/logging-service.d.ts.map +1 -1
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/logging/provider-traffic.d.ts +17 -1
- package/dist/services/logging/provider-traffic.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.js +283 -139
- 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 +20 -1
- package/dist/services/memory/memory-capabilities.js.map +1 -1
- package/dist/services/mode-notices.d.ts +1 -6
- package/dist/services/mode-notices.d.ts.map +1 -1
- package/dist/services/mode-notices.js +16 -3
- package/dist/services/mode-notices.js.map +1 -1
- package/dist/services/model-service.d.ts +2 -2
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/queue/queue-controller.d.ts +1 -1
- package/dist/services/queue/queue-controller.d.ts.map +1 -1
- package/dist/services/queue/queue-controller.js +19 -5
- package/dist/services/queue/queue-controller.js.map +1 -1
- package/dist/services/retry/chain-recovery-fingerprint.d.ts +10 -0
- package/dist/services/retry/chain-recovery-fingerprint.d.ts.map +1 -0
- package/dist/services/retry/chain-recovery-fingerprint.js +23 -0
- package/dist/services/retry/chain-recovery-fingerprint.js.map +1 -0
- package/dist/services/retry/recovery-executor.d.ts.map +1 -1
- package/dist/services/retry/recovery-executor.js +2 -0
- package/dist/services/retry/recovery-executor.js.map +1 -1
- package/dist/services/retry/recovery-policy.d.ts.map +1 -1
- package/dist/services/retry/recovery-policy.js +4 -0
- package/dist/services/retry/recovery-policy.js.map +1 -1
- package/dist/services/retry/retry-classifier.d.ts.map +1 -1
- package/dist/services/retry/retry-classifier.js +34 -2
- package/dist/services/retry/retry-classifier.js.map +1 -1
- package/dist/services/retry/retry-contracts.d.ts +14 -0
- package/dist/services/retry/retry-contracts.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.d.ts +17 -3
- package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.js +48 -7
- package/dist/services/retry/retry-error-classification.js.map +1 -1
- package/dist/services/retry/retry-errors.d.ts +4 -0
- package/dist/services/retry/retry-errors.d.ts.map +1 -1
- package/dist/services/retry/retry-errors.js +7 -0
- package/dist/services/retry/retry-errors.js.map +1 -1
- package/dist/services/retry/retry-event-presenter.d.ts.map +1 -1
- package/dist/services/retry/retry-event-presenter.js +20 -0
- package/dist/services/retry/retry-event-presenter.js.map +1 -1
- package/dist/services/runtime-setting-router.d.ts.map +1 -1
- package/dist/services/runtime-setting-router.js +6 -0
- package/dist/services/runtime-setting-router.js.map +1 -1
- package/dist/services/service-interfaces.d.ts +96 -13
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/session/background-task-control.d.ts +6 -0
- package/dist/services/session/background-task-control.d.ts.map +1 -1
- package/dist/services/session/background-task-control.js +31 -6
- package/dist/services/session/background-task-control.js.map +1 -1
- package/dist/services/session/background-task-liveness.d.ts +2 -18
- package/dist/services/session/background-task-liveness.d.ts.map +1 -1
- package/dist/services/session/background-task-liveness.js +7 -22
- package/dist/services/session/background-task-liveness.js.map +1 -1
- package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
- package/dist/services/session/continuation-plan-applier.js +23 -0
- package/dist/services/session/continuation-plan-applier.js.map +1 -1
- package/dist/services/session/continuation-recovery-handler.d.ts +2 -0
- package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/continuation-recovery-handler.js +7 -1
- package/dist/services/session/continuation-recovery-handler.js.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.d.ts +1 -0
- package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.js +12 -2
- package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
- package/dist/services/session/session-client-factory.d.ts +3 -1
- package/dist/services/session/session-client-factory.d.ts.map +1 -1
- package/dist/services/session/session-client-factory.js +2 -2
- package/dist/services/session/session-client-factory.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +3 -0
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +52 -8
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-stream-processor.d.ts +2 -0
- package/dist/services/session/session-stream-processor.d.ts.map +1 -1
- package/dist/services/session/session-stream-processor.js +4 -0
- package/dist/services/session/session-stream-processor.js.map +1 -1
- package/dist/services/session/terminal-result-collector.d.ts +2 -2
- package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
- package/dist/services/session/terminal-result-collector.js +2 -1
- package/dist/services/session/terminal-result-collector.js.map +1 -1
- package/dist/services/session/turn-attempt-factory.d.ts +1 -0
- package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
- package/dist/services/session/turn-attempt-factory.js.map +1 -1
- package/dist/services/session/turn-coordinator.d.ts +1 -1
- package/dist/services/session/turn-coordinator.d.ts.map +1 -1
- package/dist/services/session/turn-coordinator.js +31 -6
- 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 +48 -7
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/settings/settings-persistence.d.ts +33 -0
- package/dist/services/settings/settings-persistence.d.ts.map +1 -1
- package/dist/services/settings/settings-persistence.js +102 -4
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +70 -2
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +92 -6
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +57 -3
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +171 -28
- package/dist/services/settings/settings-service.js.map +1 -1
- package/dist/services/settings/settings-service.mock.d.ts +1 -1
- package/dist/services/settings/settings-service.mock.d.ts.map +1 -1
- package/dist/services/settings/settings-service.mock.js +3 -6
- package/dist/services/settings/settings-service.mock.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +16 -0
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +27 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +165 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -0
- package/dist/services/shell/background-shell-registry.d.ts +10 -0
- package/dist/services/shell/background-shell-registry.d.ts.map +1 -1
- package/dist/services/shell/background-shell-registry.js +9 -1
- package/dist/services/shell/background-shell-registry.js.map +1 -1
- package/dist/services/shell/background-shell-watches.d.ts +28 -3
- package/dist/services/shell/background-shell-watches.d.ts.map +1 -1
- package/dist/services/shell/background-shell-watches.js +41 -9
- package/dist/services/shell/background-shell-watches.js.map +1 -1
- package/dist/services/ssh-service.d.ts +81 -9
- package/dist/services/ssh-service.d.ts.map +1 -1
- package/dist/services/ssh-service.js +211 -37
- package/dist/services/ssh-service.js.map +1 -1
- package/dist/services/stream-event-processor.d.ts +2 -0
- package/dist/services/stream-event-processor.d.ts.map +1 -1
- package/dist/services/stream-event-processor.js +17 -7
- package/dist/services/stream-event-processor.js.map +1 -1
- package/dist/services/subagents/execution-runner.d.ts +1 -1
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +34 -22
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/foreground-subagent-lease.d.ts +11 -1
- package/dist/services/subagents/foreground-subagent-lease.d.ts.map +1 -1
- package/dist/services/subagents/foreground-subagent-lease.js +10 -1
- package/dist/services/subagents/foreground-subagent-lease.js.map +1 -1
- package/dist/services/subagents/mentor-runner.d.ts +1 -1
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +10 -3
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/nested-runner.d.ts +11 -1
- package/dist/services/subagents/nested-runner.d.ts.map +1 -1
- package/dist/services/subagents/nested-runner.js +45 -10
- package/dist/services/subagents/nested-runner.js.map +1 -1
- package/dist/services/subagents/runtime.d.ts.map +1 -1
- package/dist/services/subagents/runtime.js +7 -0
- package/dist/services/subagents/runtime.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.d.ts +4 -0
- package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
- package/dist/services/subagents/subagent-async-registry.js +80 -16
- package/dist/services/subagents/subagent-async-registry.js.map +1 -1
- package/dist/services/subagents/subagent-manager.d.ts +1 -1
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +4 -4
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +19 -1
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +22 -0
- package/dist/services/subagents/subagent-notification-store.js.map +1 -1
- package/dist/services/subagents/subagent-run-control.d.ts +9 -1
- package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
- package/dist/services/subagents/subagent-run-control.js +12 -13
- package/dist/services/subagents/subagent-run-control.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +11 -3
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/subagents/types.d.ts +25 -2
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/subagents/types.js.map +1 -1
- package/dist/services/subagents/utils.d.ts +3 -1
- package/dist/services/subagents/utils.d.ts.map +1 -1
- package/dist/services/subagents/utils.js +4 -2
- package/dist/services/subagents/utils.js.map +1 -1
- package/dist/services/workspace/active-workspace-root.d.ts +6 -0
- package/dist/services/workspace/active-workspace-root.d.ts.map +1 -1
- package/dist/services/workspace/active-workspace-root.js +22 -0
- package/dist/services/workspace/active-workspace-root.js.map +1 -1
- package/dist/test-helpers/ink-testing.d.ts.map +1 -1
- package/dist/test-helpers/ink-testing.js +4 -1
- package/dist/test-helpers/ink-testing.js.map +1 -1
- package/dist/test-helpers/terminal-e2e.d.ts.map +1 -1
- package/dist/test-helpers/terminal-e2e.js +12 -2
- package/dist/test-helpers/terminal-e2e.js.map +1 -1
- package/dist/tools/agent/activate-skill.d.ts.map +1 -1
- package/dist/tools/agent/activate-skill.js +2 -2
- package/dist/tools/agent/activate-skill.js.map +1 -1
- package/dist/tools/agent/ask-mentor.d.ts.map +1 -1
- package/dist/tools/agent/ask-mentor.js +2 -2
- package/dist/tools/agent/ask-mentor.js.map +1 -1
- package/dist/tools/agent/ask-user-constants.d.ts +2 -2
- package/dist/tools/agent/ask-user-constants.d.ts.map +1 -1
- package/dist/tools/agent/ask-user-constants.js +1 -1
- package/dist/tools/agent/ask-user-constants.js.map +1 -1
- package/dist/tools/agent/run-subagent-async.d.ts +2 -11
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent-async.js +8 -2
- package/dist/tools/agent/run-subagent-async.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +8 -9
- package/dist/tools/agent/run-subagent.js.map +1 -1
- package/dist/tools/file/apply-patch.d.ts +2 -0
- package/dist/tools/file/apply-patch.d.ts.map +1 -1
- package/dist/tools/file/apply-patch.js +58 -14
- package/dist/tools/file/apply-patch.js.map +1 -1
- package/dist/tools/file/code-context.d.ts +5 -0
- package/dist/tools/file/code-context.d.ts.map +1 -1
- package/dist/tools/file/code-context.js +18 -6
- 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 +11 -5
- package/dist/tools/file/create-file.js.map +1 -1
- package/dist/tools/file/edit-healing.d.ts +7 -0
- package/dist/tools/file/edit-healing.d.ts.map +1 -1
- package/dist/tools/file/edit-healing.js +7 -7
- package/dist/tools/file/edit-healing.js.map +1 -1
- package/dist/tools/file/glob.d.ts +3 -0
- package/dist/tools/file/glob.d.ts.map +1 -1
- package/dist/tools/file/glob.js +9 -3
- package/dist/tools/file/glob.js.map +1 -1
- package/dist/tools/file/grep.d.ts +5 -0
- package/dist/tools/file/grep.d.ts.map +1 -1
- package/dist/tools/file/grep.js +10 -6
- package/dist/tools/file/grep.js.map +1 -1
- package/dist/tools/file/patch-healing.d.ts +31 -0
- package/dist/tools/file/patch-healing.d.ts.map +1 -0
- package/dist/tools/file/patch-healing.js +231 -0
- package/dist/tools/file/patch-healing.js.map +1 -0
- package/dist/tools/file/read-file.d.ts +3 -0
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +9 -3
- package/dist/tools/file/read-file.js.map +1 -1
- package/dist/tools/file/search-replace.d.ts.map +1 -1
- package/dist/tools/file/search-replace.js +24 -6
- package/dist/tools/file/search-replace.js.map +1 -1
- package/dist/tools/format-helpers.d.ts +6 -0
- package/dist/tools/format-helpers.d.ts.map +1 -1
- package/dist/tools/format-helpers.js +23 -0
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/memory/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory/memory-tools.js +2 -2
- package/dist/tools/memory/memory-tools.js.map +1 -1
- package/dist/tools/system/shell.d.ts +16 -1
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +90 -25
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +4 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/web/web-fetch.d.ts.map +1 -1
- package/dist/tools/web/web-fetch.js +2 -2
- 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 -2
- package/dist/tools/web/web-search.js.map +1 -1
- package/dist/types/message.d.ts +1 -1
- package/dist/types/message.d.ts.map +1 -1
- package/dist/utils/ai/provider-credentials.d.ts +1 -1
- package/dist/utils/ai/provider-credentials.d.ts.map +1 -1
- package/dist/utils/ai/provider-credentials.js +18 -2
- package/dist/utils/ai/provider-credentials.js.map +1 -1
- package/dist/utils/ai/token-usage.d.ts +3 -1
- package/dist/utils/ai/token-usage.d.ts.map +1 -1
- package/dist/utils/ai/token-usage.js +7 -2
- package/dist/utils/ai/token-usage.js.map +1 -1
- package/dist/utils/apply-diff.d.ts.map +1 -1
- package/dist/utils/apply-diff.js +8 -0
- package/dist/utils/apply-diff.js.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +60 -2
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/error-helpers.d.ts.map +1 -1
- package/dist/utils/error-helpers.js +8 -0
- package/dist/utils/error-helpers.js.map +1 -1
- package/dist/utils/inject-warning-into-tool-output.d.ts +30 -0
- package/dist/utils/inject-warning-into-tool-output.d.ts.map +1 -1
- package/dist/utils/inject-warning-into-tool-output.js +39 -0
- package/dist/utils/inject-warning-into-tool-output.js.map +1 -1
- package/dist/utils/output/tty-osc.d.ts +1 -1
- package/dist/utils/output/tty-osc.js +1 -1
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +105 -6
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/execute-shell.d.ts +8 -0
- package/dist/utils/shell/execute-shell.d.ts.map +1 -1
- package/dist/utils/shell/execute-shell.js +36 -30
- package/dist/utils/shell/execute-shell.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-env.d.ts +1 -0
- package/dist/utils/shell/sandbox/sandbox-env.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-env.js +2 -0
- package/dist/utils/shell/sandbox/sandbox-env.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts +2 -0
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-policy.js +1 -1
- package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
- package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js +1 -2
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -1
- package/dist/utils/shell/shell-child-registry.d.ts +11 -0
- package/dist/utils/shell/shell-child-registry.d.ts.map +1 -0
- package/dist/utils/shell/shell-child-registry.js +40 -0
- package/dist/utils/shell/shell-child-registry.js.map +1 -0
- package/dist/utils/shell/shell-output.d.ts.map +1 -1
- package/dist/utils/shell/shell-output.js +10 -6
- package/dist/utils/shell/shell-output.js.map +1 -1
- package/dist/utils/shell/temp-sweep.d.ts +28 -0
- package/dist/utils/shell/temp-sweep.d.ts.map +1 -0
- package/dist/utils/shell/temp-sweep.js +140 -0
- package/dist/utils/shell/temp-sweep.js.map +1 -0
- package/dist/utils/streaming/extract-command-messages.d.ts +12 -5
- package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
- package/dist/utils/streaming/extract-command-messages.js +29 -33
- package/dist/utils/streaming/extract-command-messages.js.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.d.ts +8 -0
- package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.js +3 -0
- package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
- package/dist/utils/value-suggestions.d.ts +8 -0
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +71 -0
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +14 -10
- package/dist/utils/output/synchronized-output.d.ts +0 -35
- package/dist/utils/output/synchronized-output.d.ts.map +0 -1
- package/dist/utils/output/synchronized-output.js +0 -66
- package/dist/utils/output/synchronized-output.js.map +0 -1
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import envPaths from 'env-paths';
|
|
6
|
+
import { runPkceLoopbackLogin } from './oauth-pkce.js';
|
|
7
|
+
import { OAuthAccountStore } from './oauth-account-store.js';
|
|
8
|
+
import { getJwtClaims } from './jwt-claims.js';
|
|
9
|
+
import { recordSessionAccount } from './oauth-session-account.js';
|
|
10
|
+
import { ProviderReauthenticationRequiredError } from './common/provider-errors.js';
|
|
11
|
+
/**
|
|
12
|
+
* Grok (xAI) OAuth 2.0 + PKCE login and token storage.
|
|
13
|
+
*
|
|
14
|
+
* The public desktop client id, the loopback redirect, and the scope set below
|
|
15
|
+
* are the ones the official `grok` CLI registers with https://auth.x.ai. They
|
|
16
|
+
* are public by design (a native app cannot keep a secret), but the values are
|
|
17
|
+
* load-bearing: the authorization server rejects an unregistered redirect_uri
|
|
18
|
+
* or client_id outright, so do not "clean them up" into settings without
|
|
19
|
+
* re-registering.
|
|
20
|
+
*/
|
|
21
|
+
export const GROK_OIDC_ISSUER = 'https://auth.x.ai';
|
|
22
|
+
export const GROK_OIDC_CLIENT_ID = 'b1a00492-073a-47ea-816f-4c329264a828';
|
|
23
|
+
export const GROK_AUTHORIZE_ENDPOINT = `${GROK_OIDC_ISSUER}/oauth2/authorize`;
|
|
24
|
+
export const GROK_TOKEN_ENDPOINT = `${GROK_OIDC_ISSUER}/oauth2/token`;
|
|
25
|
+
/** The authorization server only accepts this exact loopback callback. */
|
|
26
|
+
export const GROK_REDIRECT_PORT = 22255;
|
|
27
|
+
export const GROK_REDIRECT_URI = `http://localhost:${GROK_REDIRECT_PORT}/callback`;
|
|
28
|
+
export const GROK_SCOPES = [
|
|
29
|
+
'openid',
|
|
30
|
+
'profile',
|
|
31
|
+
'email',
|
|
32
|
+
'offline_access',
|
|
33
|
+
'grok-cli:access',
|
|
34
|
+
'api:access',
|
|
35
|
+
'conversations:read',
|
|
36
|
+
'conversations:write',
|
|
37
|
+
];
|
|
38
|
+
/** Refresh this long before the access token's stated expiry. */
|
|
39
|
+
const REFRESH_SKEW_MS = 5 * 60 * 1000;
|
|
40
|
+
/** term2's own credential file. We never write to the grok CLI's store. */
|
|
41
|
+
export function resolveGrokAuthPath() {
|
|
42
|
+
const dir = process.env.TERM2_CONFIG_DIR || envPaths('term2').config;
|
|
43
|
+
return path.join(dir, 'grok-auth.json');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The official `grok` CLI's credential file, used read-only as a fallback so a
|
|
47
|
+
* host that already ran `grok login` works without a second login. Its store is
|
|
48
|
+
* keyed by `<issuer>::<client_id>` and holds many scopes at once.
|
|
49
|
+
*/
|
|
50
|
+
export function resolveGrokCliAuthPath() {
|
|
51
|
+
const home = process.env.GROK_HOME || (os.homedir() ? path.join(os.homedir(), '.grok') : null);
|
|
52
|
+
if (!home)
|
|
53
|
+
return null;
|
|
54
|
+
const candidate = path.join(home, 'auth.json');
|
|
55
|
+
try {
|
|
56
|
+
return fs.existsSync(candidate) && fs.statSync(candidate).isFile() ? candidate : null;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function parseExpiry(value) {
|
|
63
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
64
|
+
return value;
|
|
65
|
+
if (typeof value === 'string') {
|
|
66
|
+
const parsed = Date.parse(value);
|
|
67
|
+
if (Number.isFinite(parsed))
|
|
68
|
+
return parsed;
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Import a credential from the grok CLI's store — **the access token only.**
|
|
74
|
+
*
|
|
75
|
+
* xAI rotates refresh tokens: each refresh invalidates the one before it. If
|
|
76
|
+
* term2 carried the CLI's refresh token, the two processes would be two writers
|
|
77
|
+
* on one rotation chain and the loser would be silently logged out. So this is
|
|
78
|
+
* a one-way, short-lived grace: an already-logged-in host works immediately,
|
|
79
|
+
* and once that access token expires the user runs `term2 --grok-login` to get
|
|
80
|
+
* a rotation chain of our own.
|
|
81
|
+
*/
|
|
82
|
+
export function readGrokCliTokens(filePath) {
|
|
83
|
+
let parsed;
|
|
84
|
+
try {
|
|
85
|
+
parsed = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const entries = Object.values(parsed ?? {}).filter((entry) => entry && typeof entry === 'object' && typeof entry.key === 'string' && entry.key);
|
|
91
|
+
// Prefer an unexpired entry; a stale one is useless to us now that we cannot
|
|
92
|
+
// refresh it, but returning it still beats returning nothing when it is all
|
|
93
|
+
// the host has (the caller reports the expiry as a login prompt).
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
const isLive = (candidate) => {
|
|
96
|
+
const expiry = parseExpiry(candidate.expires_at);
|
|
97
|
+
return expiry === undefined || expiry > now;
|
|
98
|
+
};
|
|
99
|
+
const entry = entries.find(isLive) ?? entries[0];
|
|
100
|
+
if (!entry)
|
|
101
|
+
return null;
|
|
102
|
+
return {
|
|
103
|
+
access_token: entry.key,
|
|
104
|
+
expires_at: parseExpiry(entry.expires_at),
|
|
105
|
+
email: typeof entry.email === 'string' ? entry.email : undefined,
|
|
106
|
+
user_id: typeof entry.user_id === 'string' ? entry.user_id : undefined,
|
|
107
|
+
team_id: typeof entry.team_id === 'string' ? entry.team_id : undefined,
|
|
108
|
+
imported: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Names a Grok account from its credential. The id must be stable across
|
|
113
|
+
* logins to the same account, or switching would accumulate duplicates, so it
|
|
114
|
+
* prefers the immutable subject over the display email.
|
|
115
|
+
*/
|
|
116
|
+
function identifyGrokAccount(tokens) {
|
|
117
|
+
const claims = tokens.id_token ? getJwtClaims(tokens.id_token) : null;
|
|
118
|
+
const email = tokens.email || (typeof claims?.email === 'string' ? claims.email : undefined);
|
|
119
|
+
const subject = tokens.user_id || (typeof claims?.sub === 'string' ? claims.sub : undefined);
|
|
120
|
+
const fallbackId = `anon-${crypto.createHash('sha256').update(tokens.access_token).digest('hex').slice(0, 12)}`;
|
|
121
|
+
return { id: subject || email || fallbackId, label: email || subject || 'Grok account' };
|
|
122
|
+
}
|
|
123
|
+
export function createGrokAccountStore(filePath = resolveGrokAuthPath()) {
|
|
124
|
+
return new OAuthAccountStore({
|
|
125
|
+
filePath,
|
|
126
|
+
identify: identifyGrokAccount,
|
|
127
|
+
// A v1 file was a single bare credential object.
|
|
128
|
+
migrateLegacy: (body) => body && typeof body.access_token === 'string' && body.access_token
|
|
129
|
+
? { ...body, expires_at: parseExpiry(body.expires_at) }
|
|
130
|
+
: null,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/** The credential of whichever Grok account is currently selected. */
|
|
134
|
+
export function readStoredGrokTokens(filePath = resolveGrokAuthPath()) {
|
|
135
|
+
return createGrokAccountStore(filePath).getActiveTokens();
|
|
136
|
+
}
|
|
137
|
+
/** Stores a credential as an account and makes it the active one. */
|
|
138
|
+
export function saveGrokTokens(tokens, filePath = resolveGrokAuthPath()) {
|
|
139
|
+
createGrokAccountStore(filePath).upsert(tokens);
|
|
140
|
+
}
|
|
141
|
+
export function listGrokAccounts(filePath = resolveGrokAuthPath()) {
|
|
142
|
+
return createGrokAccountStore(filePath).list();
|
|
143
|
+
}
|
|
144
|
+
export function getActiveGrokAccount(filePath = resolveGrokAuthPath()) {
|
|
145
|
+
return createGrokAccountStore(filePath).getActive();
|
|
146
|
+
}
|
|
147
|
+
export function setActiveGrokAccount(accountId, filePath = resolveGrokAuthPath()) {
|
|
148
|
+
return createGrokAccountStore(filePath).setActive(accountId);
|
|
149
|
+
}
|
|
150
|
+
export function removeGrokAccount(accountId, filePath = resolveGrokAuthPath()) {
|
|
151
|
+
return createGrokAccountStore(filePath).remove(accountId);
|
|
152
|
+
}
|
|
153
|
+
/** True when term2 or the grok CLI has a usable Grok credential on this host. */
|
|
154
|
+
export function hasGrokLogin() {
|
|
155
|
+
if (readStoredGrokTokens())
|
|
156
|
+
return true;
|
|
157
|
+
const cliPath = resolveGrokCliAuthPath();
|
|
158
|
+
const imported = cliPath ? readGrokCliTokens(cliPath) : null;
|
|
159
|
+
// An imported token cannot be refreshed, so an expired one is not a login.
|
|
160
|
+
return Boolean(imported && (imported.expires_at === undefined || imported.expires_at > Date.now()));
|
|
161
|
+
}
|
|
162
|
+
function toTokens(body, previous) {
|
|
163
|
+
const rawExpiresIn = body?.expires_in;
|
|
164
|
+
const expiresIn = typeof rawExpiresIn === 'number'
|
|
165
|
+
? rawExpiresIn
|
|
166
|
+
: typeof rawExpiresIn === 'string'
|
|
167
|
+
? Number(rawExpiresIn)
|
|
168
|
+
: undefined;
|
|
169
|
+
const expiresAt = Number.isFinite(expiresIn)
|
|
170
|
+
? Date.now() + expiresIn * 1000
|
|
171
|
+
: previous?.expires_at;
|
|
172
|
+
return {
|
|
173
|
+
access_token: body?.access_token,
|
|
174
|
+
refresh_token: body?.refresh_token || previous?.refresh_token,
|
|
175
|
+
id_token: body?.id_token || previous?.id_token,
|
|
176
|
+
expires_at: expiresAt,
|
|
177
|
+
email: previous?.email ?? claimedEmail(body?.id_token),
|
|
178
|
+
user_id: previous?.user_id ?? claimedSubject(body?.id_token),
|
|
179
|
+
team_id: previous?.team_id,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
function claimedEmail(idToken) {
|
|
183
|
+
const claims = typeof idToken === 'string' ? getJwtClaims(idToken) : null;
|
|
184
|
+
return typeof claims?.email === 'string' ? claims.email : undefined;
|
|
185
|
+
}
|
|
186
|
+
function claimedSubject(idToken) {
|
|
187
|
+
const claims = typeof idToken === 'string' ? getJwtClaims(idToken) : null;
|
|
188
|
+
return typeof claims?.sub === 'string' ? claims.sub : undefined;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Resolves a live access token, refreshing it when it is expired or close to
|
|
192
|
+
* expiring. Concurrent callers share one refresh so the single-use refresh
|
|
193
|
+
* token is not spent twice.
|
|
194
|
+
*/
|
|
195
|
+
export class GrokTokenManager {
|
|
196
|
+
activeRefresh = null;
|
|
197
|
+
/**
|
|
198
|
+
* The account this manager resolved first, held for its whole lifetime.
|
|
199
|
+
*
|
|
200
|
+
* Selecting a different account in the UI changes the store's active pointer,
|
|
201
|
+
* but a running session keeps authenticating as whoever it started as —
|
|
202
|
+
* provider response chaining is bound to that identity, so swapping it
|
|
203
|
+
* mid-session would break the chain.
|
|
204
|
+
*/
|
|
205
|
+
pinnedAccountId = null;
|
|
206
|
+
fetchImpl;
|
|
207
|
+
authPath;
|
|
208
|
+
cliAuthPathResolver;
|
|
209
|
+
constructor(options) {
|
|
210
|
+
this.fetchImpl = options?.fetchImpl || globalThis.fetch;
|
|
211
|
+
this.authPath = options?.authPath || resolveGrokAuthPath();
|
|
212
|
+
this.cliAuthPathResolver = options?.cliAuthPathResolver || resolveGrokCliAuthPath;
|
|
213
|
+
}
|
|
214
|
+
load() {
|
|
215
|
+
const store = createGrokAccountStore(this.authPath);
|
|
216
|
+
const pinned = this.pinnedAccountId ? store.get(this.pinnedAccountId) : null;
|
|
217
|
+
// Falls back to the active account if the pinned one was signed out.
|
|
218
|
+
const account = pinned ?? store.getActive();
|
|
219
|
+
if (account) {
|
|
220
|
+
this.pinnedAccountId = account.id;
|
|
221
|
+
recordSessionAccount('grok', account.id);
|
|
222
|
+
return account.tokens;
|
|
223
|
+
}
|
|
224
|
+
const cliPath = this.cliAuthPathResolver();
|
|
225
|
+
return cliPath ? readGrokCliTokens(cliPath) : null;
|
|
226
|
+
}
|
|
227
|
+
/** The account id this session is authenticating as, once it has resolved one. */
|
|
228
|
+
getPinnedAccountId() {
|
|
229
|
+
return this.pinnedAccountId;
|
|
230
|
+
}
|
|
231
|
+
async getOrRefreshAccessToken() {
|
|
232
|
+
const tokens = this.load();
|
|
233
|
+
if (!tokens) {
|
|
234
|
+
throw new ProviderReauthenticationRequiredError('Not logged in to Grok. Run `term2 --grok-login` (or `grok login`) first.');
|
|
235
|
+
}
|
|
236
|
+
const expiringSoon = tokens.expires_at !== undefined && Date.now() + REFRESH_SKEW_MS >= tokens.expires_at;
|
|
237
|
+
if (!expiringSoon)
|
|
238
|
+
return tokens.access_token;
|
|
239
|
+
if (!tokens.refresh_token) {
|
|
240
|
+
throw new ProviderReauthenticationRequiredError(tokens.imported
|
|
241
|
+
? 'The access token imported from the `grok` CLI has expired. Run `term2 --grok-login` so term2 holds its own credential.'
|
|
242
|
+
: 'Grok access token expired and no refresh token is stored. Run `term2 --grok-login` again.');
|
|
243
|
+
}
|
|
244
|
+
if (this.activeRefresh)
|
|
245
|
+
return this.activeRefresh;
|
|
246
|
+
this.activeRefresh = (async () => {
|
|
247
|
+
try {
|
|
248
|
+
const response = await this.fetchImpl(GROK_TOKEN_ENDPOINT, {
|
|
249
|
+
method: 'POST',
|
|
250
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
251
|
+
body: new URLSearchParams({
|
|
252
|
+
grant_type: 'refresh_token',
|
|
253
|
+
refresh_token: tokens.refresh_token,
|
|
254
|
+
client_id: GROK_OIDC_CLIENT_ID,
|
|
255
|
+
}).toString(),
|
|
256
|
+
});
|
|
257
|
+
if (!response.ok) {
|
|
258
|
+
throw new Error(`Grok token refresh failed with status ${response.status}`);
|
|
259
|
+
}
|
|
260
|
+
const body = await response.json();
|
|
261
|
+
if (!body?.access_token) {
|
|
262
|
+
throw new Error('Grok refresh response did not contain access_token');
|
|
263
|
+
}
|
|
264
|
+
const refreshed = toTokens(body, tokens);
|
|
265
|
+
// Refresh the account this session is pinned to, not whichever the
|
|
266
|
+
// user has since selected.
|
|
267
|
+
const store = createGrokAccountStore(this.authPath);
|
|
268
|
+
// Cross-process guard: if another term2 instance already refreshed
|
|
269
|
+
// this account with the same single-use refresh_token, its write
|
|
270
|
+
// will have changed the stored refresh_token. Don't overwrite it.
|
|
271
|
+
const current = this.pinnedAccountId
|
|
272
|
+
? store.get(this.pinnedAccountId)?.tokens
|
|
273
|
+
: store.getActive()?.tokens;
|
|
274
|
+
if (current?.refresh_token && current.refresh_token !== tokens.refresh_token) {
|
|
275
|
+
return current.access_token;
|
|
276
|
+
}
|
|
277
|
+
if (this.pinnedAccountId)
|
|
278
|
+
store.updateTokens(this.pinnedAccountId, refreshed);
|
|
279
|
+
else
|
|
280
|
+
store.updateActiveTokens(refreshed);
|
|
281
|
+
return refreshed.access_token;
|
|
282
|
+
}
|
|
283
|
+
finally {
|
|
284
|
+
this.activeRefresh = null;
|
|
285
|
+
}
|
|
286
|
+
})();
|
|
287
|
+
return this.activeRefresh;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
export const GROK_PKCE_CONFIG = {
|
|
291
|
+
label: 'Grok',
|
|
292
|
+
clientId: GROK_OIDC_CLIENT_ID,
|
|
293
|
+
authorizeEndpoint: GROK_AUTHORIZE_ENDPOINT,
|
|
294
|
+
tokenEndpoint: GROK_TOKEN_ENDPOINT,
|
|
295
|
+
redirectPorts: [GROK_REDIRECT_PORT],
|
|
296
|
+
redirectUriFor: () => GROK_REDIRECT_URI,
|
|
297
|
+
callbackPath: '/callback',
|
|
298
|
+
scopes: GROK_SCOPES,
|
|
299
|
+
portConflictHint: 'often a running `grok login`',
|
|
300
|
+
};
|
|
301
|
+
/**
|
|
302
|
+
* Runs the browser OAuth + PKCE flow and persists the resulting tokens into
|
|
303
|
+
* term2's own store. Resolves only after the human finishes in the browser.
|
|
304
|
+
*/
|
|
305
|
+
export async function loginToGrok(options) {
|
|
306
|
+
const body = await runPkceLoopbackLogin(GROK_PKCE_CONFIG, {
|
|
307
|
+
fetchImpl: options?.fetchImpl,
|
|
308
|
+
openBrowser: options?.openBrowser,
|
|
309
|
+
onPrompt: options?.onPrompt,
|
|
310
|
+
signal: options?.signal,
|
|
311
|
+
});
|
|
312
|
+
const tokens = toTokens(body);
|
|
313
|
+
saveGrokTokens(tokens, options?.authPath ?? resolveGrokAuthPath());
|
|
314
|
+
return tokens;
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=grok-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-auth.js","sourceRoot":"","sources":["../../source/providers/grok-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** One product's share of the credit period, as a percentage of the whole. */
|
|
2
|
+
export interface GrokProductUsage {
|
|
3
|
+
readonly product: string;
|
|
4
|
+
readonly usagePercent: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The credit meter for the current period.
|
|
8
|
+
*
|
|
9
|
+
* Note this is a *percentage consumed of a period*, not a request or token
|
|
10
|
+
* allowance — there is no "requests remaining" to report, and the period is
|
|
11
|
+
* weekly rather than the rolling windows Codex reports.
|
|
12
|
+
*/
|
|
13
|
+
export interface GrokCreditUsage {
|
|
14
|
+
/** Percentage of the period's credit consumed, 0-100. */
|
|
15
|
+
readonly creditUsagePercent: number;
|
|
16
|
+
/** End of the current credit period, as epoch milliseconds. */
|
|
17
|
+
readonly periodEndMs?: number;
|
|
18
|
+
/** Per-product split. Empty when the provider sends none. */
|
|
19
|
+
readonly productUsage: readonly GrokProductUsage[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Extracts the meter from a `?format=credits` body, or returns null when the
|
|
23
|
+
* response doesn't carry one.
|
|
24
|
+
*
|
|
25
|
+
* `creditUsagePercent` is the only required field: the period and the product
|
|
26
|
+
* split are presentation extras, and a body missing them is still worth
|
|
27
|
+
* showing. A body missing the percentage is not, so it is treated as no data
|
|
28
|
+
* rather than as zero usage — reporting 0% when we simply failed to read the
|
|
29
|
+
* number would be worse than showing nothing.
|
|
30
|
+
*/
|
|
31
|
+
export declare const parseGrokCreditUsage: (body: unknown) => GrokCreditUsage | null;
|
|
32
|
+
/** Raised when the provider rejects the token, so the caller can stop asking. */
|
|
33
|
+
export declare class GrokCreditUsageUnauthorizedError extends Error {
|
|
34
|
+
constructor();
|
|
35
|
+
}
|
|
36
|
+
/** Raised when the provider asks us to back off, carrying its own delay. */
|
|
37
|
+
export declare class GrokCreditUsageRateLimitedError extends Error {
|
|
38
|
+
readonly retryAfterMs: number | undefined;
|
|
39
|
+
constructor(retryAfterMs: number | undefined);
|
|
40
|
+
}
|
|
41
|
+
export interface FetchGrokCreditUsageOptions {
|
|
42
|
+
readonly accessToken: string;
|
|
43
|
+
readonly fetchImpl?: typeof fetch;
|
|
44
|
+
readonly baseUrl?: string;
|
|
45
|
+
readonly signal?: AbortSignal;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Fetches the credit meter. Returns null when the response is well-formed but
|
|
49
|
+
* carries no meter; throws for transport and status failures so the caller can
|
|
50
|
+
* distinguish "nothing to show" from "ask again later".
|
|
51
|
+
*/
|
|
52
|
+
export declare const fetchGrokCreditUsage: ({ accessToken, fetchImpl, baseUrl, signal, }: FetchGrokCreditUsageOptions) => Promise<GrokCreditUsage | null>;
|
|
53
|
+
//# sourceMappingURL=grok-credit-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-credit-usage.d.ts","sourceRoot":"","sources":["../../source/providers/grok-credit-usage.ts"],"names":[],"mappings":"AAgBA,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACpD;AA0BD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,SAAU,OAAO,KAAG,eAAe,GAAG,IAetE,CAAC;AAEF,iFAAiF;AACjF,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,cAGC;CACF;AAED,4EAA4E;AAC5E,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1C,YAAY,YAAY,EAAE,MAAM,GAAG,SAAS,EAI3C;CACF;AAUD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,iDAK9B,2BAA2B,KAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAiB9D,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads Grok's credit-usage meter — the number the official `grok` CLI shows
|
|
3
|
+
* under `/usage`.
|
|
4
|
+
*
|
|
5
|
+
* This does not come from the inference lane. Grok's Responses stream carries
|
|
6
|
+
* no quota frame (unlike Codex, which pushes `codex.rate_limits` mid-stream),
|
|
7
|
+
* and the proxy returns no rate-limit response headers. The meter lives behind
|
|
8
|
+
* a separate REST call on the same host, and nothing fetches it unless we ask.
|
|
9
|
+
*
|
|
10
|
+
* Endpoint and shape were established against the live proxy on 2026-08-21:
|
|
11
|
+
* a bearer token alone is accepted, `?format=credits` selects the weekly
|
|
12
|
+
* percentage view (omitting it returns monthly billing totals instead), and an
|
|
13
|
+
* unauthenticated call returns a clean 401.
|
|
14
|
+
*/
|
|
15
|
+
import { GROK_BASE_URL } from './grok.provider.js';
|
|
16
|
+
const asRecord = (value) => value && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
17
|
+
const asFiniteNumber = (value) => typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
18
|
+
const parseTimestampMs = (value) => {
|
|
19
|
+
if (typeof value !== 'string' || !value)
|
|
20
|
+
return undefined;
|
|
21
|
+
const parsed = Date.parse(value);
|
|
22
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
23
|
+
};
|
|
24
|
+
const parseProductUsage = (value) => {
|
|
25
|
+
if (!Array.isArray(value))
|
|
26
|
+
return [];
|
|
27
|
+
const parsed = [];
|
|
28
|
+
for (const entry of value) {
|
|
29
|
+
const record = asRecord(entry);
|
|
30
|
+
const usagePercent = asFiniteNumber(record?.usagePercent);
|
|
31
|
+
const product = typeof record?.product === 'string' ? record.product : undefined;
|
|
32
|
+
if (product && usagePercent !== undefined)
|
|
33
|
+
parsed.push({ product, usagePercent });
|
|
34
|
+
}
|
|
35
|
+
return parsed;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Extracts the meter from a `?format=credits` body, or returns null when the
|
|
39
|
+
* response doesn't carry one.
|
|
40
|
+
*
|
|
41
|
+
* `creditUsagePercent` is the only required field: the period and the product
|
|
42
|
+
* split are presentation extras, and a body missing them is still worth
|
|
43
|
+
* showing. A body missing the percentage is not, so it is treated as no data
|
|
44
|
+
* rather than as zero usage — reporting 0% when we simply failed to read the
|
|
45
|
+
* number would be worse than showing nothing.
|
|
46
|
+
*/
|
|
47
|
+
export const parseGrokCreditUsage = (body) => {
|
|
48
|
+
const config = asRecord(asRecord(body)?.config);
|
|
49
|
+
if (!config)
|
|
50
|
+
return null;
|
|
51
|
+
const creditUsagePercent = asFiniteNumber(config.creditUsagePercent);
|
|
52
|
+
if (creditUsagePercent === undefined)
|
|
53
|
+
return null;
|
|
54
|
+
const currentPeriod = asRecord(config.currentPeriod);
|
|
55
|
+
const periodEndMs = parseTimestampMs(currentPeriod?.end) ?? parseTimestampMs(config.billingPeriodEnd);
|
|
56
|
+
return {
|
|
57
|
+
creditUsagePercent,
|
|
58
|
+
...(periodEndMs !== undefined ? { periodEndMs } : {}),
|
|
59
|
+
productUsage: parseProductUsage(config.productUsage),
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
/** Raised when the provider rejects the token, so the caller can stop asking. */
|
|
63
|
+
export class GrokCreditUsageUnauthorizedError extends Error {
|
|
64
|
+
constructor() {
|
|
65
|
+
super('Grok rejected the credentials for the credit-usage endpoint.');
|
|
66
|
+
this.name = 'GrokCreditUsageUnauthorizedError';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Raised when the provider asks us to back off, carrying its own delay. */
|
|
70
|
+
export class GrokCreditUsageRateLimitedError extends Error {
|
|
71
|
+
retryAfterMs;
|
|
72
|
+
constructor(retryAfterMs) {
|
|
73
|
+
super('Grok rate-limited the credit-usage endpoint.');
|
|
74
|
+
this.name = 'GrokCreditUsageRateLimitedError';
|
|
75
|
+
this.retryAfterMs = retryAfterMs;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const parseRetryAfterMs = (value) => {
|
|
79
|
+
if (!value)
|
|
80
|
+
return undefined;
|
|
81
|
+
const seconds = Number(value.trim());
|
|
82
|
+
if (Number.isFinite(seconds) && seconds >= 0)
|
|
83
|
+
return seconds * 1000;
|
|
84
|
+
const dateMs = Date.parse(value.trim());
|
|
85
|
+
return Number.isNaN(dateMs) ? undefined : Math.max(0, dateMs - Date.now());
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Fetches the credit meter. Returns null when the response is well-formed but
|
|
89
|
+
* carries no meter; throws for transport and status failures so the caller can
|
|
90
|
+
* distinguish "nothing to show" from "ask again later".
|
|
91
|
+
*/
|
|
92
|
+
export const fetchGrokCreditUsage = async ({ accessToken, fetchImpl = globalThis.fetch, baseUrl = GROK_BASE_URL, signal, }) => {
|
|
93
|
+
const response = await fetchImpl(`${baseUrl}/billing?format=credits`, {
|
|
94
|
+
headers: { authorization: `Bearer ${accessToken}`, accept: 'application/json' },
|
|
95
|
+
...(signal ? { signal } : {}),
|
|
96
|
+
});
|
|
97
|
+
if (response.status === 401 || response.status === 403) {
|
|
98
|
+
throw new GrokCreditUsageUnauthorizedError();
|
|
99
|
+
}
|
|
100
|
+
if (response.status === 429) {
|
|
101
|
+
throw new GrokCreditUsageRateLimitedError(parseRetryAfterMs(response.headers.get('retry-after')));
|
|
102
|
+
}
|
|
103
|
+
if (!response.ok) {
|
|
104
|
+
throw new Error(`Grok credit-usage request failed with HTTP ${response.status}.`);
|
|
105
|
+
}
|
|
106
|
+
return parseGrokCreditUsage(await response.json());
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=grok-credit-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-credit-usage.js","sourceRoot":"","sources":["../../source/providers/grok-credit-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ProviderDeps, ProviderFetch } from './registry.js';
|
|
2
|
+
import { GrokTokenManager } from './grok-auth.js';
|
|
3
|
+
import type { StreamedModelTurn } from '../contracts/streamed-model-turn.js';
|
|
4
|
+
/**
|
|
5
|
+
* Grok subscription access goes through the CLI chat proxy, not the metered
|
|
6
|
+
* public xAI API: an OAuth access token is only accepted here. The proxy speaks
|
|
7
|
+
* OpenAI chat completions.
|
|
8
|
+
*/
|
|
9
|
+
export declare const GROK_BASE_URL = "https://cli-chat-proxy.grok.com/v1";
|
|
10
|
+
export declare const DEFAULT_GROK_MODEL = "grok-4.6";
|
|
11
|
+
/**
|
|
12
|
+
* The proxy hard-rejects requests whose client version it does not recognise
|
|
13
|
+
* (HTTP 426), so this header is required, not cosmetic. Raise it when the proxy
|
|
14
|
+
* starts refusing this floor.
|
|
15
|
+
*/
|
|
16
|
+
export declare const GROK_CLIENT_VERSION = "1.0.5";
|
|
17
|
+
export declare function buildGrokFetch(deps: ProviderDeps, tokenManager: GrokTokenManager, defaultModel: string): typeof fetch;
|
|
18
|
+
export declare function fetchGrokModels(deps: ProviderDeps, fetchImpl?: ProviderFetch): Promise<Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
default_reasoning_level?: string;
|
|
22
|
+
}>>;
|
|
23
|
+
export declare function createGrokStreamedModel(model: string, deps: ProviderDeps): StreamedModelTurn;
|
|
24
|
+
//# sourceMappingURL=grok.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok.provider.d.ts","sourceRoot":"","sources":["../../source/providers/grok.provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAWjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,aAAa,uCAAuC,CAAC;AAClE,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,UAAU,CAAC;AA8D3C,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,KAAK,CAarH;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,YAAY,EAClB,SAAS,GAAE,aAAqB,GAC/B,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA8BjF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,iBAAiB,CAgC5F"}
|