mixdog 1.2.5 → 1.3.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/LICENSES/simple-icons-CC0-1.0.txt +30 -0
- package/NOTICE.md +19 -0
- package/package.json +4 -1
- package/scripts/check-model-recommendations.mjs +89 -0
- package/scripts/gate-local.mjs +7 -0
- package/scripts/lib/gate-scheduler.mjs +2 -2
- package/scripts/lib/isolated-test-env.mjs +16 -0
- package/scripts/lib/run-node-tests.mjs +5 -14
- package/scripts/provider-pingpong-live.mjs +9 -9
- package/src/agents/advisor/AGENT.md +4 -4
- package/src/agents/advisor/agent.json +1 -1
- package/src/agents/reviewer/AGENT.md +5 -4
- package/src/agents/reviewer/agent.json +1 -1
- package/src/defaults/shipped-history.json +17 -0
- package/src/defaults/skills/browser-use/SKILL.md +7 -1
- package/src/defaults/skills/computer-use/SKILL.md +3 -1
- package/src/defaults/skills/memory-management/SKILL.md +4 -1
- package/src/defaults/skills/setup/references/actions.md +11 -4
- package/src/defaults/skills/setup-guide/SKILL.md +175 -0
- package/src/defaults/skills/setup-guide/model-recommendations.json +333 -0
- package/src/defaults/skills/visualize/SKILL.md +3 -2
- package/src/lib/rules-builder.cjs +56 -7
- package/src/output-styles/common.md +22 -6
- package/src/output-styles/detailed.md +7 -5
- package/src/output-styles/minimal.md +7 -3
- package/src/output-styles/simple.md +2 -3
- package/src/rules/agent/AGENT.md +7 -1
- package/src/rules/agent-mode/AGENT_MODE.md +24 -0
- package/src/rules/agent-mode/MIXY.md +21 -0
- package/src/rules/agent-mode/ROUTINE.md +6 -0
- package/src/rules/lead/LEAD.md +9 -4
- package/src/rules/shared/10-tool-workflow.md +2 -1
- package/src/rules/shared/60-verification.md +4 -5
- package/src/rules/shared/70-delivery.md +3 -0
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +2 -1
- package/src/runtime/agent/orchestrator/agent-runtime/room-supervisor-completion.mjs +86 -0
- package/src/runtime/agent/orchestrator/config.mjs +6 -0
- package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +77 -14
- package/src/runtime/agent/orchestrator/context/role-instructions.mjs +182 -13
- package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +5 -3
- package/src/runtime/agent/orchestrator/internal-agents.mjs +10 -0
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +215 -0
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +58 -64
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +10 -1
- package/src/runtime/agent/orchestrator/mcp/client.mjs +122 -15
- package/src/runtime/agent/orchestrator/mcp/oauth-account.mjs +97 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-callback.mjs +2 -3
- package/src/runtime/agent/orchestrator/mcp/oauth-client.mjs +49 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-credentials.mjs +59 -9
- package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +32 -7
- package/src/runtime/agent/orchestrator/mcp/oauth-provider.mjs +45 -6
- package/src/runtime/agent/orchestrator/mcp/oauth.mjs +195 -6
- package/src/runtime/agent/orchestrator/mcp/server-connectors.mjs +17 -0
- package/src/runtime/agent/orchestrator/providers/account-pool.mjs +9 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +41 -19
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +3 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events/content-block-start.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +11 -5
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +4 -0
- package/src/runtime/agent/orchestrator/providers/catalog-deadline.mjs +163 -0
- package/src/runtime/agent/orchestrator/providers/catalog-failures.mjs +34 -0
- package/src/runtime/agent/orchestrator/providers/cursor-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +38 -14
- package/src/runtime/agent/orchestrator/providers/lib/oauth-page.mjs +100 -26
- package/src/runtime/agent/orchestrator/providers/lib/send-callbacks.mjs +24 -0
- package/src/runtime/agent/orchestrator/providers/oauth-credential-probes.mjs +13 -0
- package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/chunk-events.mjs +4 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-models.mjs +49 -4
- package/src/runtime/agent/orchestrator/providers/openai-compat-presets.mjs +0 -7
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-events.mjs +7 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai-send.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-error-contract.mjs +17 -12
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events.mjs +5 -1
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state.mjs +11 -2
- package/src/runtime/agent/orchestrator/providers/openai-oauth-http-sse.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +45 -16
- package/src/runtime/agent/orchestrator/providers/openai-oauth-tokens.mjs +10 -0
- package/src/runtime/agent/orchestrator/providers/openai-oauth-ws.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-connect.mjs +196 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-pool.mjs +74 -9
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream/event-switch.mjs +14 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/opencode-go-oauth-login.mjs +194 -0
- package/src/runtime/agent/orchestrator/providers/opencode-go-oauth-tokens.mjs +353 -0
- package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +293 -0
- package/src/runtime/agent/orchestrator/providers/opencode-go-usage.mjs +33 -100
- package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +23 -14
- package/src/runtime/agent/orchestrator/providers/registry.mjs +41 -27
- package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +98 -4
- package/src/runtime/agent/orchestrator/runtime-core/context-status-shape.mjs +4 -0
- package/src/runtime/agent/orchestrator/runtime-core/extension-scopes.mjs +6 -4
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +15 -8
- package/src/runtime/agent/orchestrator/runtime-core/plugin-mcp.mjs +1 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-bridge.mjs +12 -6
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +32 -5
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +10 -4
- package/src/runtime/agent/orchestrator/runtime-core/workflow/agents.mjs +4 -1
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +50 -20
- package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/agent-home.d.mts +4 -0
- package/src/runtime/agent/orchestrator/session/agent-home.mjs +33 -0
- package/src/runtime/agent/orchestrator/session/agent-mode.mjs +62 -0
- package/src/runtime/agent/orchestrator/session/agent-pool-progress.mjs +15 -3
- package/src/runtime/agent/orchestrator/session/agent-room-supervisor.d.mts +31 -0
- package/src/runtime/agent/orchestrator/session/agent-room-supervisor.mjs +241 -0
- package/src/runtime/agent/orchestrator/session/agent-room.d.mts +162 -0
- package/src/runtime/agent/orchestrator/session/agent-room.mjs +641 -0
- package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +7 -1
- package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +74 -13
- package/src/runtime/agent/orchestrator/session/compact/forked-summary.mjs +102 -0
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +8 -2
- package/src/runtime/agent/orchestrator/session/compact/summary.mjs +16 -0
- package/src/runtime/agent/orchestrator/session/compact/user-message-kind.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/compaction-archive-capture.mjs +6 -2
- package/src/runtime/agent/orchestrator/session/human-gate/gate.mjs +165 -0
- package/src/runtime/agent/orchestrator/session/human-gate/held-message.mjs +95 -0
- package/src/runtime/agent/orchestrator/session/human-gate/outbound-policy.mjs +221 -0
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +195 -0
- package/src/runtime/agent/orchestrator/session/human-gate/store.mjs +167 -0
- package/src/runtime/agent/orchestrator/session/lifecycle-scan.mjs +9 -0
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +39 -2
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +10 -0
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +16 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +82 -33
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +11 -4
- package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +5 -4
- package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +13 -3
- package/src/runtime/agent/orchestrator/session/loop/usage.mjs +7 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +6 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-steering-drain.mjs +13 -5
- package/src/runtime/agent/orchestrator/session/manager/pending-lifecycle-epoch.mjs +0 -8
- package/src/runtime/agent/orchestrator/session/manager/pending-message-entry.mjs +10 -7
- package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +62 -22
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +44 -16
- package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +22 -5
- package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +23 -1
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +81 -34
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +39 -4
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +27 -5
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +55 -8
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +16 -0
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +3 -2
- package/src/runtime/agent/orchestrator/session/manager/usage-metrics.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/workflow-switch-notice.mjs +58 -0
- package/src/runtime/agent/orchestrator/session/manager.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/mixy-name.mjs +24 -0
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +32 -5
- package/src/runtime/agent/orchestrator/session/request-fork.mjs +47 -0
- package/src/runtime/agent/orchestrator/session/routine-result.d.mts +70 -0
- package/src/runtime/agent/orchestrator/session/routine-result.mjs +277 -0
- package/src/runtime/agent/orchestrator/session/side-question-store.mjs +16 -1
- package/src/runtime/agent/orchestrator/session/side-question.mjs +5 -43
- package/src/runtime/agent/orchestrator/session/store/fs-probe.mjs +10 -0
- package/src/runtime/agent/orchestrator/session/store/lifecycle-barriers.mjs +73 -6
- package/src/runtime/agent/orchestrator/session/store/load-session.mjs +40 -0
- package/src/runtime/agent/orchestrator/session/store/save-fault.mjs +15 -0
- package/src/runtime/agent/orchestrator/session/store/session-paths.mjs +12 -0
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-row.mjs +8 -0
- package/src/runtime/agent/orchestrator/session/store-agent-worker-header.mjs +36 -0
- package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +258 -43
- package/src/runtime/agent/orchestrator/session/store-record-strict-scan.mjs +325 -0
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +84 -21
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +44 -12
- package/src/runtime/agent/orchestrator/session/store-summary-last-message.mjs +46 -0
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +46 -30
- package/src/runtime/agent/orchestrator/session/store-summary-visibility.mjs +0 -4
- package/src/runtime/agent/orchestrator/session/store-transcript-cache.mjs +144 -45
- package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +32 -13
- package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +364 -38
- package/src/runtime/agent/orchestrator/session/store.mjs +9 -2
- package/src/runtime/agent/orchestrator/session/task-wait-control.mjs +43 -12
- package/src/runtime/agent/orchestrator/session/tool-result-offload.mjs +23 -6
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +44 -1
- package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +12 -6
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +13 -7
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/bashism-rewrite.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/benign-exit.mjs +7 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +40 -7
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/deadline-plan.mjs +37 -34
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/inline-hoist.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/spawn-env.mjs +0 -4
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +6 -0
- package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +29 -27
- package/src/runtime/agent/orchestrator/tools/builtin/external-tool-adapters.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/find-files-tool.mjs +28 -11
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-policy.mjs +12 -3
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +203 -101
- package/src/runtime/agent/orchestrator/tools/builtin/git-repo-rw-lock.mjs +90 -41
- package/src/runtime/agent/orchestrator/tools/builtin/lib/list-helpers.mjs +17 -1
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-delivery.mjs +199 -0
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +12 -0
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-task-output.mjs +165 -39
- package/src/runtime/agent/orchestrator/tools/builtin/list-tool.mjs +25 -13
- package/src/runtime/agent/orchestrator/tools/builtin/native-search-client.mjs +113 -5
- package/src/runtime/agent/orchestrator/tools/builtin/read-batch.mjs +7 -6
- package/src/runtime/agent/orchestrator/tools/builtin/read-formatting.mjs +19 -4
- package/src/runtime/agent/orchestrator/tools/builtin/read-line-collector.mjs +5 -3
- package/src/runtime/agent/orchestrator/tools/builtin/read-single-render.mjs +25 -7
- package/src/runtime/agent/orchestrator/tools/builtin/read-special-files.mjs +2 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-render.mjs +3 -1
- package/src/runtime/agent/orchestrator/tools/builtin/search-glob-tool.mjs +12 -5
- package/src/runtime/agent/orchestrator/tools/builtin/search-grep-tool.mjs +61 -22
- package/src/runtime/agent/orchestrator/tools/builtin/search-path-diagnostics.mjs +32 -8
- package/src/runtime/agent/orchestrator/tools/builtin/shell-analysis.mjs +193 -19
- package/src/runtime/agent/orchestrator/tools/builtin/shell-direct-exe.mjs +57 -7
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +123 -32
- package/src/runtime/agent/orchestrator/tools/builtin/shell-lossless-compact.mjs +26 -1
- package/src/runtime/agent/orchestrator/tools/builtin/shell-output.mjs +13 -28
- package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +90 -11
- package/src/runtime/agent/orchestrator/tools/builtin/wait-budgets.mjs +23 -0
- package/src/runtime/agent/orchestrator/tools/builtin.mjs +54 -10
- package/src/runtime/agent/orchestrator/tools/code-graph/build.mjs +22 -28
- package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.mjs +11 -7
- package/src/runtime/agent/orchestrator/tools/destructive-warning.mjs +126 -9
- package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
- package/src/runtime/agent/orchestrator/tools/lib/owned-shell-trees.mjs +15 -6
- package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +64 -2
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +10 -2
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promotion-results.mjs +13 -3
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +8 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +6 -1
- package/src/runtime/agent/orchestrator/tools/patch/v4a-convert.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +104 -55
- package/src/runtime/agent/orchestrator/tools/shell-policy.mjs +7 -2
- package/src/runtime/agent/orchestrator/tools/shell-powershell.mjs +39 -23
- package/src/runtime/agent/orchestrator/tools/shell-snapshot.mjs +6 -2
- package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +13 -13
- package/src/runtime/attachments/office-extract.mjs +11 -9
- package/src/runtime/browser-bridge/client.mjs +24 -0
- package/src/runtime/channels/lib/scheduler.mjs +40 -12
- package/src/runtime/channels/lib/schedules-db.mjs +71 -12
- package/src/runtime/channels/lib/webhook/session-dispatch.mjs +36 -16
- package/src/runtime/channels/lib/webhook.mjs +0 -1
- package/src/runtime/channels/lib/webhooks-db.mjs +100 -10
- package/src/runtime/channels/lib/worker-main.mjs +17 -20
- package/src/runtime/computer-bridge/client.mjs +28 -1
- package/src/runtime/connectors/gmail-app-password.mjs +690 -0
- package/src/runtime/connectors/google-mcp.mjs +446 -0
- package/src/runtime/memory/lib/core-memory-access.mjs +69 -0
- package/src/runtime/memory/lib/core-memory-file.mjs +16 -8
- package/src/runtime/memory/lib/core-memory-index.mjs +15 -9
- package/src/runtime/memory/lib/core-memory-management.mjs +10 -4
- package/src/runtime/memory/lib/core-memory-store.mjs +53 -30
- package/src/runtime/memory/lib/core-memory-uniqueness.mjs +10 -6
- package/src/runtime/memory/lib/embedding-tokenizer.mjs +32 -18
- package/src/runtime/memory/lib/http-router/session-routes.mjs +3 -2
- package/src/runtime/memory/lib/memory-action-handlers/core-actions.mjs +44 -14
- package/src/runtime/memory/lib/memory-schema/core-and-meta.mjs +11 -0
- package/src/runtime/memory/lib/memory.mjs +7 -1
- package/src/runtime/memory/lib/query-core-recall.mjs +9 -1
- package/src/runtime/memory/lib/query-hybrid-search.mjs +2 -0
- package/src/runtime/memory/lib/runtime-fetcher.mjs +1 -1
- package/src/runtime/memory/lib/tool-call-handler.mjs +9 -5
- package/src/runtime/memory/tool-defs.mjs +5 -0
- package/src/runtime/office/authoring/pptx-script-normalize.mjs +11 -8
- package/src/runtime/office/core/tabular.mjs +1 -1
- package/src/runtime/office/design/library/design-template-inspect.mjs +7 -4
- package/src/runtime/office/portable/docx-formatting.mjs +1 -1
- package/src/runtime/office/portable/docx-runs.mjs +1 -1
- package/src/runtime/office/portable/docx-tracked-edits.mjs +2 -2
- package/src/runtime/office/portable/portable-docx-edits.mjs +11 -10
- package/src/runtime/office/portable/portable-docx-operations.mjs +21 -17
- package/src/runtime/office/portable/portable-docx-parts.mjs +15 -9
- package/src/runtime/office/portable/portable-docx-styles.mjs +4 -1
- package/src/runtime/office/portable/portable-docx-xml.mjs +9 -9
- package/src/runtime/office/portable/portable-opc.mjs +27 -13
- package/src/runtime/office/portable/portable-pivot.mjs +3 -3
- package/src/runtime/office/portable/portable-pptx-chart.mjs +3 -3
- package/src/runtime/office/portable/portable-pptx-charts.mjs +24 -18
- package/src/runtime/office/portable/portable-pptx-core.mjs +5 -5
- package/src/runtime/office/portable/portable-pptx-deck.mjs +8 -4
- package/src/runtime/office/portable/portable-pptx-package.mjs +7 -4
- package/src/runtime/office/portable/portable-pptx-shapes.mjs +18 -9
- package/src/runtime/office/portable/portable-sheet-parts.mjs +9 -3
- package/src/runtime/office/portable/portable-sheet-xml.mjs +5 -5
- package/src/runtime/office/portable/portable-xlsx-charts.mjs +4 -1
- package/src/runtime/office/portable/portable-xlsx-drawings.mjs +10 -6
- package/src/runtime/office/portable/portable-xlsx-operations.mjs +8 -5
- package/src/runtime/office/portable/portable-xlsx-pivot-ops.mjs +1 -1
- package/src/runtime/office/portable/portable-xlsx-reference-shift.mjs +11 -7
- package/src/runtime/office/portable/portable-xlsx-sheet-edits.mjs +6 -3
- package/src/runtime/office/portable/portable-xml.mjs +1 -1
- package/src/runtime/shared/agent-avatar-sprites.mjs +445 -0
- package/src/runtime/shared/agent-avatar.d.mts +64 -0
- package/src/runtime/shared/agent-avatar.mjs +320 -0
- package/src/runtime/shared/agent-route-config.d.mts +3 -0
- package/src/runtime/shared/agent-route-config.mjs +16 -0
- package/src/runtime/shared/atomic-file.mjs +36 -14
- package/src/runtime/shared/background-tasks.mjs +60 -20
- package/src/runtime/shared/child-spawn-gate.mjs +26 -16
- package/src/runtime/shared/config.mjs +8 -11
- package/src/runtime/shared/connector-accounts.mjs +15 -0
- package/src/runtime/shared/connector-catalog.d.mts +52 -0
- package/src/runtime/shared/connector-catalog.mjs +230 -0
- package/src/runtime/shared/connector-triggers.d.mts +3 -0
- package/src/runtime/shared/connector-triggers.mjs +43 -0
- package/src/runtime/shared/file-lock.mjs +7 -1
- package/src/runtime/shared/file-permissions-worker.mjs +38 -0
- package/src/runtime/shared/file-permissions.d.mts +19 -4
- package/src/runtime/shared/file-permissions.mjs +310 -4
- package/src/runtime/shared/git-runner-worker.mjs +6 -78
- package/src/runtime/shared/google-oauth-client.mjs +24 -0
- package/src/runtime/shared/held-request-host.d.mts +12 -0
- package/src/runtime/shared/held-request-host.mjs +71 -0
- package/src/runtime/shared/llm/http-agent.mjs +7 -3
- package/src/runtime/shared/llm/provider-catalog-registry.mjs +10 -0
- package/src/runtime/shared/llm/usage-accounting.mjs +2 -0
- package/src/runtime/shared/llm/usage-ledger-import.mjs +32 -3
- package/src/runtime/shared/llm/usage-ledger-rollup.mjs +12 -5
- package/src/runtime/shared/llm/usage-ledger-worker.mjs +1 -1
- package/src/runtime/shared/llm/usage-ledger.mjs +20 -5
- package/src/runtime/shared/memory-snapshot.mjs +5 -1
- package/src/runtime/shared/notify-trace.mjs +8 -1
- package/src/runtime/shared/plain-preview.d.mts +1 -0
- package/src/runtime/shared/plain-preview.mjs +28 -0
- package/src/runtime/shared/pristine-execution-contract.json +5 -1
- package/src/runtime/shared/process-runner-worker.mjs +7 -0
- package/src/runtime/shared/process-runner.mjs +38 -0
- package/src/runtime/shared/provider-accounts.mjs +2 -1
- package/src/runtime/shared/provider-api-key.mjs +0 -1
- package/src/runtime/shared/read-row-numbers.mjs +1 -1
- package/src/runtime/shared/resource-admission.mjs +60 -18
- package/src/runtime/shared/routine-limits.d.mts +11 -0
- package/src/runtime/shared/routine-limits.mjs +21 -0
- package/src/runtime/shared/routine-trigger.d.mts +10 -0
- package/src/runtime/shared/routine-trigger.mjs +44 -0
- package/src/runtime/shared/run-child.mjs +84 -0
- package/src/runtime/shared/schedule-model-ref.mjs +9 -10
- package/src/runtime/shared/session-activity-signal.mjs +23 -0
- package/src/runtime/shared/shell-output-summary.mjs +23 -0
- package/src/runtime/shared/singleton-owner.mjs +126 -42
- package/src/runtime/shared/slow-span.mjs +4 -12
- package/src/runtime/shared/statusline/statusline-segments.mjs +13 -1
- package/src/runtime/shared/tool-output-limit.mjs +4 -2
- package/src/runtime/shared/tool-output-marker.mjs +58 -0
- package/src/runtime/shared/transcript-metadata.mjs +10 -0
- package/src/runtime/shared/turn-changes.mjs +0 -8
- package/src/runtime/shared/usage-readout-totals.mjs +56 -0
- package/src/runtime/shared/user-data-guard.mjs +131 -34
- package/src/runtime/shared/worktrees/activity-gate.mjs +33 -8
- package/src/runtime/shared/worktrees/git-head.mjs +20 -2
- package/src/runtime/shared/worktrees/lock.mjs +3 -2
- package/src/runtime/terminal-bridge/tool-defs.mjs +1 -1
- package/src/runtime/tidy/runners/biome.mjs +3 -1
- package/src/runtime/tidy/shadow.mjs +2 -1
- package/src/runtime/web-search/index.mjs +5 -7
- package/src/runtime/web-search/lib/formatter.mjs +42 -6
- package/src/runtime/web-search/tool-defs.mjs +6 -1
- package/src/session-runtime/agent-home-delivery.mjs +459 -0
- package/src/session-runtime/agent-profile-changes.mjs +21 -0
- package/src/session-runtime/agent-room-delivery.mjs +92 -0
- package/src/session-runtime/agent-task-sessions.mjs +200 -0
- package/src/session-runtime/boot/apis.mjs +50 -18
- package/src/session-runtime/boot/facade.mjs +5 -8
- package/src/session-runtime/boot/infrastructure.mjs +28 -17
- package/src/session-runtime/boot/tools.mjs +3 -0
- package/src/session-runtime/channel-config-api.mjs +53 -5
- package/src/session-runtime/cwd-plugins/core-memory-context.mjs +36 -20
- package/src/session-runtime/cwd-plugins/plugin-status.mjs +6 -1
- package/src/session-runtime/held-requests.mjs +228 -0
- package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +121 -0
- package/src/session-runtime/internal-tool-executor/feature-tools.mjs +5 -1
- package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +31 -2
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +31 -2
- package/src/session-runtime/internal-tool-executor.mjs +2 -0
- package/src/session-runtime/lifecycle/session-catalog.mjs +9 -0
- package/src/session-runtime/lifecycle/session-switch/context-switch.mjs +4 -3
- package/src/session-runtime/lifecycle/session-switch/resume.mjs +11 -4
- package/src/session-runtime/lifecycle/session-switch/session-delete.mjs +3 -3
- package/src/session-runtime/lifecycle/shared.mjs +25 -2
- package/src/session-runtime/lifecycle/teardown/session-close.mjs +2 -0
- package/src/session-runtime/lifecycle/teardown.mjs +5 -2
- package/src/session-runtime/lifecycle-api.mjs +3 -1
- package/src/session-runtime/mcp-glue/server-catalog.mjs +8 -0
- package/src/session-runtime/mcp-glue/server-input.mjs +3 -0
- package/src/session-runtime/mcp-oauth-login.mjs +112 -15
- package/src/session-runtime/model-route/set-route.mjs +14 -3
- package/src/session-runtime/owned-automation-run.mjs +229 -0
- package/src/session-runtime/provider-auth/login.mjs +10 -6
- package/src/session-runtime/provider-auth/setup.mjs +19 -2
- package/src/session-runtime/provider-catalog-cache.mjs +101 -25
- package/src/session-runtime/provider-models/catalog-load.mjs +14 -3
- package/src/session-runtime/provider-models/row-hydration.mjs +4 -0
- package/src/session-runtime/provider-models.mjs +76 -10
- package/src/session-runtime/provider-readiness.mjs +4 -0
- package/src/session-runtime/resource-api.mjs +5 -0
- package/src/session-runtime/resource-mcp-api.mjs +107 -13
- package/src/session-runtime/resource-skills-api.mjs +12 -0
- package/src/session-runtime/room-member-gate.mjs +48 -0
- package/src/session-runtime/routine-home-turn.mjs +156 -0
- package/src/session-runtime/routine-owner.mjs +48 -0
- package/src/session-runtime/schedule-session-run.mjs +30 -64
- package/src/session-runtime/services/agent-tool/close-flow.mjs +2 -1
- package/src/session-runtime/services/agent-tool/helpers.mjs +10 -0
- package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +10 -2
- package/src/session-runtime/services/agent-tool/job-views/session-progress.mjs +13 -4
- package/src/session-runtime/services/agent-tool/notify.mjs +15 -4
- package/src/session-runtime/services/agent-tool/restart-notify.mjs +134 -0
- package/src/session-runtime/services/agent-tool/send-flow.mjs +24 -1
- package/src/session-runtime/services/agent-tool/spawn-flow/deferred-spawn.mjs +2 -1
- package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +4 -3
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-plan.mjs +19 -4
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +2 -0
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +5 -1
- package/src/session-runtime/services/agent-tool/tag-registry/tag-lookup.mjs +8 -3
- package/src/session-runtime/services/agent-tool/tag-registry.mjs +3 -0
- package/src/session-runtime/services/agent-tool/worker-index/row-shape.mjs +4 -0
- package/src/session-runtime/services/agent-tool/worker-index.mjs +44 -10
- package/src/session-runtime/services/agent-tool.mjs +20 -0
- package/src/session-runtime/services/channel-admin.mjs +93 -24
- package/src/session-runtime/services/memory-access.mjs +37 -0
- package/src/session-runtime/services/provider-admin.mjs +166 -59
- package/src/session-runtime/services/schedule-access.mjs +91 -0
- package/src/session-runtime/services/usage-dashboard-model.mjs +2 -2
- package/src/session-runtime/services/usage-dashboard.mjs +27 -69
- package/src/session-runtime/session-create/session-options.mjs +34 -7
- package/src/session-runtime/session-hooks.mjs +16 -8
- package/src/session-runtime/setup-tool/executor.mjs +68 -6
- package/src/session-runtime/setup-tool/extended-actions.mjs +72 -14
- package/src/session-runtime/setup-tool/settings-contract.mjs +8 -6
- package/src/session-runtime/setup-tool/tool-defs.mjs +8 -0
- package/src/session-runtime/skills-api.mjs +16 -1
- package/src/session-runtime/tool-policy-refresh.mjs +238 -29
- package/src/session-runtime/turn/session-ops.mjs +10 -3
- package/src/session-runtime/turn/turn-run/ask-callbacks.mjs +11 -2
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +3 -0
- package/src/session-runtime/usage-stats-api.mjs +6 -1
- package/src/session-runtime/webhook-session-run.mjs +49 -67
- package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +239 -0
- package/src/session-runtime/workflow-agents-api/agent-editor.mjs +556 -22
- package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +11 -1
- package/src/session-runtime/workflow-agents-api.mjs +4 -1
- package/src/standalone/channel-transport/http-routes.mjs +10 -9
- package/src/standalone/daemon-agent-control.mjs +1 -8
- package/src/standalone/daemon-desktop-runtime.mjs +20 -7
- package/src/standalone/daemon-owner.mjs +117 -25
- package/src/standalone/daemon-session-control.mjs +11 -2
- package/src/standalone/daemon.mjs +61 -17
- package/src/standalone/session-call-cache.mjs +6 -0
- package/src/standalone/session-protocol.mjs +28 -1
- package/src/standalone/session-service/retention/busy.mjs +7 -2
- package/src/standalone/session-service/session-calls/session-turns.mjs +9 -0
- package/src/standalone/session-service.mjs +19 -0
- package/src/standalone/session-transport/routes.mjs +7 -6
- package/src/tui/app/model-options.mjs +39 -2
- package/src/tui/app/model-picker.mjs +16 -2
- package/src/tui/app/provider-setup-picker.mjs +1 -2
- package/src/tui/app/slash-commands.mjs +20 -0
- package/src/tui/dist/index.mjs +487 -128
- package/src/tui/session/context-state.mjs +6 -1
- package/src/tui/session/notice-surface.mjs +35 -4
- package/src/tui/session/notice-text.mjs +0 -1
- package/src/tui/session/queue-helpers.mjs +2 -1
- package/src/tui/session/session-api/extensions.mjs +4 -0
- package/src/tui/session/session-api/intake/submission.mjs +12 -13
- package/src/tui/session/session-api/integrations.mjs +9 -5
- package/src/tui/session/session-api/lifecycle/session-reset.mjs +13 -3
- package/src/tui/session/session-api/lifecycle.mjs +17 -1
- package/src/tui/session/session-api/routes.mjs +48 -3
- package/src/tui/session/session-flow/drain.mjs +20 -3
- package/src/tui/session/session-flow/queue/entry-shape.mjs +2 -1
- package/src/tui/session/session-flow/queue/take-entries.mjs +3 -2
- package/src/tui/session/session-flow/steering.mjs +104 -24
- package/src/tui/session/session-flow.mjs +2 -0
- package/src/tui/session/tool-approval.mjs +26 -5
- package/src/tui/session/transcript-intake.mjs +6 -2
- package/src/tui/session/transcript-spill.mjs +5 -1
- package/src/tui/session/tui-steering-persist.mjs +65 -42
- package/src/tui/session/turn-live-call.mjs +56 -0
- package/src/tui/session/turn-stream.mjs +33 -0
- package/src/tui/session/turn.mjs +50 -7
- package/src/ui/statusline.mjs +1 -6
- package/src/ui/streaming-markdown-heal.mjs +24 -7
- package/src/vendor/statusline/bin/statusline-route.mjs +0 -1
- package/src/vendor/statusline/src/gateway/route-meta.mjs +0 -1
- package/src/workflows/default/WORKFLOW.md +9 -13
- package/src/session-runtime/automation-agents.mjs +0 -94
- package/src/session-runtime/automation-workflow.mjs +0 -59
|
@@ -9,7 +9,18 @@ export const SESSION_READ_ACTIONS = Object.freeze([
|
|
|
9
9
|
'inspectProjectBranch',
|
|
10
10
|
'isSessionTerminal',
|
|
11
11
|
'contextStatus',
|
|
12
|
+
'agentDefinitionPresence',
|
|
13
|
+
'archivedAgentIdentities',
|
|
12
14
|
'getAgentDefinition',
|
|
15
|
+
'getAgentAvatarImage',
|
|
16
|
+
'getAgentConnectors',
|
|
17
|
+
'getProjectConnectors',
|
|
18
|
+
'getAgentPermissions',
|
|
19
|
+
'listConnectors',
|
|
20
|
+
'listConnectorTools',
|
|
21
|
+
'getLeadPersona',
|
|
22
|
+
'getLeadAgentBody',
|
|
23
|
+
'getLeadStatus',
|
|
13
24
|
'getAutoClear',
|
|
14
25
|
'getChannelSettings',
|
|
15
26
|
'getChannelSetup',
|
|
@@ -91,6 +102,7 @@ export const SESSION_CONFIGURE_ACTIONS = Object.freeze([
|
|
|
91
102
|
'addPlugin',
|
|
92
103
|
'addSkill',
|
|
93
104
|
'agentControl',
|
|
105
|
+
'appendRoomRows',
|
|
94
106
|
'askSide',
|
|
95
107
|
'authenticateProvider',
|
|
96
108
|
'beginOAuthProviderLogin',
|
|
@@ -111,6 +123,8 @@ export const SESSION_CONFIGURE_ACTIONS = Object.freeze([
|
|
|
111
123
|
'consumeCodexRateLimitResetCredit',
|
|
112
124
|
'createWorkflow',
|
|
113
125
|
'deleteAgentDefinition',
|
|
126
|
+
'restoreAgentDefinition',
|
|
127
|
+
'purgeAgentDefinition',
|
|
114
128
|
'deleteHookRule',
|
|
115
129
|
'deleteMediaAsset',
|
|
116
130
|
'deleteMediaAssets',
|
|
@@ -118,6 +132,7 @@ export const SESSION_CONFIGURE_ACTIONS = Object.freeze([
|
|
|
118
132
|
'saveCustomProvider',
|
|
119
133
|
'removeCustomProvider',
|
|
120
134
|
'updateCustomProviderModel',
|
|
135
|
+
'setModelPreferences',
|
|
121
136
|
'testCustomProvider',
|
|
122
137
|
'checkCustomProviderKeyEnv',
|
|
123
138
|
'discoverCustomProviderModels',
|
|
@@ -141,7 +156,9 @@ export const SESSION_CONFIGURE_ACTIONS = Object.freeze([
|
|
|
141
156
|
'reloadSkills',
|
|
142
157
|
'rememberPromptHistory',
|
|
143
158
|
'removeMcpServer',
|
|
159
|
+
'removeSkill',
|
|
144
160
|
'continueSessionInModel',
|
|
161
|
+
'decideRoomTurn',
|
|
145
162
|
'scheduleQuotaResume',
|
|
146
163
|
'cancelQuotaResume',
|
|
147
164
|
'retryFailedTurn',
|
|
@@ -163,10 +180,20 @@ export const SESSION_CONFIGURE_ACTIONS = Object.freeze([
|
|
|
163
180
|
'runDoctor',
|
|
164
181
|
'runScheduleNow',
|
|
165
182
|
'runUpdateNow',
|
|
183
|
+
'runWebhookNow',
|
|
184
|
+
'retryRoutineDelivery',
|
|
166
185
|
'saveAgentDefinition',
|
|
186
|
+
'setAgentConnectors',
|
|
187
|
+
'setAgentConnectorEnabled',
|
|
188
|
+
'setAgentConnectorToolPermission',
|
|
189
|
+
'setProjectConnectorEnabled',
|
|
190
|
+
'setAgentPermission',
|
|
191
|
+
'saveLeadPersona',
|
|
192
|
+
'saveLeadAgentBody',
|
|
193
|
+
'setLeadCreated',
|
|
194
|
+
'saveLeadIdentity',
|
|
167
195
|
'saveMcpServer',
|
|
168
196
|
'saveOpenAIUsageSessionKey',
|
|
169
|
-
'saveOpenCodeGoUsageAuth',
|
|
170
197
|
'saveProviderApiKey',
|
|
171
198
|
'saveSchedule',
|
|
172
199
|
'saveSkill',
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* cannot be read is treated as busy rather than risking the loss of a live
|
|
7
7
|
* turn. The eviction sweep that consumes this lives in ../retention.mjs.
|
|
8
8
|
*/
|
|
9
|
-
import { hasActiveBackgroundTasks } from '../../../runtime/shared/background-tasks.mjs';
|
|
9
|
+
import { activeBackgroundTaskSessionIds, hasActiveBackgroundTasks } from '../../../runtime/shared/background-tasks.mjs';
|
|
10
10
|
|
|
11
11
|
export function createBusyTracker({ sessions, currentSessionId }) {
|
|
12
12
|
function stateBusy(state) {
|
|
@@ -44,10 +44,15 @@ export function createBusyTracker({ sessions, currentSessionId }) {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
// sessionBusy for every entry, with the background tasks scanned once: the
|
|
48
|
+
// owner heartbeat, telemetry and status ask this every few seconds, and a
|
|
49
|
+
// scan per session made it sessions × tasks on the event loop.
|
|
47
50
|
function liveBusyCount() {
|
|
51
|
+
const withTasks = activeBackgroundTaskSessionIds();
|
|
48
52
|
let count = 0;
|
|
49
53
|
for (const entry of sessions) {
|
|
50
|
-
|
|
54
|
+
const sessionId = currentSessionId(entry);
|
|
55
|
+
if ((sessionId && withTasks.has(sessionId)) || sessionTurnBusy(entry)) count += 1;
|
|
51
56
|
}
|
|
52
57
|
return count;
|
|
53
58
|
}
|
|
@@ -11,6 +11,9 @@ import {
|
|
|
11
11
|
} from '../../../runtime/attachments/store.mjs';
|
|
12
12
|
import { providerNativePdf } from '../../../runtime/agent/orchestrator/providers/registry.mjs';
|
|
13
13
|
import { cancelBackgroundTasks } from '../../../runtime/shared/background-tasks.mjs';
|
|
14
|
+
import { isAgentModeSession } from '../../../runtime/agent/orchestrator/session/agent-mode.mjs';
|
|
15
|
+
import { recognisedAgentRoomSlash } from '../../../tui/app/slash-commands.mjs';
|
|
16
|
+
import { promptContentText } from '../../../tui/session/queue-helpers.mjs';
|
|
14
17
|
|
|
15
18
|
/** Whether an abort on this session is an Agent cancelling its own turn: the
|
|
16
19
|
* catalog knows it, the runtime declares agent-only visibility, or it is a
|
|
@@ -76,6 +79,12 @@ export function createSessionTurnCalls(ctx) {
|
|
|
76
79
|
},
|
|
77
80
|
};
|
|
78
81
|
}
|
|
82
|
+
// A bot's conversation room runs only its own /compact and /clear (the
|
|
83
|
+
// composer's rule): every other leading `/` is message text for the model.
|
|
84
|
+
if (isAgentModeSession(entry.runtime.session ?? { id })) {
|
|
85
|
+
const text = typeof intake.prompt === 'string' ? intake.prompt : promptContentText(intake.prompt);
|
|
86
|
+
if (!recognisedAgentRoomSlash(text)) submissionOptions = { ...submissionOptions, skipSlashCommands: true };
|
|
87
|
+
}
|
|
79
88
|
const accepted = await Promise.resolve(target.call(entry.runtime, intake.prompt, submissionOptions));
|
|
80
89
|
if (accepted === true) {
|
|
81
90
|
entry.reservedOnly = false;
|
|
@@ -237,6 +237,23 @@ export function createSessionService({
|
|
|
237
237
|
return stopPromise;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
+
/** Whether the runtime hosting `sessionId` is mid-turn or holds queued input. */
|
|
241
|
+
function liveSessionBusy(sessionId) {
|
|
242
|
+
const owner = projection.sessionOwner(sessionId);
|
|
243
|
+
return Boolean(owner) && retention.stateBusy(owner.runtime?.getState?.());
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/** Show a transcript notice in the hosted runtime of `sessionId` (no turn)
|
|
247
|
+
* and publish it to its views; false when no runtime hosts it. */
|
|
248
|
+
function pushLiveSessionNotice(sessionId, { text, tone = 'info', ...options } = {}) {
|
|
249
|
+
const owner = projection.sessionOwner(sessionId);
|
|
250
|
+
if (typeof owner?.runtime?.pushNotice !== 'function') return false;
|
|
251
|
+
owner.runtime.pushNotice(text, tone, { ...options, transcript: true });
|
|
252
|
+
const step = projection.advance(owner);
|
|
253
|
+
if (step.changed) projection.publishStep(owner, step);
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
|
|
240
257
|
function getStatus() {
|
|
241
258
|
const busy = retention.liveBusyCount();
|
|
242
259
|
let watched = 0;
|
|
@@ -282,6 +299,8 @@ export function createSessionService({
|
|
|
282
299
|
},
|
|
283
300
|
methods: {
|
|
284
301
|
...calls,
|
|
302
|
+
liveSessionBusy,
|
|
303
|
+
pushLiveSessionNotice,
|
|
285
304
|
stop,
|
|
286
305
|
startQuotaResume: () => quotaResume?.start(),
|
|
287
306
|
runDueQuotaResumes: () => quotaResume?.tick() ?? Promise.resolve(),
|
|
@@ -57,9 +57,10 @@ export function createTransportRoutes({
|
|
|
57
57
|
}) {
|
|
58
58
|
// Checked on every register/call, last right before the work is handed on
|
|
59
59
|
// (after the body is read): a daemon that lost (or cannot re-verify) its
|
|
60
|
-
// owner lease serves nothing.
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
// owner lease serves nothing. `admitWork` may answer asynchronously (a
|
|
61
|
+
// request arriving during the lease's re-verification waits for it).
|
|
62
|
+
const refuseUnadmitted = async (res) => {
|
|
63
|
+
if (await admitWork()) return false;
|
|
63
64
|
sendError(res, 'daemon owner lease is not held', 503);
|
|
64
65
|
return true;
|
|
65
66
|
};
|
|
@@ -99,7 +100,7 @@ export function createTransportRoutes({
|
|
|
99
100
|
|
|
100
101
|
const register = async (req, res) => {
|
|
101
102
|
const body = await readBody(req);
|
|
102
|
-
if (refuseUnadmitted(res)) return;
|
|
103
|
+
if (await refuseUnadmitted(res)) return;
|
|
103
104
|
if (drain.committed) {
|
|
104
105
|
sendError(res, `daemon is draining: ${drain.reason}`, 503);
|
|
105
106
|
return;
|
|
@@ -150,7 +151,7 @@ export function createTransportRoutes({
|
|
|
150
151
|
};
|
|
151
152
|
|
|
152
153
|
const call = async (req, res) => {
|
|
153
|
-
if (refuseUnadmitted(res)) return;
|
|
154
|
+
if (await refuseUnadmitted(res)) return;
|
|
154
155
|
if (drain.committed) {
|
|
155
156
|
sendError(res, `daemon is draining: ${drain.reason}`, 503);
|
|
156
157
|
return;
|
|
@@ -158,7 +159,7 @@ export function createTransportRoutes({
|
|
|
158
159
|
const body = await readBody(req);
|
|
159
160
|
// Again right before dispatch: the lease may have been fenced while the
|
|
160
161
|
// body was still arriving.
|
|
161
|
-
if (refuseUnadmitted(res)) return;
|
|
162
|
+
if (await refuseUnadmitted(res)) return;
|
|
162
163
|
await callRoute(body, res);
|
|
163
164
|
};
|
|
164
165
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { theme } from '../theme.mjs';
|
|
9
9
|
import { displayModelName, effortDisplayLabel } from '../../runtime/shared/model-display.mjs';
|
|
10
10
|
import { isRollingModelAlias } from '../../runtime/shared/model-alias.mjs';
|
|
11
|
+
import { describeError } from '../../runtime/shared/error-presentation.mjs';
|
|
11
12
|
import { DAYBREAK_PROVIDER, daybreakBlueOn } from '../../runtime/shared/llm/openai-daybreak.mjs';
|
|
12
13
|
|
|
13
14
|
export const parsedModelVersion = (id) => {
|
|
@@ -183,7 +184,7 @@ const PROVIDER_DISPLAY_NAMES = new Map([
|
|
|
183
184
|
['xai-api', 'xAI API'],
|
|
184
185
|
['deepseek', 'DeepSeek API'],
|
|
185
186
|
['deepseek-api', 'DeepSeek API'],
|
|
186
|
-
['opencode-go', 'OpenCode Go
|
|
187
|
+
['opencode-go-oauth', 'OpenCode Go OAuth'],
|
|
187
188
|
['openrouter', 'OpenRouter'],
|
|
188
189
|
['mixdog-local', 'Local Provider'],
|
|
189
190
|
['default', 'Default'],
|
|
@@ -220,6 +221,42 @@ export const loadProviderDisplayNames = async (store) => {
|
|
|
220
221
|
return names;
|
|
221
222
|
};
|
|
222
223
|
|
|
224
|
+
/** `{ id, text }` for each provider whose model list failed, with the reason
|
|
225
|
+
* (the setup row's `catalogError`) and what to do about it. */
|
|
226
|
+
export const loadProviderCatalogFailures = async (store) => {
|
|
227
|
+
let setup = null;
|
|
228
|
+
try {
|
|
229
|
+
setup = await store?.getProviderSetup?.();
|
|
230
|
+
} catch {
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
const failures = [];
|
|
234
|
+
for (const group of ['api', 'oauth', 'local']) {
|
|
235
|
+
for (const entry of Array.isArray(setup?.[group]) ? setup[group] : []) {
|
|
236
|
+
const failure = entry?.catalogError;
|
|
237
|
+
if (!failure?.message) continue;
|
|
238
|
+
const { summary, recovery } = describeError({ message: failure.message, errorKind: failure.errorKind });
|
|
239
|
+
failures.push({ id: String(entry.id || '').trim(), text: [summary, recovery].filter(Boolean).join(' ') });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return failures;
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
/** Provider-list rows for failed providers that have no model rows, so an
|
|
246
|
+
* empty provider says why instead of being absent. */
|
|
247
|
+
export const buildCatalogFailureItems = (failures, models, providerNames = null) =>
|
|
248
|
+
failures
|
|
249
|
+
.filter(({ id }) => id && !models.some((model) => model.provider === id))
|
|
250
|
+
.map(({ id, text }) => ({
|
|
251
|
+
value: `provider-failed:${id}`,
|
|
252
|
+
label: resolveProviderDisplayName(id, providerNames),
|
|
253
|
+
marker: '!',
|
|
254
|
+
markerColor: theme.error,
|
|
255
|
+
description: text,
|
|
256
|
+
_action: 'catalog-failed',
|
|
257
|
+
_failure: text,
|
|
258
|
+
}));
|
|
259
|
+
|
|
223
260
|
const PROVIDER_DISPLAY_RANKS = {
|
|
224
261
|
default: 0,
|
|
225
262
|
'openai-oauth': 10,
|
|
@@ -230,7 +267,7 @@ const PROVIDER_DISPLAY_RANKS = {
|
|
|
230
267
|
'mimo-oauth': 34,
|
|
231
268
|
'antigravity-oauth': 31,
|
|
232
269
|
'cursor-oauth': 32,
|
|
233
|
-
'opencode-go':
|
|
270
|
+
'opencode-go-oauth': 34.5,
|
|
234
271
|
openai: 40,
|
|
235
272
|
'openai-api': 40,
|
|
236
273
|
anthropic: 50,
|
|
@@ -10,7 +10,13 @@
|
|
|
10
10
|
* state (getState) is read through a getter so it always reflects the current
|
|
11
11
|
* render.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
normalizeModelOptions,
|
|
15
|
+
buildCatalogFailureItems,
|
|
16
|
+
buildModelProviderItems,
|
|
17
|
+
loadProviderCatalogFailures,
|
|
18
|
+
loadProviderDisplayNames,
|
|
19
|
+
} from './model-options.mjs';
|
|
14
20
|
import { createModelCatalog } from './model-picker/catalog-load.mjs';
|
|
15
21
|
import { openProviderModelsPicker, saveSelectedRoute } from './model-picker/provider-models-list.mjs';
|
|
16
22
|
|
|
@@ -78,6 +84,7 @@ export function createModelPicker({
|
|
|
78
84
|
|
|
79
85
|
const models = normalizeModelOptions(providerModels);
|
|
80
86
|
const providerNames = await loadProviderDisplayNames(store);
|
|
87
|
+
const catalogFailures = await loadProviderCatalogFailures(store);
|
|
81
88
|
const activeRoute = options.currentRoute || {
|
|
82
89
|
provider: state.provider,
|
|
83
90
|
model: state.model,
|
|
@@ -116,7 +123,10 @@ export function createModelPicker({
|
|
|
116
123
|
providerListHighlightProvider = renderOptions.highlightProvider;
|
|
117
124
|
}
|
|
118
125
|
const highlightProvider = renderOptions.highlightProvider || providerListHighlightProvider || null;
|
|
119
|
-
const providerItems =
|
|
126
|
+
const providerItems = [
|
|
127
|
+
...buildModelProviderItems(models, activeRoute, providerNames),
|
|
128
|
+
...buildCatalogFailureItems(catalogFailures, models, providerNames),
|
|
129
|
+
];
|
|
120
130
|
const providerHighlight = highlightProvider || activeRoute?.provider || null;
|
|
121
131
|
const providerInitialIndex = Math.max(
|
|
122
132
|
0,
|
|
@@ -133,6 +143,10 @@ export function createModelPicker({
|
|
|
133
143
|
pickerKey: `model-picker:providers:${providerHighlight || 'default'}`,
|
|
134
144
|
items: providerItems,
|
|
135
145
|
onSelect: (_value, item) => {
|
|
146
|
+
if (item?._failure) {
|
|
147
|
+
store.pushNotice(`${item.label}: ${item._failure}`, 'warn');
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
136
150
|
if (!item?._provider) return;
|
|
137
151
|
openProviderModelsPicker({
|
|
138
152
|
view,
|
|
@@ -74,8 +74,7 @@ export function createProviderSetupPicker({
|
|
|
74
74
|
setSettingsPrompt(null);
|
|
75
75
|
// Close full-panel overlays too: they render ahead of providerPrompt in
|
|
76
76
|
// the floating-panel chain, so a lingering usage/context panel would mask
|
|
77
|
-
// any text-entry prompt opened from the provider actions
|
|
78
|
-
// OpenCode Go cookie prompt appeared to do nothing).
|
|
77
|
+
// any text-entry prompt opened from the provider actions.
|
|
79
78
|
own.context(null);
|
|
80
79
|
closeUsagePanel();
|
|
81
80
|
// Onboarding (and any caller) can pass a preloaded provider setup so we skip
|
|
@@ -142,6 +142,26 @@ for (const command of SLASH_COMMANDS) {
|
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
+
/**
|
|
146
|
+
* The registered command a prompt runs, by the renderer's rule
|
|
147
|
+
* (apps/desktop renderer/slash-commands.ts recognisedSlashSpan): the text,
|
|
148
|
+
* trimmed, begins with `/` and its first whitespace-delimited token names a
|
|
149
|
+
* command or alias. Returns that token lowercased, else null: any other
|
|
150
|
+
* leading `/` (an absolute path, a stray word) is ordinary message text.
|
|
151
|
+
*/
|
|
152
|
+
export function recognisedSlashToken(text) {
|
|
153
|
+
const token = /^\s*\/(\S+)/.exec(String(text ?? ''))?.[1].toLowerCase();
|
|
154
|
+
return token && SLASH_COMMAND_BY_TOKEN.has(token) ? token : null;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/** The only commands a bot's conversation room runs, by their literal name
|
|
158
|
+
* (`/new` stays text); mirrors the renderer's recognisedAgentRoomSlash. */
|
|
159
|
+
const AGENT_ROOM_SLASH_TOKENS = new Set(['compact', 'clear']);
|
|
160
|
+
|
|
161
|
+
export function recognisedAgentRoomSlash(text) {
|
|
162
|
+
return AGENT_ROOM_SLASH_TOKENS.has(recognisedSlashToken(text));
|
|
163
|
+
}
|
|
164
|
+
|
|
145
165
|
export function normalizeSlashCommandName(cmd) {
|
|
146
166
|
const name = String(cmd || '').toLowerCase();
|
|
147
167
|
return SLASH_COMMAND_BY_TOKEN.get(name)?.name || name;
|