@deepseek-harness-tui/dsh-tui 0.13.0 → 0.14.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/README.md +85 -5
- package/assets/claude-girl/claude-girl-happy.png +0 -0
- package/assets/claude-girl/claude-girl.png +0 -0
- package/assets/codex-girl/codex-girl-happy.png +0 -0
- package/assets/codex-girl/codex-girl.png +0 -0
- package/bin/dsh-tui.js +104 -18
- package/cordis.patch.yml +2 -0
- package/cordis.yml +2 -0
- package/guide/dsh-tui-guide/SKILL.md +4 -2
- package/guide/dsh-tui-guide/claude-backend.en.md +203 -0
- package/guide/dsh-tui-guide/claude-backend.md +161 -0
- package/guide/dsh-tui-guide/codex-backend.en.md +297 -0
- package/guide/dsh-tui-guide/codex-backend.md +257 -0
- package/guide/dsh-tui-guide/configuration.en.md +9 -2
- package/guide/dsh-tui-guide/configuration.md +9 -2
- package/guide/dsh-tui-guide/interaction.en.md +169 -27
- package/guide/dsh-tui-guide/interaction.md +115 -17
- package/guide/dsh-tui-guide/themes.en.md +24 -2
- package/guide/dsh-tui-guide/themes.md +21 -2
- package/guide/dsh-tui-guide/user-guide.en.md +38 -23
- package/guide/dsh-tui-guide/user-guide.md +22 -11
- package/guide/dsh-tui-guide/vscode.en.md +1 -0
- package/guide/dsh-tui-guide/vscode.md +1 -0
- package/lib/settings.json +139 -6
- package/lib/types/adapter/channel/state.d.ts.map +1 -1
- package/lib/types/adapter/channel/state.js +1 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +17 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +29 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui.js +45 -5
- package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-display.d.ts +7 -1
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-session.d.ts +5 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +20 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +183 -6
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +477 -13
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/agent/backend.d.ts +168 -0
- package/lib/types/agent/backend.d.ts.map +1 -0
- package/lib/types/agent/backend.js +1 -0
- package/lib/types/agent/capabilities.d.ts +461 -0
- package/lib/types/agent/capabilities.d.ts.map +1 -0
- package/lib/types/agent/capabilities.js +1 -0
- package/lib/types/agent/events.d.ts +733 -0
- package/lib/types/agent/events.d.ts.map +1 -0
- package/lib/types/agent/events.js +2 -0
- package/lib/types/agent/index.d.ts +8 -0
- package/lib/types/agent/index.d.ts.map +1 -0
- package/lib/types/agent/index.js +7 -0
- package/lib/types/agent/messages.d.ts +52 -0
- package/lib/types/agent/messages.d.ts.map +1 -0
- package/lib/types/agent/messages.js +91 -0
- package/lib/types/agent/presentation.d.ts +29 -0
- package/lib/types/agent/presentation.d.ts.map +1 -0
- package/lib/types/agent/presentation.js +4 -0
- package/lib/types/agent/refs.d.ts +30 -0
- package/lib/types/agent/refs.d.ts.map +1 -0
- package/lib/types/agent/refs.js +39 -0
- package/lib/types/agent/session.d.ts +78 -0
- package/lib/types/agent/session.d.ts.map +1 -0
- package/lib/types/agent/session.js +1 -0
- package/lib/types/backends/claude/activity.d.ts +53 -0
- package/lib/types/backends/claude/activity.d.ts.map +1 -0
- package/lib/types/backends/claude/activity.js +103 -0
- package/lib/types/backends/claude/auth.d.ts +245 -0
- package/lib/types/backends/claude/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/auth.js +503 -0
- package/lib/types/backends/claude/backend.d.ts +32 -0
- package/lib/types/backends/claude/backend.d.ts.map +1 -0
- package/lib/types/backends/claude/backend.js +296 -0
- package/lib/types/backends/claude/catalog.d.ts +17 -0
- package/lib/types/backends/claude/catalog.d.ts.map +1 -0
- package/lib/types/backends/claude/catalog.js +94 -0
- package/lib/types/backends/claude/channels.d.ts +63 -0
- package/lib/types/backends/claude/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/channels.js +275 -0
- package/lib/types/backends/claude/contract.d.ts +37 -0
- package/lib/types/backends/claude/contract.d.ts.map +1 -0
- package/lib/types/backends/claude/contract.js +46 -0
- package/lib/types/backends/claude/controls.d.ts +134 -0
- package/lib/types/backends/claude/controls.d.ts.map +1 -0
- package/lib/types/backends/claude/controls.js +425 -0
- package/lib/types/backends/claude/dialogs.d.ts +62 -0
- package/lib/types/backends/claude/dialogs.d.ts.map +1 -0
- package/lib/types/backends/claude/dialogs.js +253 -0
- package/lib/types/backends/claude/flag-settings.d.ts +12 -0
- package/lib/types/backends/claude/flag-settings.d.ts.map +1 -0
- package/lib/types/backends/claude/flag-settings.js +49 -0
- package/lib/types/backends/claude/images.d.ts +49 -0
- package/lib/types/backends/claude/images.d.ts.map +1 -0
- package/lib/types/backends/claude/images.js +94 -0
- package/lib/types/backends/claude/index.d.ts +5 -0
- package/lib/types/backends/claude/index.d.ts.map +1 -0
- package/lib/types/backends/claude/index.js +4 -0
- package/lib/types/backends/claude/install.d.ts +15 -0
- package/lib/types/backends/claude/install.d.ts.map +1 -0
- package/lib/types/backends/claude/install.js +91 -0
- package/lib/types/backends/claude/modelEnv.d.ts +64 -0
- package/lib/types/backends/claude/modelEnv.d.ts.map +1 -0
- package/lib/types/backends/claude/modelEnv.js +199 -0
- package/lib/types/backends/claude/narrow.d.ts +10 -0
- package/lib/types/backends/claude/narrow.d.ts.map +1 -0
- package/lib/types/backends/claude/narrow.js +8 -0
- package/lib/types/backends/claude/older-history.d.ts +16 -0
- package/lib/types/backends/claude/older-history.d.ts.map +1 -0
- package/lib/types/backends/claude/older-history.js +101 -0
- package/lib/types/backends/claude/options.d.ts +181 -0
- package/lib/types/backends/claude/options.d.ts.map +1 -0
- package/lib/types/backends/claude/options.js +208 -0
- package/lib/types/backends/claude/permissions.d.ts +83 -0
- package/lib/types/backends/claude/permissions.d.ts.map +1 -0
- package/lib/types/backends/claude/permissions.js +331 -0
- package/lib/types/backends/claude/prefs.d.ts +55 -0
- package/lib/types/backends/claude/prefs.d.ts.map +1 -0
- package/lib/types/backends/claude/prefs.js +150 -0
- package/lib/types/backends/claude/process.d.ts +19 -0
- package/lib/types/backends/claude/process.d.ts.map +1 -0
- package/lib/types/backends/claude/process.js +156 -0
- package/lib/types/backends/claude/replay.d.ts +129 -0
- package/lib/types/backends/claude/replay.d.ts.map +1 -0
- package/lib/types/backends/claude/replay.js +505 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts +23 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk-warnings.js +55 -0
- package/lib/types/backends/claude/sdk.d.ts +12 -0
- package/lib/types/backends/claude/sdk.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk.js +34 -0
- package/lib/types/backends/claude/send-message.d.ts +54 -0
- package/lib/types/backends/claude/send-message.d.ts.map +1 -0
- package/lib/types/backends/claude/send-message.js +65 -0
- package/lib/types/backends/claude/session/auth.d.ts +47 -0
- package/lib/types/backends/claude/session/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/session/auth.js +226 -0
- package/lib/types/backends/claude/session/channels.d.ts +82 -0
- package/lib/types/backends/claude/session/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/session/channels.js +45 -0
- package/lib/types/backends/claude/session/input.d.ts +16 -0
- package/lib/types/backends/claude/session/input.d.ts.map +1 -0
- package/lib/types/backends/claude/session/input.js +64 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts +6 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -0
- package/lib/types/backends/claude/session/lifecycle.js +852 -0
- package/lib/types/backends/claude/session/store.d.ts +17 -0
- package/lib/types/backends/claude/session/store.d.ts.map +1 -0
- package/lib/types/backends/claude/session/store.js +122 -0
- package/lib/types/backends/claude/session/subagents.d.ts +13 -0
- package/lib/types/backends/claude/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/claude/session/subagents.js +77 -0
- package/lib/types/backends/claude/session/types.d.ts +89 -0
- package/lib/types/backends/claude/session/types.d.ts.map +1 -0
- package/lib/types/backends/claude/session/types.js +1 -0
- package/lib/types/backends/claude/session.d.ts +4 -0
- package/lib/types/backends/claude/session.d.ts.map +1 -0
- package/lib/types/backends/claude/session.js +2 -0
- package/lib/types/backends/claude/side-query.d.ts +34 -0
- package/lib/types/backends/claude/side-query.d.ts.map +1 -0
- package/lib/types/backends/claude/side-query.js +116 -0
- package/lib/types/backends/claude/task-output.d.ts +13 -0
- package/lib/types/backends/claude/task-output.d.ts.map +1 -0
- package/lib/types/backends/claude/task-output.js +101 -0
- package/lib/types/backends/claude/tools.d.ts +45 -0
- package/lib/types/backends/claude/tools.d.ts.map +1 -0
- package/lib/types/backends/claude/tools.js +231 -0
- package/lib/types/backends/claude/transcript-file.d.ts +41 -0
- package/lib/types/backends/claude/transcript-file.d.ts.map +1 -0
- package/lib/types/backends/claude/transcript-file.js +195 -0
- package/lib/types/backends/claude/translate/attempts.d.ts +33 -0
- package/lib/types/backends/claude/translate/attempts.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/attempts.js +243 -0
- package/lib/types/backends/claude/translate/content.d.ts +33 -0
- package/lib/types/backends/claude/translate/content.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/content.js +91 -0
- package/lib/types/backends/claude/translate/core.d.ts +76 -0
- package/lib/types/backends/claude/translate/core.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/core.js +447 -0
- package/lib/types/backends/claude/translate/events.d.ts +9 -0
- package/lib/types/backends/claude/translate/events.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/events.js +77 -0
- package/lib/types/backends/claude/translate/lanes.d.ts +31 -0
- package/lib/types/backends/claude/translate/lanes.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/lanes.js +177 -0
- package/lib/types/backends/claude/translate/messages.d.ts +36 -0
- package/lib/types/backends/claude/translate/messages.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/messages.js +202 -0
- package/lib/types/backends/claude/translate/system.d.ts +40 -0
- package/lib/types/backends/claude/translate/system.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/system.js +399 -0
- package/lib/types/backends/claude/translate/tasks.d.ts +19 -0
- package/lib/types/backends/claude/translate/tasks.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/tasks.js +159 -0
- package/lib/types/backends/claude/translate/types.d.ts +114 -0
- package/lib/types/backends/claude/translate/types.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/types.js +1 -0
- package/lib/types/backends/claude/translate.d.ts +9 -0
- package/lib/types/backends/claude/translate.d.ts.map +1 -0
- package/lib/types/backends/claude/translate.js +6 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts +66 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/external-tokens.js +325 -0
- package/lib/types/backends/codex/auth/route.d.ts +14 -0
- package/lib/types/backends/codex/auth/route.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/route.js +52 -0
- package/lib/types/backends/codex/auth/status.d.ts +16 -0
- package/lib/types/backends/codex/auth/status.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/status.js +115 -0
- package/lib/types/backends/codex/backend.d.ts +58 -0
- package/lib/types/backends/codex/backend.d.ts.map +1 -0
- package/lib/types/backends/codex/backend.js +201 -0
- package/lib/types/backends/codex/catalog.d.ts +17 -0
- package/lib/types/backends/codex/catalog.d.ts.map +1 -0
- package/lib/types/backends/codex/catalog.js +128 -0
- package/lib/types/backends/codex/channels.d.ts +59 -0
- package/lib/types/backends/codex/channels.d.ts.map +1 -0
- package/lib/types/backends/codex/channels.js +274 -0
- package/lib/types/backends/codex/contract.d.ts +46 -0
- package/lib/types/backends/codex/contract.d.ts.map +1 -0
- package/lib/types/backends/codex/contract.js +80 -0
- package/lib/types/backends/codex/detect.d.ts +14 -0
- package/lib/types/backends/codex/detect.d.ts.map +1 -0
- package/lib/types/backends/codex/detect.js +90 -0
- package/lib/types/backends/codex/index.d.ts +6 -0
- package/lib/types/backends/codex/index.d.ts.map +1 -0
- package/lib/types/backends/codex/index.js +5 -0
- package/lib/types/backends/codex/modes.d.ts +16 -0
- package/lib/types/backends/codex/modes.d.ts.map +1 -0
- package/lib/types/backends/codex/modes.js +49 -0
- package/lib/types/backends/codex/narrow.d.ts +20 -0
- package/lib/types/backends/codex/narrow.d.ts.map +1 -0
- package/lib/types/backends/codex/narrow.js +18 -0
- package/lib/types/backends/codex/prefs.d.ts +42 -0
- package/lib/types/backends/codex/prefs.d.ts.map +1 -0
- package/lib/types/backends/codex/prefs.js +124 -0
- package/lib/types/backends/codex/protocol/index.d.ts +149 -0
- package/lib/types/backends/codex/protocol/index.d.ts.map +1 -0
- package/lib/types/backends/codex/protocol/index.js +130 -0
- package/lib/types/backends/codex/rpc/binary.d.ts +35 -0
- package/lib/types/backends/codex/rpc/binary.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/binary.js +174 -0
- package/lib/types/backends/codex/rpc/client.d.ts +72 -0
- package/lib/types/backends/codex/rpc/client.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/client.js +214 -0
- package/lib/types/backends/codex/rpc/hub.d.ts +105 -0
- package/lib/types/backends/codex/rpc/hub.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/hub.js +532 -0
- package/lib/types/backends/codex/rpc/transport.d.ts +39 -0
- package/lib/types/backends/codex/rpc/transport.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/transport.js +212 -0
- package/lib/types/backends/codex/session/activity.d.ts +18 -0
- package/lib/types/backends/codex/session/activity.d.ts.map +1 -0
- package/lib/types/backends/codex/session/activity.js +108 -0
- package/lib/types/backends/codex/session/approvals.d.ts +39 -0
- package/lib/types/backends/codex/session/approvals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/approvals.js +477 -0
- package/lib/types/backends/codex/session/commands.d.ts +37 -0
- package/lib/types/backends/codex/session/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/session/commands.js +141 -0
- package/lib/types/backends/codex/session/controls.d.ts +37 -0
- package/lib/types/backends/codex/session/controls.d.ts.map +1 -0
- package/lib/types/backends/codex/session/controls.js +303 -0
- package/lib/types/backends/codex/session/goals.d.ts +25 -0
- package/lib/types/backends/codex/session/goals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/goals.js +97 -0
- package/lib/types/backends/codex/session/history.d.ts +52 -0
- package/lib/types/backends/codex/session/history.d.ts.map +1 -0
- package/lib/types/backends/codex/session/history.js +196 -0
- package/lib/types/backends/codex/session/images.d.ts +17 -0
- package/lib/types/backends/codex/session/images.d.ts.map +1 -0
- package/lib/types/backends/codex/session/images.js +138 -0
- package/lib/types/backends/codex/session/input.d.ts +75 -0
- package/lib/types/backends/codex/session/input.d.ts.map +1 -0
- package/lib/types/backends/codex/session/input.js +294 -0
- package/lib/types/backends/codex/session/plan-review.d.ts +19 -0
- package/lib/types/backends/codex/session/plan-review.d.ts.map +1 -0
- package/lib/types/backends/codex/session/plan-review.js +48 -0
- package/lib/types/backends/codex/session/prompts.d.ts +7 -0
- package/lib/types/backends/codex/session/prompts.d.ts.map +1 -0
- package/lib/types/backends/codex/session/prompts.js +47 -0
- package/lib/types/backends/codex/session/session.d.ts +12 -0
- package/lib/types/backends/codex/session/session.d.ts.map +1 -0
- package/lib/types/backends/codex/session/session.js +871 -0
- package/lib/types/backends/codex/session/side-query.d.ts +25 -0
- package/lib/types/backends/codex/session/side-query.d.ts.map +1 -0
- package/lib/types/backends/codex/session/side-query.js +121 -0
- package/lib/types/backends/codex/session/state.d.ts +57 -0
- package/lib/types/backends/codex/session/state.d.ts.map +1 -0
- package/lib/types/backends/codex/session/state.js +1 -0
- package/lib/types/backends/codex/session/subagents.d.ts +28 -0
- package/lib/types/backends/codex/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/codex/session/subagents.js +286 -0
- package/lib/types/backends/codex/session/tasks.d.ts +25 -0
- package/lib/types/backends/codex/session/tasks.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tasks.js +207 -0
- package/lib/types/backends/codex/session/tool-output.d.ts +9 -0
- package/lib/types/backends/codex/session/tool-output.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tool-output.js +29 -0
- package/lib/types/backends/codex/translate/commands.d.ts +30 -0
- package/lib/types/backends/codex/translate/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/commands.js +103 -0
- package/lib/types/backends/codex/translate/events.d.ts +9 -0
- package/lib/types/backends/codex/translate/events.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/events.js +71 -0
- package/lib/types/backends/codex/translate/items.d.ts +112 -0
- package/lib/types/backends/codex/translate/items.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/items.js +375 -0
- package/lib/types/backends/codex/translate/live.d.ts +39 -0
- package/lib/types/backends/codex/translate/live.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/live.js +315 -0
- package/lib/types/backends/codex/translate/notices.d.ts +27 -0
- package/lib/types/backends/codex/translate/notices.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/notices.js +99 -0
- package/lib/types/backends/codex/translate/presentation.d.ts +49 -0
- package/lib/types/backends/codex/translate/presentation.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/presentation.js +237 -0
- package/lib/types/backends/codex/translate/replay.d.ts +18 -0
- package/lib/types/backends/codex/translate/replay.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/replay.js +33 -0
- package/lib/types/backends/codex/translate/usage.d.ts +29 -0
- package/lib/types/backends/codex/translate/usage.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/usage.js +65 -0
- package/lib/types/backends/shared/atomic-file.d.ts +4 -0
- package/lib/types/backends/shared/atomic-file.d.ts.map +1 -0
- package/lib/types/backends/shared/atomic-file.js +52 -0
- package/lib/types/backends/shared/channel-tokens.d.ts +29 -0
- package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -0
- package/lib/types/backends/shared/channel-tokens.js +161 -0
- package/lib/types/backends/shared/display-path.d.ts +3 -0
- package/lib/types/backends/shared/display-path.d.ts.map +1 -0
- package/lib/types/backends/shared/display-path.js +12 -0
- package/lib/types/branding.d.ts +92 -0
- package/lib/types/branding.d.ts.map +1 -0
- package/lib/types/branding.js +117 -0
- package/lib/types/channel/activity.d.ts +53 -0
- package/lib/types/channel/activity.d.ts.map +1 -0
- package/lib/types/channel/activity.js +955 -0
- package/lib/types/channel/capabilities.d.ts +24 -0
- package/lib/types/channel/capabilities.d.ts.map +1 -0
- package/lib/types/channel/capabilities.js +57 -0
- package/lib/types/channel/channel-slug.d.ts +9 -0
- package/lib/types/channel/channel-slug.d.ts.map +1 -0
- package/lib/types/channel/channel-slug.js +15 -0
- package/lib/types/channel/channel-wizard.d.ts +30 -0
- package/lib/types/channel/channel-wizard.d.ts.map +1 -0
- package/lib/types/channel/channel-wizard.js +226 -0
- package/lib/types/channel/elicitation.d.ts +135 -0
- package/lib/types/channel/elicitation.d.ts.map +1 -0
- package/lib/types/channel/elicitation.js +360 -0
- package/lib/types/channel/goal-command.d.ts +49 -0
- package/lib/types/channel/goal-command.d.ts.map +1 -0
- package/lib/types/channel/goal-command.js +72 -0
- package/lib/types/channel/history-restore.d.ts +16 -0
- package/lib/types/channel/history-restore.d.ts.map +1 -0
- package/lib/types/channel/history-restore.js +214 -0
- package/lib/types/channel/interaction.d.ts +38 -0
- package/lib/types/channel/interaction.d.ts.map +1 -0
- package/lib/types/channel/interaction.js +110 -0
- package/lib/types/channel/job-format.d.ts +6 -0
- package/lib/types/channel/job-format.d.ts.map +1 -0
- package/lib/types/channel/job-format.js +12 -0
- package/lib/types/channel/live-output.d.ts +35 -0
- package/lib/types/channel/live-output.d.ts.map +1 -0
- package/lib/types/channel/live-output.js +74 -0
- package/lib/types/channel/model-capabilities.d.ts +10 -0
- package/lib/types/channel/model-capabilities.d.ts.map +1 -0
- package/lib/types/channel/model-capabilities.js +51 -0
- package/lib/types/channel/permissions.d.ts +155 -0
- package/lib/types/channel/permissions.d.ts.map +1 -0
- package/lib/types/channel/permissions.js +188 -0
- package/lib/types/channel/projection.d.ts +110 -0
- package/lib/types/channel/projection.d.ts.map +1 -0
- package/lib/types/channel/projection.js +1521 -0
- package/lib/types/channel/question-record.d.ts +76 -0
- package/lib/types/channel/question-record.d.ts.map +1 -0
- package/lib/types/channel/question-record.js +109 -0
- package/lib/types/channel/questions.d.ts +204 -0
- package/lib/types/channel/questions.d.ts.map +1 -0
- package/lib/types/channel/questions.js +286 -0
- package/lib/types/channel/sanitize.d.ts +49 -0
- package/lib/types/channel/sanitize.d.ts.map +1 -0
- package/lib/types/channel/sanitize.js +88 -0
- package/lib/types/channel/selection-record.d.ts +18 -0
- package/lib/types/channel/selection-record.d.ts.map +1 -0
- package/lib/types/channel/selection-record.js +45 -0
- package/lib/types/channel/side-prompts.d.ts +59 -0
- package/lib/types/channel/side-prompts.d.ts.map +1 -0
- package/lib/types/channel/side-prompts.js +127 -0
- package/lib/types/channel/transcript.d.ts +17 -0
- package/lib/types/channel/transcript.d.ts.map +1 -0
- package/lib/types/channel/transcript.js +19 -0
- package/lib/types/channel/usage.d.ts +48 -0
- package/lib/types/channel/usage.d.ts.map +1 -0
- package/lib/types/channel/usage.js +143 -0
- package/lib/types/commands.d.ts +147 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +196 -2
- package/lib/types/components/AgentMessageComposer.d.ts +50 -0
- package/lib/types/components/AgentMessageComposer.d.ts.map +1 -0
- package/lib/types/components/AgentMessageComposer.js +159 -0
- package/lib/types/components/BtwPanel.d.ts +13 -12
- package/lib/types/components/BtwPanel.d.ts.map +1 -1
- package/lib/types/components/BtwPanel.js +35 -24
- package/lib/types/components/ChannelPicker.d.ts +40 -0
- package/lib/types/components/ChannelPicker.d.ts.map +1 -0
- package/lib/types/components/ChannelPicker.js +26 -0
- package/lib/types/components/Chat/JobCard.d.ts +29 -31
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +31 -112
- package/lib/types/components/Chat/SubagentMessage.d.ts +4 -1
- package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -1
- package/lib/types/components/Chat/SubagentMessage.js +10 -3
- package/lib/types/components/ClaudeGirl.d.ts +27 -0
- package/lib/types/components/ClaudeGirl.d.ts.map +1 -0
- package/lib/types/components/ClaudeGirl.js +30 -0
- package/lib/types/components/CodeBlockFrame.d.ts +19 -0
- package/lib/types/components/CodeBlockFrame.d.ts.map +1 -0
- package/lib/types/components/CodeBlockFrame.js +138 -0
- package/lib/types/components/CommandSuggestions.d.ts +10 -1
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +20 -3
- package/lib/types/components/ContextBarView.d.ts +2 -2
- package/lib/types/components/ContextBarView.d.ts.map +1 -1
- package/lib/types/components/ContextBarView.js +18 -8
- package/lib/types/components/EffortChargeGlyph.d.ts +1 -1
- package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -1
- package/lib/types/components/EffortChargeGlyph.js +3 -4
- package/lib/types/components/EffortInputBorder.d.ts +1 -2
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
- package/lib/types/components/EffortInputBorder.js +7 -4
- package/lib/types/components/EffortSlider.d.ts +5 -1
- package/lib/types/components/EffortSlider.d.ts.map +1 -1
- package/lib/types/components/EffortSlider.js +2 -2
- package/lib/types/components/EffortTierBadge.d.ts +1 -2
- package/lib/types/components/EffortTierBadge.d.ts.map +1 -1
- package/lib/types/components/EffortTierBadge.js +8 -5
- package/lib/types/components/GoalTodoPanel.d.ts +2 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +11 -5
- package/lib/types/components/InlineMathParagraph.js +1 -1
- package/lib/types/components/JobsPanel.d.ts +8 -9
- package/lib/types/components/JobsPanel.d.ts.map +1 -1
- package/lib/types/components/JobsPanel.js +72 -13
- package/lib/types/components/KernelPicker.d.ts +28 -0
- package/lib/types/components/KernelPicker.d.ts.map +1 -0
- package/lib/types/components/KernelPicker.js +37 -0
- package/lib/types/components/LogoV2.d.ts +7 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +120 -24
- package/lib/types/components/Markdown.d.ts +2 -1
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +37 -8
- package/lib/types/components/MathBlock.d.ts.map +1 -1
- package/lib/types/components/MathBlock.js +3 -1
- package/lib/types/components/MermaidDiagram.d.ts.map +1 -1
- package/lib/types/components/MermaidDiagram.js +7 -5
- package/lib/types/components/MessageList.d.ts +21 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +62 -42
- package/lib/types/components/ModePicker.d.ts +20 -0
- package/lib/types/components/ModePicker.d.ts.map +1 -0
- package/lib/types/components/ModePicker.js +17 -0
- package/lib/types/components/PromptInput.d.ts +2 -2
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +308 -55
- package/lib/types/components/SdkInstallWizard.d.ts +44 -0
- package/lib/types/components/SdkInstallWizard.d.ts.map +1 -0
- package/lib/types/components/SdkInstallWizard.js +18 -0
- package/lib/types/components/SearchBox.d.ts +7 -8
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +18 -9
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +113 -6
- package/lib/types/components/StarPrompt.d.ts.map +1 -1
- package/lib/types/components/StarPrompt.js +5 -3
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +6 -4
- package/lib/types/components/SubagentCard.d.ts +2 -1
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +25 -18
- package/lib/types/components/SubagentDashboard.d.ts +10 -6
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +32 -21
- package/lib/types/components/SubagentDetailScene.d.ts +16 -1
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
- package/lib/types/components/SubagentDetailScene.js +196 -45
- package/lib/types/components/SyntaxText.d.ts.map +1 -1
- package/lib/types/components/SyntaxText.js +4 -1
- package/lib/types/components/TurnInterruptedRow.d.ts +3 -1
- package/lib/types/components/TurnInterruptedRow.d.ts.map +1 -1
- package/lib/types/components/TurnInterruptedRow.js +6 -3
- package/lib/types/components/TurnUsageRow.d.ts +24 -0
- package/lib/types/components/TurnUsageRow.d.ts.map +1 -0
- package/lib/types/components/TurnUsageRow.js +46 -0
- package/lib/types/components/WorkingSpinner.d.ts +2 -1
- package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
- package/lib/types/components/WorkingSpinner.js +21 -4
- package/lib/types/components/approvals/ApprovalPanel.d.ts +36 -13
- package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
- package/lib/types/components/approvals/ApprovalPanel.js +173 -25
- package/lib/types/components/claudeGirlSprite.d.ts +18 -0
- package/lib/types/components/claudeGirlSprite.d.ts.map +1 -0
- package/lib/types/components/claudeGirlSprite.js +48 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +46 -13
- package/lib/types/components/design-system/ThemedText.d.ts +3 -1
- package/lib/types/components/design-system/ThemedText.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedText.js +2 -2
- package/lib/types/components/diffPatch.d.ts +55 -0
- package/lib/types/components/diffPatch.d.ts.map +1 -0
- package/lib/types/components/diffPatch.js +142 -0
- package/lib/types/components/kernelCatalog.d.ts +48 -0
- package/lib/types/components/kernelCatalog.d.ts.map +1 -0
- package/lib/types/components/kernelCatalog.js +53 -0
- package/lib/types/components/launchpadActions.d.ts +13 -6
- package/lib/types/components/launchpadActions.d.ts.map +1 -1
- package/lib/types/components/launchpadActions.js +26 -4
- package/lib/types/components/launchpadParams.d.ts +101 -0
- package/lib/types/components/launchpadParams.d.ts.map +1 -0
- package/lib/types/components/launchpadParams.js +171 -0
- package/lib/types/components/maidPortrait.d.ts +37 -5
- package/lib/types/components/maidPortrait.d.ts.map +1 -1
- package/lib/types/components/maidPortrait.js +73 -54
- package/lib/types/components/messages/AgentMessageFlow.d.ts +20 -0
- package/lib/types/components/messages/AgentMessageFlow.d.ts.map +1 -0
- package/lib/types/components/messages/AgentMessageFlow.js +37 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +6 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +29 -5
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +11 -2
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +289 -36
- package/lib/types/components/messages/TranscriptLeaves.d.ts +85 -0
- package/lib/types/components/messages/TranscriptLeaves.d.ts.map +1 -0
- package/lib/types/components/messages/TranscriptLeaves.js +74 -0
- package/lib/types/components/messages/agentTeam.d.ts +69 -0
- package/lib/types/components/messages/agentTeam.d.ts.map +1 -0
- package/lib/types/components/messages/agentTeam.js +53 -0
- package/lib/types/components/messages/liveOutputLines.d.ts +33 -0
- package/lib/types/components/messages/liveOutputLines.d.ts.map +1 -0
- package/lib/types/components/messages/liveOutputLines.js +100 -0
- package/lib/types/components/messages/subagentTranscript.d.ts +146 -0
- package/lib/types/components/messages/subagentTranscript.d.ts.map +1 -0
- package/lib/types/components/messages/subagentTranscript.js +304 -0
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +16 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +76 -6
- package/lib/types/components/questions/PlanReviewPanel.d.ts +8 -3
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +11 -6
- package/lib/types/components/questions/ProviderModelEditor.d.ts +12 -0
- package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -0
- package/lib/types/components/questions/ProviderModelEditor.js +266 -0
- package/lib/types/components/shimmer.d.ts +26 -0
- package/lib/types/components/shimmer.d.ts.map +1 -1
- package/lib/types/components/shimmer.js +26 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/InfoPanel.js +13 -8
- package/lib/types/components/sidePanel/PanelBar.d.ts +0 -24
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelBar.js +55 -77
- package/lib/types/components/sidePanel/PanelStore.d.ts +3 -1
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelStore.js +8 -4
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +3 -10
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +9 -12
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/TrajectoryPanel.js +78 -14
- package/lib/types/components/sidePanel/agentViewStore.d.ts +20 -0
- package/lib/types/components/sidePanel/agentViewStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/agentViewStore.js +26 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +50 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.js +45 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +13 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +147 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +14 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +131 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +30 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +87 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts +111 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/threads.js +302 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
- package/lib/types/components/sidePanel/builtinPanels.js +70 -30
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +4 -46
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +19 -55
- package/lib/types/components/sidePanel/companion/mood.d.ts +32 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/mood.js +44 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts +34 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/skins.js +203 -29
- package/lib/types/components/splashFonts.d.ts +17 -9
- package/lib/types/components/splashFonts.d.ts.map +1 -1
- package/lib/types/components/splashFonts.js +119 -15
- package/lib/types/components/splashLayout.d.ts.map +1 -1
- package/lib/types/components/splashLayout.js +3 -1
- package/lib/types/components/subagentDetailMemory.d.ts +17 -0
- package/lib/types/components/subagentDetailMemory.d.ts.map +1 -0
- package/lib/types/components/subagentDetailMemory.js +28 -0
- package/lib/types/components/trajectory/Inspector.d.ts.map +1 -1
- package/lib/types/components/trajectory/Inspector.js +9 -0
- package/lib/types/components/trajectory/Ledger.d.ts.map +1 -1
- package/lib/types/components/trajectory/Ledger.js +7 -1
- package/lib/types/components/trajectory/scope.d.ts +64 -0
- package/lib/types/components/trajectory/scope.d.ts.map +1 -0
- package/lib/types/components/trajectory/scope.js +88 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts +42 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts.map +1 -0
- package/lib/types/components/trajectory/useTrajectoryScope.js +86 -0
- package/lib/types/customTheme.d.ts +4 -6
- package/lib/types/customTheme.d.ts.map +1 -1
- package/lib/types/customTheme.js +6 -8
- package/lib/types/dsh-adapter/approvals.d.ts +18 -5
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +17 -4
- package/lib/types/dsh-adapter/backend/session.d.ts +64 -0
- package/lib/types/dsh-adapter/backend/session.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/session.js +291 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts +58 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/translate.js +467 -0
- package/lib/types/dsh-adapter/backends.d.ts +49 -0
- package/lib/types/dsh-adapter/backends.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backends.js +124 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +16 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +109 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +7 -5
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +19 -9
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +58 -135
- package/lib/types/dsh-adapter/channel/binding.d.ts +61 -14
- package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding.js +102 -35
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +33 -4
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +3 -2
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/composer-images.js +4 -3
- package/lib/types/dsh-adapter/channel/core/actions.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/actions.js +152 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +145 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.js +289 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts +217 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/compose.js +938 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts +57 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/files.js +45 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts +55 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/host.js +116 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.js +117 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-images.js +147 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts +12 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/reports.js +77 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.js +219 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +174 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.js +390 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/sessions.js +268 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts +4 -3
- package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/decisions.js +4 -4
- package/lib/types/dsh-adapter/channel/emitter.d.ts +15 -2
- package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/emitter.js +5 -3
- package/lib/types/dsh-adapter/channel/extensions.d.ts +36 -0
- package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/extensions.js +714 -0
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts +1 -10
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/ide-selection.js +4 -46
- package/lib/types/dsh-adapter/channel/input-actions.d.ts +27 -4
- package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-actions.js +240 -21
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +21 -5
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +65 -27
- package/lib/types/dsh-adapter/channel/local-actions.d.ts +10 -32
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/local-actions.js +10 -78
- package/lib/types/dsh-adapter/channel/local-fs.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/local-fs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/local-fs.js +46 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.js +38 -5
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +9 -6
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +16 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +16 -13
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +38 -1143
- package/lib/types/dsh-adapter/channel/question-record.d.ts +3 -75
- package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/question-record.js +3 -107
- package/lib/types/dsh-adapter/channel/session-activity.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/session-activity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-activity.js +42 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-adoption.js +3 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.js +2 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +7 -3
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -9
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +4 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +5 -10
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +74 -113
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-rewind.js +7 -6
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +8 -7
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.js +2 -2
- package/lib/types/dsh-adapter/channel/state.d.ts +72 -1
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +7 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +58 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +153 -9
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts +114 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.js +279 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +7 -15
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +17 -21
- package/lib/types/dsh-adapter/channel/types.d.ts +16 -7
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts +3 -23
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.js +5 -111
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/workspace-actions.js +2 -1
- package/lib/types/dsh-adapter/channel.d.ts +17 -8
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +24 -1059
- package/lib/types/dsh-adapter/context-occupancy.d.ts +6 -1
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
- package/lib/types/dsh-adapter/context-occupancy.js +6 -1
- package/lib/types/dsh-adapter/decision-guard.d.ts +24 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/decision-guard.js +44 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +4 -1
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extension-events.js +22 -10
- package/lib/types/dsh-adapter/index.d.ts +41 -3
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +28 -1
- package/lib/types/dsh-adapter/jobs.d.ts +5 -3
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +53 -14
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -16
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +3 -29
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts +34 -0
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth-credential-source.js +66 -0
- package/lib/types/dsh-adapter/plugin.d.ts +38 -2
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +546 -110
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts +10 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts.map +1 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.js +80 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts +8 -2
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +118 -52
- package/lib/types/dsh-adapter/questions.d.ts +29 -124
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +33 -267
- package/lib/types/dsh-adapter/recap.d.ts +3 -15
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
- package/lib/types/dsh-adapter/recap.js +3 -46
- package/lib/types/dsh-adapter/sanitize.d.ts +4 -44
- package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sanitize.js +4 -84
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +3 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.js +4 -2
- package/lib/types/dsh-adapter/sessions/digest.d.ts +18 -3
- package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/digest.js +60 -27
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +6 -4
- package/lib/types/dsh-adapter/sessions/recovery.d.ts +2 -2
- package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/recovery.js +23 -14
- package/lib/types/dsh-adapter/sessions/store.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/store.js +1 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +3 -13
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +7 -0
- package/lib/types/dsh-adapter/themes.d.ts +1 -1
- package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts +84 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.js +601 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +31 -1
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/guards.js +28 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts +3 -1
- package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/index.js +1 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +7 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/inspect.js +70 -2
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +4 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.js +36 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts +13 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
- package/lib/types/effortPrefs.d.ts +7 -0
- package/lib/types/effortPrefs.d.ts.map +1 -1
- package/lib/types/effortPrefs.js +11 -2
- package/lib/types/handoffAck.d.ts +57 -0
- package/lib/types/handoffAck.d.ts.map +1 -0
- package/lib/types/handoffAck.js +154 -0
- package/lib/types/handoffEvents.d.ts +52 -0
- package/lib/types/handoffEvents.d.ts.map +1 -0
- package/lib/types/handoffEvents.js +128 -0
- package/lib/types/i18n.d.ts +3189 -68
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +855 -9
- package/lib/types/ink/colorize.d.ts.map +1 -1
- package/lib/types/ink/colorize.js +8 -2
- package/lib/types/ink/components/AlternateScreen.d.ts +12 -1
- package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -1
- package/lib/types/ink/components/AlternateScreen.js +25 -4
- package/lib/types/ink/components/App.d.ts +5 -1
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +52 -5
- package/lib/types/ink/components/Image.d.ts +8 -1
- package/lib/types/ink/components/Image.d.ts.map +1 -1
- package/lib/types/ink/components/Image.js +2 -2
- package/lib/types/ink/components/Text.d.ts +8 -1
- package/lib/types/ink/components/Text.d.ts.map +1 -1
- package/lib/types/ink/components/Text.js +11 -1
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/ink/dom.js +75 -3
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.js +9 -4
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +8 -2
- package/lib/types/ink/kitty-graphics.d.ts +7 -2
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +15 -7
- package/lib/types/ink/node-cache.d.ts +15 -1
- package/lib/types/ink/node-cache.d.ts.map +1 -1
- package/lib/types/ink/node-cache.js +4 -1
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +2 -0
- package/lib/types/ink/parse-keypress.d.ts +13 -0
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +438 -19
- package/lib/types/ink/reconciler.d.ts.map +1 -1
- package/lib/types/ink/reconciler.js +9 -0
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +200 -4
- package/lib/types/ink/render-stats.d.ts +35 -0
- package/lib/types/ink/render-stats.d.ts.map +1 -0
- package/lib/types/ink/render-stats.js +53 -0
- package/lib/types/ink/sixel-codec.d.ts +11 -1
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +10 -3
- package/lib/types/ink/sixel-graphics.js +2 -2
- package/lib/types/ink/styles.d.ts +46 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +7 -0
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.d.ts +1 -1
- package/lib/types/ink/terminal-querier.js +4 -4
- package/lib/types/ink/text-decoration.d.ts +49 -0
- package/lib/types/ink/text-decoration.d.ts.map +1 -0
- package/lib/types/ink/text-decoration.js +235 -0
- package/lib/types/ink/update-overflow-guard.d.ts +9 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +41 -0
- package/lib/types/ink/wrap-text.d.ts.map +1 -1
- package/lib/types/ink/wrap-text.js +5 -1
- package/lib/types/kernelPrefs.d.ts +51 -0
- package/lib/types/kernelPrefs.d.ts.map +1 -0
- package/lib/types/kernelPrefs.js +126 -0
- package/lib/types/modelRecents.d.ts +10 -2
- package/lib/types/modelRecents.d.ts.map +1 -1
- package/lib/types/modelRecents.js +20 -7
- package/lib/types/screens/AgentTranscriptScene.d.ts +42 -0
- package/lib/types/screens/AgentTranscriptScene.d.ts.map +1 -0
- package/lib/types/screens/AgentTranscriptScene.js +269 -0
- package/lib/types/screens/Chat.d.ts +45 -7
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +625 -113
- package/lib/types/screens/Launchpad.d.ts +24 -7
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +147 -28
- package/lib/types/screens/SessionSupervisor.d.ts +3 -3
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +69 -5
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +211 -7
- package/lib/types/screens/StatusLine.d.ts +40 -1
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +131 -19
- package/lib/types/screens/StatusMetrics.d.ts +53 -17
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +141 -30
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/screens/TrajectoryScene.js +74 -12
- package/lib/types/screens/chat/backendCommands.d.ts +37 -0
- package/lib/types/screens/chat/backendCommands.d.ts.map +1 -0
- package/lib/types/screens/chat/backendCommands.js +51 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts +20 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts.map +1 -0
- package/lib/types/screens/chat/useBackendChannels.js +117 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts +23 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -0
- package/lib/types/screens/chat/useKernelPicker.js +72 -0
- package/lib/types/screens/chatOverlay.d.ts +32 -2
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +9 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useForeignSessions.js +5 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +14 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -22
- package/lib/types/sessionHistory.d.ts +18 -1
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +46 -4
- package/lib/types/sessionPins.d.ts +7 -0
- package/lib/types/sessionPins.d.ts.map +1 -1
- package/lib/types/sessionPins.js +9 -0
- package/lib/types/sessions/resumeFailure.d.ts.map +1 -1
- package/lib/types/sessions/resumeFailure.js +2 -1
- package/lib/types/settings/definitions.d.ts +74 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +50 -4
- package/lib/types/terminal-utils/hyperlink.d.ts +2 -2
- package/lib/types/terminal-utils/hyperlink.d.ts.map +1 -1
- package/lib/types/terminal-utils/hyperlink.js +21 -4
- package/lib/types/terminal-utils/markdown.d.ts +34 -6
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
- package/lib/types/terminal-utils/markdown.js +257 -66
- package/lib/types/theme.d.ts +49 -8
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +514 -18
- package/lib/types/tips.js +2 -2
- package/lib/types/trajectory/effortIgnition.d.ts +25 -7
- package/lib/types/trajectory/effortIgnition.d.ts.map +1 -1
- package/lib/types/trajectory/effortIgnition.js +106 -34
- package/lib/types/trajectory/window.d.ts +26 -0
- package/lib/types/trajectory/window.d.ts.map +1 -0
- package/lib/types/trajectory/window.js +27 -0
- package/lib/types/tuiDisplayPrefs.d.ts +38 -1
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +45 -1
- package/lib/types/update.d.ts +88 -3
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +285 -18
- package/lib/types/utils/crashDetail.d.ts +56 -0
- package/lib/types/utils/crashDetail.d.ts.map +1 -0
- package/lib/types/utils/crashDetail.js +175 -0
- package/lib/types/utils/imageResize.d.ts +9 -23
- package/lib/types/utils/imageResize.d.ts.map +1 -1
- package/lib/types/utils/imageResize.js +24 -20
- package/lib/types/utils/inputPaste.d.ts +9 -8
- package/lib/types/utils/inputPaste.d.ts.map +1 -1
- package/lib/types/utils/inputPaste.js +53 -16
- package/lib/types/utils/jsonl.d.ts +24 -0
- package/lib/types/utils/jsonl.d.ts.map +1 -0
- package/lib/types/utils/jsonl.js +36 -0
- package/package.json +18 -2
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** /login's three methods over the shared question UI. API-key answers go
|
|
2
|
+
* directly to auth; events contain only the secret question and settlement. */
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import { t } from '../../../i18n.js';
|
|
5
|
+
import { CODEX_OAUTH_PROVIDER } from './external-tokens.js';
|
|
6
|
+
export function createCodexAuthCapability(runtime, emit) {
|
|
7
|
+
const pending = new Map();
|
|
8
|
+
let disposed = false;
|
|
9
|
+
let running;
|
|
10
|
+
const settle = (id, answers) => {
|
|
11
|
+
const resolve = pending.get(id);
|
|
12
|
+
if (resolve === undefined)
|
|
13
|
+
return false;
|
|
14
|
+
pending.delete(id);
|
|
15
|
+
emit([{ type: 'question.settled', requestId: id }]);
|
|
16
|
+
resolve(answers);
|
|
17
|
+
return true;
|
|
18
|
+
};
|
|
19
|
+
const ask = (question) => {
|
|
20
|
+
const id = 'codex-login:' + randomUUID();
|
|
21
|
+
const answer = disposed ? Promise.resolve(undefined) : new Promise(resolve => {
|
|
22
|
+
pending.set(id, resolve);
|
|
23
|
+
emit([{ type: 'question.request', request: { requestId: id, questions: [question] } }]);
|
|
24
|
+
});
|
|
25
|
+
return { answer, withdraw: () => { settle(id); } };
|
|
26
|
+
};
|
|
27
|
+
const notice = (level, text) => {
|
|
28
|
+
if (!disposed)
|
|
29
|
+
emit([{ type: 'notice', level, key: 'codex-login', text }]);
|
|
30
|
+
};
|
|
31
|
+
const login = async (loginOAuth) => {
|
|
32
|
+
if (disposed)
|
|
33
|
+
return;
|
|
34
|
+
if (runtime.source === 'channel') {
|
|
35
|
+
notice('warning', t('codex-auth-channel-active'));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const methods = [
|
|
39
|
+
...(loginOAuth === undefined ? [] : [{ id: 'oauth', label: t('codex-login-oauth'), description: t('codex-login-oauth-desc') }]),
|
|
40
|
+
{ id: 'device', label: t('codex-login-device'), description: t('codex-login-device-desc') },
|
|
41
|
+
{ id: 'api-key', label: t('codex-login-api-key'), description: t('codex-login-api-key-storage') },
|
|
42
|
+
];
|
|
43
|
+
const selection = await ask({ header: 'Codex', question: t('codex-login-choose'), options: methods.map(({ label, description }) => ({ label, description })), hideCustomInput: true }).answer;
|
|
44
|
+
const label = selection?.answers[0]?.selected[0];
|
|
45
|
+
const method = methods.find(row => row.label === label)?.id;
|
|
46
|
+
if (disposed || method === undefined)
|
|
47
|
+
return;
|
|
48
|
+
try {
|
|
49
|
+
if (method === 'oauth') {
|
|
50
|
+
if (!runtime.route.firstParty) {
|
|
51
|
+
notice('warning', t('codex-auth-route-blocked'));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (await loginOAuth?.() !== true || disposed)
|
|
55
|
+
return;
|
|
56
|
+
await runtime.reconnect();
|
|
57
|
+
notice(runtime.source === 'dsh-auth' ? 'info' : 'error', t(runtime.source === 'dsh-auth' ? 'codex-login-success' : 'codex-auth-login-failed'));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (method === 'api-key') {
|
|
61
|
+
const answers = await ask({ header: 'Codex', question: t('codex-login-api-key-prompt'), detail: t('codex-login-api-key-storage'), options: [], secret: true }).answer;
|
|
62
|
+
if (answers === undefined || disposed)
|
|
63
|
+
return;
|
|
64
|
+
const apiKey = answers.answers[0]?.custom;
|
|
65
|
+
if (apiKey === undefined || apiKey.trim() === '') {
|
|
66
|
+
notice('warning', t('codex-auth-api-key-required'));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
await runtime.apiKeyLogin(apiKey);
|
|
70
|
+
notice('info', t('codex-login-success'));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const device = await runtime.deviceLogin();
|
|
74
|
+
if (disposed) {
|
|
75
|
+
await device.cancel();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const prompt = ask({ header: 'Codex', question: t('codex-login-device-code', { code: device.userCode }), detail: t('codex-login-device-wait'), link: device.verificationUrl, options: [{ label: t('codex-login-cancel') }], hideCustomInput: true });
|
|
79
|
+
const outcome = await Promise.race([
|
|
80
|
+
device.done.then(success => ({ kind: 'done', success })),
|
|
81
|
+
prompt.answer.then(() => ({ kind: 'cancel' })),
|
|
82
|
+
]);
|
|
83
|
+
if (outcome.kind === 'cancel')
|
|
84
|
+
await device.cancel();
|
|
85
|
+
else {
|
|
86
|
+
prompt.withdraw();
|
|
87
|
+
notice(outcome.success ? 'info' : 'error', t(outcome.success ? 'codex-login-success' : 'codex-auth-login-failed'));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
notice('error', t('codex-auth-login-failed'));
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
return {
|
|
95
|
+
capability: {
|
|
96
|
+
oauthProvider: CODEX_OAUTH_PROVIDER,
|
|
97
|
+
status: () => runtime.status(),
|
|
98
|
+
reconnect: () => runtime.reconnect(),
|
|
99
|
+
login: loginOAuth => {
|
|
100
|
+
if (running === undefined)
|
|
101
|
+
running = login(loginOAuth).finally(() => { running = undefined; });
|
|
102
|
+
return running;
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
respondQuestion: (id, answers) => settle(id, answers),
|
|
106
|
+
cancelQuestion: id => settle(id),
|
|
107
|
+
withdrawAll() { for (const id of pending.keys())
|
|
108
|
+
settle(id); },
|
|
109
|
+
dispose() {
|
|
110
|
+
for (const id of pending.keys())
|
|
111
|
+
settle(id);
|
|
112
|
+
disposed = true;
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Codex backend (docs/codex-backend-design.md §5.5): detection, opening
|
|
3
|
+
* a thread (create or resume) on the process-wide app-server hub, and the
|
|
4
|
+
* launcher's per-backend session markers.
|
|
5
|
+
*
|
|
6
|
+
* The child runs the user's own `codex` with the user's own `CODEX_HOME`
|
|
7
|
+
* (D6): their config, instructions, MCP servers, provider and login apply
|
|
8
|
+
* as in the official client, and threads are shared with it. dsh-tui's
|
|
9
|
+
* choices (start mode, model, effort) travel per thread as request
|
|
10
|
+
* parameters; nothing is written into Codex's configuration.
|
|
11
|
+
*/
|
|
12
|
+
import type { AgentBackend, BackendHost, OpenTarget } from '../../agent/backend.js';
|
|
13
|
+
import type { AgentSession } from '../../agent/session.js';
|
|
14
|
+
import { type CodexAuthRuntime } from './auth/external-tokens.js';
|
|
15
|
+
import { type CodexChannels, type CodexChannelsRuntime } from './channels.js';
|
|
16
|
+
import type { ChannelTokenStore } from '../shared/channel-tokens.js';
|
|
17
|
+
import { type Rec } from './narrow.js';
|
|
18
|
+
import { type CodexPrefs } from './prefs.js';
|
|
19
|
+
import { type CodexExecutable } from './rpc/binary.js';
|
|
20
|
+
import { type CodexHub, type CodexHubDeps } from './rpc/hub.js';
|
|
21
|
+
import { type RpcClock } from './rpc/client.js';
|
|
22
|
+
/** Structural until the neutral BackendHost addition is merged; the shared
|
|
23
|
+
* ChannelTokenStore interface is the real host read/write/erase/declared seam. */
|
|
24
|
+
export type CodexBackendHost = BackendHost & {
|
|
25
|
+
readonly tokenStore?: ChannelTokenStore;
|
|
26
|
+
};
|
|
27
|
+
export interface CodexRuntime {
|
|
28
|
+
readonly hub: CodexHub;
|
|
29
|
+
readonly release: () => void;
|
|
30
|
+
readonly cwd: string;
|
|
31
|
+
readonly executable: CodexExecutable & {
|
|
32
|
+
readonly version?: string;
|
|
33
|
+
};
|
|
34
|
+
readonly config?: Rec;
|
|
35
|
+
readonly auth: CodexAuthRuntime;
|
|
36
|
+
readonly channels: CodexChannelsRuntime;
|
|
37
|
+
readonly startNotices?: readonly string[];
|
|
38
|
+
/** Rejoin an idle native thread retained by the local daemon, if available. */
|
|
39
|
+
readonly rejoinNativeDaemon?: () => Promise<CodexRuntime | undefined>;
|
|
40
|
+
}
|
|
41
|
+
export interface CodexRuntimeOptions {
|
|
42
|
+
readonly executable?: CodexExecutable & {
|
|
43
|
+
readonly version?: string;
|
|
44
|
+
};
|
|
45
|
+
readonly channels?: CodexChannels;
|
|
46
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
47
|
+
readonly hubDeps?: CodexHubDeps;
|
|
48
|
+
readonly authClock?: RpcClock;
|
|
49
|
+
}
|
|
50
|
+
/** Acquire the same platform runtime for open/resume/catalog. Tests replace
|
|
51
|
+
* only the process, executable discovery and profile file, not the plumbing. */
|
|
52
|
+
export declare function prepareCodexRuntime(target: OpenTarget, host: CodexBackendHost, options?: CodexRuntimeOptions): Promise<CodexRuntime>;
|
|
53
|
+
/** Open a native thread, rejoining its idle daemon writer on conflict. */
|
|
54
|
+
export declare function openCodexBackendSession(target: OpenTarget, host: CodexBackendHost, options?: CodexRuntimeOptions & {
|
|
55
|
+
readonly prefs?: CodexPrefs;
|
|
56
|
+
}): Promise<AgentSession>;
|
|
57
|
+
export declare const codexBackend: AgentBackend;
|
|
58
|
+
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../../src/backends/codex/backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAI1D,OAAO,EAA0C,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEzG,OAAO,EAAiD,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAC5H,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAGpE,OAAO,EAAuB,KAAK,GAAG,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC7F,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAoB,MAAM,cAAc,CAAA;AAClG,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAMnE;kFACkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAExF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAA;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;CACtE;AACD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;CAC9B;AAED;gFACgF;AAChF,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8G9I;AAKD,0EAA0E;AAC1E,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,mBAAmB,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBpL;AAED,eAAO,MAAM,YAAY,EAAE,YA6B1B,CAAA"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { t } from '../../i18n.js';
|
|
2
|
+
import { installedTuiVersion } from '../../update.js';
|
|
3
|
+
import { CODEX_BACKEND_ID, CODEX_BACKEND_LABEL, codexResumeCommand, codexVersionSupported, MIN_CODEX_VERSION } from './contract.js';
|
|
4
|
+
import { acquireCodexAuth, CODEX_OAUTH_PROVIDER } from './auth/external-tokens.js';
|
|
5
|
+
import { codexAuthRoute } from './auth/route.js';
|
|
6
|
+
import { createCodexChannelsRuntime, fileCodexChannels } from './channels.js';
|
|
7
|
+
import { createCodexCatalog } from './catalog.js';
|
|
8
|
+
import { detectCodex } from './detect.js';
|
|
9
|
+
import { errorText, rec, str } from './narrow.js';
|
|
10
|
+
import { CLIENT } from './protocol/index.js';
|
|
11
|
+
import { fileCodexPrefs } from './prefs.js';
|
|
12
|
+
import { buildCodexEnv, resolveCodexExecutable } from './rpc/binary.js';
|
|
13
|
+
import { acquireCodexHub } from './rpc/hub.js';
|
|
14
|
+
import { rpcCode, RPC_ERROR } from './rpc/client.js';
|
|
15
|
+
import { openCodexSession } from './session/session.js';
|
|
16
|
+
/** Child stderr that is known start-up noise, reported by `/doctor` only. */
|
|
17
|
+
const STDERR_NOISE = [/bubblewrap/iu, /could not create PATH aliases/iu];
|
|
18
|
+
/** Acquire the same platform runtime for open/resume/catalog. Tests replace
|
|
19
|
+
* only the process, executable discovery and profile file, not the plumbing. */
|
|
20
|
+
export async function prepareCodexRuntime(target, host, options = {}) {
|
|
21
|
+
const env = options.env ?? process.env;
|
|
22
|
+
const executable = options.executable ?? await resolveCodexExecutable(env);
|
|
23
|
+
if (executable === undefined)
|
|
24
|
+
throw new Error(t('codex-not-installed'));
|
|
25
|
+
if (!codexVersionSupported(executable.version))
|
|
26
|
+
throw new Error(t('codex-too-old', { version: executable.version ?? '', min: MIN_CODEX_VERSION }));
|
|
27
|
+
const channels = createCodexChannelsRuntime({ store: options.channels ?? fileCodexChannels(undefined, host.debug), tokens: host.tokenStore, env });
|
|
28
|
+
const launch = channels.launch();
|
|
29
|
+
const credential = launch.provider === undefined ? host.oauthCredential?.(CODEX_OAUTH_PROVIDER) : undefined;
|
|
30
|
+
let cwd = target.cwd ?? host.cwd;
|
|
31
|
+
let settings = {
|
|
32
|
+
executable: executable.path, args: ['app-server', ...launch.args], env: buildCodexEnv(env, launch.env), cwd,
|
|
33
|
+
credentialMode: launch.provider !== undefined ? 'channel' : credential === undefined ? 'codex' : 'external',
|
|
34
|
+
injectedEnvKeys: launch.injectedEnvKeys,
|
|
35
|
+
};
|
|
36
|
+
const deps = {
|
|
37
|
+
debug: host.debug,
|
|
38
|
+
stderr: line => { if (!STDERR_NOISE.some(pattern => pattern.test(line)))
|
|
39
|
+
host.stderr?.(line); },
|
|
40
|
+
clientVersion: installedTuiVersion() ?? 'dev',
|
|
41
|
+
...options.hubDeps,
|
|
42
|
+
};
|
|
43
|
+
let hub = acquireCodexHub(settings, deps);
|
|
44
|
+
let release = hub.retain();
|
|
45
|
+
try {
|
|
46
|
+
await hub.ready;
|
|
47
|
+
let locationKnown = true;
|
|
48
|
+
if (target.kind === 'resume' && target.cwd === undefined) {
|
|
49
|
+
// Route/project configuration must be checked for the recorded thread
|
|
50
|
+
// directory, not the launcher's unrelated current directory.
|
|
51
|
+
try {
|
|
52
|
+
const answer = rec(await hub.call(CLIENT.threadRead, { threadId: target.sessionId, includeTurns: false }));
|
|
53
|
+
const recorded = str(rec(answer?.thread)?.cwd);
|
|
54
|
+
if (recorded === undefined || recorded === '')
|
|
55
|
+
locationKnown = false;
|
|
56
|
+
else
|
|
57
|
+
cwd = recorded;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
locationKnown = false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
let config;
|
|
64
|
+
if (locationKnown) {
|
|
65
|
+
try {
|
|
66
|
+
config = rec(rec(await hub.call(CLIENT.configRead, { includeLayers: false, cwd }))?.config);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
host.debug('codex: config/read failed; managed injection disabled');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const route = codexAuthRoute(config, env, launch.provider !== undefined);
|
|
73
|
+
const externalAllowed = settings.credentialMode === 'external' && route.firstParty;
|
|
74
|
+
if (settings.credentialMode === 'external' && !externalAllowed) {
|
|
75
|
+
// A native-only route must not reuse a hub whose other sessions loaded
|
|
76
|
+
// a managed token. Probing config does not issue any model request.
|
|
77
|
+
release();
|
|
78
|
+
settings = { ...settings, credentialMode: 'codex' };
|
|
79
|
+
hub = acquireCodexHub(settings, deps);
|
|
80
|
+
release = hub.retain();
|
|
81
|
+
await hub.ready;
|
|
82
|
+
}
|
|
83
|
+
channels.refreshConfig(config);
|
|
84
|
+
const profile = channels.active();
|
|
85
|
+
let auth = acquireCodexAuth({
|
|
86
|
+
hub, cwd, config, env, credential, externalAllowed,
|
|
87
|
+
...(launch.provider === undefined || profile === undefined ? {} : { channel: { name: profile.name, baseUrl: profile.baseUrl } }),
|
|
88
|
+
...(options.authClock === undefined ? {} : { clock: options.authClock }),
|
|
89
|
+
debug: host.debug,
|
|
90
|
+
});
|
|
91
|
+
await auth.start();
|
|
92
|
+
let startNotices;
|
|
93
|
+
if (auth.managedFailed) {
|
|
94
|
+
startNotices = [t('codex-auth-login-failed')];
|
|
95
|
+
// Only an already-observed startup failure takes this path. No logout:
|
|
96
|
+
// a different process starts clean on the user's native credentials.
|
|
97
|
+
release();
|
|
98
|
+
settings = { ...settings, credentialMode: 'native-fallback' };
|
|
99
|
+
hub = acquireCodexHub(settings, deps);
|
|
100
|
+
release = hub.retain();
|
|
101
|
+
await hub.ready;
|
|
102
|
+
auth = acquireCodexAuth({ hub, cwd, config, env, credential, externalAllowed: route.firstParty, skipStoredCredential: true, debug: host.debug });
|
|
103
|
+
await auth.start();
|
|
104
|
+
}
|
|
105
|
+
const rejoinNativeDaemon = target.kind !== 'resume' ? undefined : async () => {
|
|
106
|
+
// Managed credentials and channel overrides belong to our private
|
|
107
|
+
// child. Never install them in the user's shared background server.
|
|
108
|
+
if (launch.provider !== undefined || auth.source === 'dsh-auth' || auth.managedFailed || settings.credentialMode === 'native-fallback')
|
|
109
|
+
return undefined;
|
|
110
|
+
const daemon = acquireCodexHub({ ...settings, args: ['app-server', 'proxy'], credentialMode: 'codex' }, { ...deps, handshakeTimeoutMs: 5000 });
|
|
111
|
+
const releaseDaemon = daemon.retain();
|
|
112
|
+
let handedOff = false;
|
|
113
|
+
try {
|
|
114
|
+
await daemon.ready;
|
|
115
|
+
const loaded = rec(await daemon.call(CLIENT.threadLoadedList, {}, { timeoutMs: 5000 }));
|
|
116
|
+
if (!Array.isArray(loaded?.data) || !loaded.data.includes(target.sessionId))
|
|
117
|
+
return undefined;
|
|
118
|
+
const thread = rec(rec(await daemon.call(CLIENT.threadRead, { threadId: target.sessionId, includeTurns: false }, { timeoutMs: 5000 }))?.thread);
|
|
119
|
+
if (str(rec(thread?.status)?.type) !== 'idle')
|
|
120
|
+
return undefined;
|
|
121
|
+
const daemonCwd = target.cwd ?? str(thread?.cwd);
|
|
122
|
+
if (daemonCwd === undefined || daemonCwd === '')
|
|
123
|
+
return undefined;
|
|
124
|
+
const daemonConfig = rec(rec(await daemon.call(CLIENT.configRead, { includeLayers: false, cwd: daemonCwd }, { timeoutMs: 5000 }))?.config);
|
|
125
|
+
const daemonAuth = acquireCodexAuth({ hub: daemon, cwd: daemonCwd, config: daemonConfig, env, externalAllowed: false, debug: host.debug });
|
|
126
|
+
await daemonAuth.start();
|
|
127
|
+
channels.refreshConfig(daemonConfig);
|
|
128
|
+
handedOff = true;
|
|
129
|
+
return { hub: daemon, release: releaseDaemon, cwd: daemonCwd, executable, config: daemonConfig, auth: daemonAuth, channels };
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
host.debug('codex: native daemon could not rejoin the retained thread');
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
if (!handedOff) {
|
|
137
|
+
releaseDaemon();
|
|
138
|
+
if (daemon.state === 'failed')
|
|
139
|
+
await daemon.close();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
return { hub, release, cwd, executable, config, auth, channels, ...(startNotices === undefined ? {} : { startNotices }), ...(rejoinNativeDaemon === undefined ? {} : { rejoinNativeDaemon }) };
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
release();
|
|
147
|
+
host.debug(`codex: app-server start failed (${errorText(error)})`);
|
|
148
|
+
throw new Error(t('codex-start-failed', { err: errorText(error) }), { cause: error });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
let catalogHost;
|
|
152
|
+
const catalogPrefs = fileCodexPrefs();
|
|
153
|
+
/** Open a native thread, rejoining its idle daemon writer on conflict. */
|
|
154
|
+
export async function openCodexBackendSession(target, host, options = {}) {
|
|
155
|
+
catalogHost = host;
|
|
156
|
+
const runtime = await prepareCodexRuntime(target, host, options);
|
|
157
|
+
const open = (active) => openCodexSession({
|
|
158
|
+
...active, target,
|
|
159
|
+
prefs: options.prefs ?? fileCodexPrefs(undefined, host.debug),
|
|
160
|
+
host: { debug: host.debug },
|
|
161
|
+
doctor: { get bubblewrapMissing() { return active.hub.bubblewrapMissing; } },
|
|
162
|
+
});
|
|
163
|
+
try {
|
|
164
|
+
return await open(runtime);
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
const cause = error instanceof Error ? error.cause : undefined;
|
|
168
|
+
if (rpcCode(cause) !== RPC_ERROR.invalidRequest || !/already has an active writer/iu.test(errorText(cause)))
|
|
169
|
+
throw error;
|
|
170
|
+
const daemon = await runtime.rejoinNativeDaemon?.();
|
|
171
|
+
if (daemon === undefined)
|
|
172
|
+
throw error;
|
|
173
|
+
return open(daemon);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export const codexBackend = {
|
|
177
|
+
id: CODEX_BACKEND_ID,
|
|
178
|
+
descriptor: { label: CODEX_BACKEND_LABEL },
|
|
179
|
+
detect: (host) => { catalogHost = host; return detectCodex(host); },
|
|
180
|
+
catalog: createCodexCatalog({
|
|
181
|
+
acquire: cwd => {
|
|
182
|
+
const host = catalogHost ?? { cwd: process.cwd(), debug: () => undefined, warn: () => undefined };
|
|
183
|
+
return prepareCodexRuntime({ kind: 'create', cwd: cwd ?? host.cwd }, host);
|
|
184
|
+
},
|
|
185
|
+
cwd: () => catalogHost?.cwd ?? process.cwd(),
|
|
186
|
+
lastUsed: () => catalogPrefs.read().lastUsed ?? {},
|
|
187
|
+
}),
|
|
188
|
+
launch: {
|
|
189
|
+
sessionPrefs: debug => {
|
|
190
|
+
const prefs = fileCodexPrefs(undefined, debug);
|
|
191
|
+
return {
|
|
192
|
+
lastSession: () => prefs.read().lastSession,
|
|
193
|
+
setLastSession: threadId => { prefs.write({ lastSession: threadId }); },
|
|
194
|
+
touch: threadId => { prefs.touch(threadId); },
|
|
195
|
+
forget: threadId => { prefs.forget(threadId); },
|
|
196
|
+
};
|
|
197
|
+
},
|
|
198
|
+
resumeCommand: codexResumeCommand,
|
|
199
|
+
},
|
|
200
|
+
open: openCodexBackendSession,
|
|
201
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SessionCatalog } from '../../agent/backend.js';
|
|
2
|
+
import type { PreviewEntry, SessionSummary } from '../../adapter/ports/channel-session.js';
|
|
3
|
+
import type { CodexHub } from './rpc/hub.js';
|
|
4
|
+
export interface CodexCatalogDeps {
|
|
5
|
+
acquire(cwd?: string): Promise<{
|
|
6
|
+
readonly hub: Pick<CodexHub, 'call'>;
|
|
7
|
+
readonly release: () => void;
|
|
8
|
+
}>;
|
|
9
|
+
cwd(): string;
|
|
10
|
+
lastUsed?(): Readonly<Record<string, number>>;
|
|
11
|
+
}
|
|
12
|
+
/** Metadata only. Absence of preview text is not proof of an empty thread. */
|
|
13
|
+
export declare function codexSessionSummary(value: unknown, lastUsed?: Readonly<Record<string, number>>): SessionSummary | undefined;
|
|
14
|
+
/** Summary items contain text and images, never needing a tool-body read. */
|
|
15
|
+
export declare function codexPreviewEntries(turns: readonly unknown[], limit?: number): PreviewEntry[];
|
|
16
|
+
export declare function createCodexCatalog(deps: CodexCatalogDeps): SessionCatalog;
|
|
17
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/backends/codex/catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,wBAAwB,CAAA;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAM1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;IACtG,GAAG,IAAI,MAAM,CAAA;IACb,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC9C;AAKD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAAG,cAAc,GAAG,SAAS,CAqB/H;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,SAAgB,GAAG,YAAY,EAAE,CAkBpG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,cAAc,CAwDzE"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/** The native app-server catalog: no rollout/sqlite parsing or second index.
|
|
2
|
+
* Each bounded operation borrows the same hub and releases it in finally. */
|
|
3
|
+
import { basename } from 'node:path';
|
|
4
|
+
import { t } from '../../i18n.js';
|
|
5
|
+
import { CODEX_BACKEND_ID } from './contract.js';
|
|
6
|
+
import { arr, num, rec, str, text } from './narrow.js';
|
|
7
|
+
import { CLIENT } from './protocol/index.js';
|
|
8
|
+
import { rpcCode, RPC_ERROR } from './rpc/client.js';
|
|
9
|
+
const LIST_LIMIT = 500;
|
|
10
|
+
const LIST_PAGE = 200;
|
|
11
|
+
const PREVIEW_LIMIT = 6;
|
|
12
|
+
/** Metadata only. Absence of preview text is not proof of an empty thread. */
|
|
13
|
+
export function codexSessionSummary(value, lastUsed = {}) {
|
|
14
|
+
const row = rec(value);
|
|
15
|
+
const id = text(row?.id);
|
|
16
|
+
if (id === undefined || row?.ephemeral === true)
|
|
17
|
+
return undefined;
|
|
18
|
+
const cwd = str(row?.cwd) ?? '';
|
|
19
|
+
const name = text(row?.name)?.trim();
|
|
20
|
+
const prompt = text(row?.preview)?.trim();
|
|
21
|
+
const parent = text(row?.parentThreadId);
|
|
22
|
+
const spawn = rec(rec(rec(row?.source)?.subAgent)?.thread_spawn);
|
|
23
|
+
const forkedFrom = text(row?.forkedFromId);
|
|
24
|
+
return {
|
|
25
|
+
id, backendId: CODEX_BACKEND_ID,
|
|
26
|
+
kind: parent !== undefined || rec(row?.source)?.subAgent !== undefined
|
|
27
|
+
? { kind: 'subagent', parent: parent ?? text(spawn?.parent_thread_id), depth: num(spawn?.depth) ?? 1 }
|
|
28
|
+
: forkedFrom === undefined ? { kind: 'root' } : { kind: 'fork', parent: forkedFrom },
|
|
29
|
+
title: name ? { text: name, source: 'auto' } : prompt ? { text: prompt, source: 'prompt' } : { text: basename(cwd) || id, source: 'fallback' },
|
|
30
|
+
cwd, createdAt: (num(row?.createdAt) ?? 0) * 1000,
|
|
31
|
+
updatedAt: Math.max((num(row?.updatedAt) ?? num(row?.createdAt) ?? 0) * 1000, (num(row?.recencyAt) ?? 0) * 1000, lastUsed[id] ?? 0),
|
|
32
|
+
bytes: undefined, hasPrompt: true, agentPreset: undefined,
|
|
33
|
+
model: text(row?.model), label: text(row?.agentNickname), branch: text(rec(row?.gitInfo)?.branch), childCount: 0,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Summary items contain text and images, never needing a tool-body read. */
|
|
37
|
+
export function codexPreviewEntries(turns, limit = PREVIEW_LIMIT) {
|
|
38
|
+
const entries = [];
|
|
39
|
+
for (const raw of turns) {
|
|
40
|
+
const turn = rec(raw);
|
|
41
|
+
const at = num(turn?.startedAt);
|
|
42
|
+
for (const rawItem of arr(turn?.items)) {
|
|
43
|
+
const item = rec(rawItem);
|
|
44
|
+
if (item?.type === 'userMessage') {
|
|
45
|
+
const content = arr(item.content).map(rec);
|
|
46
|
+
const first = content.find(block => block?.type === 'text');
|
|
47
|
+
const body = text(first?.text) ?? (content.some(block => block?.type === 'image' || block?.type === 'localImage') ? t('codex-preview-image') : undefined);
|
|
48
|
+
if (body !== undefined)
|
|
49
|
+
entries.push({ role: 'user', text: body, at: at === undefined ? undefined : at * 1000 });
|
|
50
|
+
}
|
|
51
|
+
else if (item?.type === 'agentMessage' && text(item.text) !== undefined) {
|
|
52
|
+
entries.push({ role: 'assistant', text: str(item.text), at: at === undefined ? undefined : at * 1000 });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return limit <= 0 ? [] : entries.slice(-limit);
|
|
57
|
+
}
|
|
58
|
+
export function createCodexCatalog(deps) {
|
|
59
|
+
const borrow = async (cwd, use) => {
|
|
60
|
+
const runtime = await deps.acquire(cwd);
|
|
61
|
+
try {
|
|
62
|
+
return await use(runtime.hub);
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
runtime.release();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
deleteAction: 'archive',
|
|
70
|
+
list(scope = {}) {
|
|
71
|
+
const cwd = scope.allProjects === true ? undefined : scope.cwd ?? deps.cwd();
|
|
72
|
+
return borrow(cwd, async (hub) => {
|
|
73
|
+
const rows = new Map();
|
|
74
|
+
let cursor;
|
|
75
|
+
let scanned = 0;
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
// The row budget also bounds the number of empty/malformed pages.
|
|
78
|
+
for (let page = 0; page < Math.ceil(LIST_LIMIT / LIST_PAGE) && scanned < LIST_LIMIT; page += 1) {
|
|
79
|
+
const answer = rec(await hub.call(CLIENT.threadList, { limit: Math.min(LIST_PAGE, LIST_LIMIT - scanned), sortKey: 'recency_at', sortDirection: 'desc', archived: false, modelProviders: [], ...(cwd === undefined ? {} : { cwd }), ...(cursor === undefined ? {} : { cursor }) }));
|
|
80
|
+
const data = arr(answer?.data);
|
|
81
|
+
scanned += data.length;
|
|
82
|
+
for (const raw of data.slice(0, LIST_LIMIT - rows.size)) {
|
|
83
|
+
const row = codexSessionSummary(raw, deps.lastUsed?.());
|
|
84
|
+
if (row !== undefined && row.kind.kind !== 'subagent')
|
|
85
|
+
rows.set(row.id, row);
|
|
86
|
+
}
|
|
87
|
+
cursor = text(answer?.nextCursor);
|
|
88
|
+
if (cursor === undefined || seen.has(cursor))
|
|
89
|
+
break;
|
|
90
|
+
seen.add(cursor);
|
|
91
|
+
}
|
|
92
|
+
return [...rows.values()].sort((a, b) => b.updatedAt - a.updatedAt).slice(0, LIST_LIMIT);
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
info(sessionId, cwd) {
|
|
96
|
+
return borrow(cwd, async (hub) => {
|
|
97
|
+
try {
|
|
98
|
+
return codexSessionSummary(rec(await hub.call(CLIENT.threadRead, { threadId: sessionId, includeTurns: false }))?.thread, deps.lastUsed?.());
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (rpcCode(error) === RPC_ERROR.invalidRequest && /not found|does not exist/iu.test(error instanceof Error ? error.message : ''))
|
|
102
|
+
return undefined;
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
preview(sessionId, options = {}) {
|
|
108
|
+
const limit = Math.max(0, Math.min(20, options.limit ?? PREVIEW_LIMIT));
|
|
109
|
+
if (limit === 0)
|
|
110
|
+
return Promise.resolve([]);
|
|
111
|
+
return borrow(options.cwd, async (hub) => {
|
|
112
|
+
const answer = rec(await hub.call(CLIENT.threadTurnsList, { threadId: sessionId, sortDirection: 'desc', limit, itemsView: 'summary' }));
|
|
113
|
+
return codexPreviewEntries([...arr(answer?.data)].reverse(), limit);
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
rename: (threadId, name, cwd) => borrow(cwd, async (hub) => { await hub.call(CLIENT.threadNameSet, { threadId, name }); }),
|
|
117
|
+
delete: (threadId, cwd) => borrow(cwd, async (hub) => {
|
|
118
|
+
try {
|
|
119
|
+
await hub.call(CLIENT.threadArchive, { threadId });
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
if (rpcCode(error) === RPC_ERROR.invalidRequest && /active.*worker/iu.test(error instanceof Error ? error.message : ''))
|
|
123
|
+
throw new Error(t('codex-archive-busy'));
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { SessionCapabilities } from '../../agent/capabilities.js';
|
|
2
|
+
import { channelProfileSlug } from '../../channel/channel-slug.js';
|
|
3
|
+
import { type ChannelTokenStore } from '../shared/channel-tokens.js';
|
|
4
|
+
import { type Rec } from './narrow.js';
|
|
5
|
+
export interface CodexChannelProfile {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly baseUrl?: string;
|
|
9
|
+
readonly tokenRef?: string;
|
|
10
|
+
/** File input is validated at save/start; only Responses is supported. */
|
|
11
|
+
readonly wireApi?: string;
|
|
12
|
+
readonly env?: Readonly<Record<string, string>>;
|
|
13
|
+
readonly models?: Readonly<Record<string, string>>;
|
|
14
|
+
}
|
|
15
|
+
export interface CodexChannelsData {
|
|
16
|
+
readonly active?: string;
|
|
17
|
+
readonly channels: readonly CodexChannelProfile[];
|
|
18
|
+
}
|
|
19
|
+
export interface CodexChannels {
|
|
20
|
+
read(): CodexChannelsData;
|
|
21
|
+
setActive(id: string): void;
|
|
22
|
+
save(profile: CodexChannelProfile): void;
|
|
23
|
+
remove(id: string): void;
|
|
24
|
+
}
|
|
25
|
+
export interface CodexChannelLaunch {
|
|
26
|
+
readonly args: readonly string[];
|
|
27
|
+
readonly env: Readonly<Record<string, string>>;
|
|
28
|
+
readonly injectedEnvKeys: readonly string[];
|
|
29
|
+
readonly provider?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface CodexChannelsRuntime {
|
|
32
|
+
readonly capability: NonNullable<SessionCapabilities['channels']>;
|
|
33
|
+
active(): CodexChannelProfile | undefined;
|
|
34
|
+
refreshConfig(config?: Rec): void;
|
|
35
|
+
launch(): CodexChannelLaunch;
|
|
36
|
+
}
|
|
37
|
+
export declare const channelSlug: typeof channelProfileSlug;
|
|
38
|
+
export declare const CODEX_CHANNEL_TOKEN_ENV = "DSH_TUI_CODEX_CHANNEL_TOKEN";
|
|
39
|
+
/** Reject credential-bearing URLs before either persistence or spawn. */
|
|
40
|
+
export declare function validateCodexBaseUrl(value: string): string;
|
|
41
|
+
/** Invalid endpoint rows remain selected so launch refuses, never silently
|
|
42
|
+
* switching a hand-edited active connection to ambient OAuth credentials. */
|
|
43
|
+
export declare function parseCodexChannels(value: unknown): CodexChannelsData;
|
|
44
|
+
export declare const activeProfileOf: (data: CodexChannelsData) => CodexChannelProfile | undefined;
|
|
45
|
+
export declare const hasChannelConnection: (profile: CodexChannelProfile | undefined) => boolean;
|
|
46
|
+
/** Same atomic/upsert/damaged-file semantics as the mature Claude store. */
|
|
47
|
+
export declare function fileCodexChannels(dir?: string, debug?: (message: string) => void): CodexChannels;
|
|
48
|
+
export declare function memoryCodexChannels(initial?: CodexChannelsData): CodexChannels;
|
|
49
|
+
/** The token only goes into the child environment, never an argv override. */
|
|
50
|
+
export declare function codexChannelLaunch(profile: CodexChannelProfile | undefined, tokens?: ChannelTokenStore): CodexChannelLaunch;
|
|
51
|
+
/** Synchronous channel capability over a config/read snapshot. The TUI's
|
|
52
|
+
* own dshtui-* provider is not re-imported as if it were user settings. */
|
|
53
|
+
export declare function createCodexChannelsRuntime(deps: {
|
|
54
|
+
readonly store: CodexChannels;
|
|
55
|
+
readonly tokens?: ChannelTokenStore;
|
|
56
|
+
readonly config?: Rec;
|
|
57
|
+
readonly env?: Readonly<Record<string, string | undefined>>;
|
|
58
|
+
}): CodexChannelsRuntime;
|
|
59
|
+
//# sourceMappingURL=channels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../../../src/backends/codex/channels.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,6BAA6B,CAAA;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAIlE,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,aAAa,CAAA;AAEhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACnD;AACD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAClD;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,iBAAiB,CAAA;IACzB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC9C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;IACjE,MAAM,IAAI,mBAAmB,GAAG,SAAS,CAAA;IACzC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACjC,MAAM,IAAI,kBAAkB,CAAA;CAC7B;AAED,eAAO,MAAM,WAAW,2BAAqB,CAAA;AAC7C,eAAO,MAAM,uBAAuB,gCAAgC,CAAA;AAKpE,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB1D;AAUD;6EAC6E;AAC7E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAkBpE;AAsBD,eAAO,MAAM,eAAe,GAAI,MAAM,iBAAiB,KAAG,mBAAmB,GAAG,SAA8D,CAAA;AAC9I,eAAO,MAAM,oBAAoB,GAAI,SAAS,mBAAmB,GAAG,SAAS,KAAG,OAAkJ,CAAA;AAElO,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,GAAG,SAAsC,EAAE,KAAK,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAsB,GAAG,aAAa,CAwB9I;AACD,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,iBAAoC,GAAG,aAAa,CAQhG;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,CAiB3H;AAeD;2EAC2E;AAC3E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;CAC5D,GAAG,oBAAoB,CA8DvB"}
|