mixdog 1.3.1 → 1.3.3
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 +8 -4
- package/package.json +8 -8
- package/scripts/native-release-status.mjs +238 -0
- package/scripts/verify-runtime-dependency-versions.mjs +158 -0
- package/src/agents/reviewer/AGENT.md +5 -7
- package/src/agents/reviewer/agent.json +1 -1
- package/src/defaults/shipped-history.json +9 -1
- package/src/defaults/skills/browser-use/SKILL.md +6 -3
- package/src/defaults/skills/local-provider/SKILL.md +33 -6
- package/src/defaults/skills/pptx/scripts/qc-pages.mjs +3 -2
- package/src/defaults/skills/setup/SKILL.md +23 -1
- package/src/defaults/skills/setup/references/actions.md +50 -3
- package/src/defaults/skills/setup/references/surfaces.md +23 -3
- package/src/defaults/skills/setup-guide/SKILL.md +7 -3
- package/src/defaults/skills/visualize/SKILL.md +9 -6
- package/src/defaults/skills/visualize/references/craft.md +8 -1
- package/src/help.mjs +1 -1
- package/src/lib/keychain-cjs.cjs +4 -1
- package/src/lib/rules-builder.cjs +14 -7
- package/src/rules/agent-mode/AGENT_MODE.md +8 -5
- package/src/rules/agent-mode/MIXY.md +6 -8
- package/src/rules/lead/LEAD.md +7 -10
- package/src/rules/shared/10-tool-workflow.md +4 -0
- package/src/rules/shared/20-research.md +2 -0
- package/src/rules/shared/45-destructive.md +5 -1
- package/src/rules/shared/60-verification.md +6 -4
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/preset.mjs +5 -0
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/session-prep.mjs +8 -0
- package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +6 -1
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +114 -26
- package/src/runtime/agent/orchestrator/agent-runtime/maintenance-route.mjs +8 -0
- package/src/runtime/agent/orchestrator/agent-runtime/room-supervisor-completion.mjs +5 -4
- package/src/runtime/agent/orchestrator/agent-trace.mjs +3 -0
- package/src/runtime/agent/orchestrator/cache-break-trace.mjs +4 -0
- package/src/runtime/agent/orchestrator/config-presets.mjs +2 -0
- package/src/runtime/agent/orchestrator/config-storage.mjs +10 -3
- package/src/runtime/agent/orchestrator/config.mjs +11 -0
- package/src/runtime/agent/orchestrator/context/role-instructions.mjs +9 -2
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +97 -5
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +6 -10
- package/src/runtime/agent/orchestrator/mcp/client.mjs +7 -4
- package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +84 -32
- package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens.mjs +38 -11
- package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +15 -3
- package/src/runtime/agent/orchestrator/providers/anthropic-model-resolve.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +84 -42
- package/src/runtime/agent/orchestrator/providers/anthropic-turn-result.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +14 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-request.mjs +6 -2
- package/src/runtime/agent/orchestrator/providers/auto-effort.mjs +27 -8
- package/src/runtime/agent/orchestrator/providers/cursor-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/cursor-wire.mjs +31 -4
- package/src/runtime/agent/orchestrator/providers/cursor.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +14 -1
- package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +11 -8
- package/src/runtime/agent/orchestrator/providers/grok-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-prefix-trace.mjs +76 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +16 -0
- package/src/runtime/agent/orchestrator/providers/lib/tail-reminder-split.mjs +13 -0
- package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +16 -1
- package/src/runtime/agent/orchestrator/providers/mixdog-local.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/model-proxy-provider.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-codex-metadata.mjs +5 -5
- package/src/runtime/agent/orchestrator/providers/openai-compat-models.mjs +9 -5
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +9 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/openai-direct-request.mjs +30 -3
- package/src/runtime/agent/orchestrator/providers/openai-model-capabilities.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +61 -8
- package/src/runtime/agent/orchestrator/providers/registry.mjs +19 -0
- package/src/runtime/agent/orchestrator/providers/wire-gateway.mjs +13 -1
- package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +90 -24
- package/src/runtime/agent/orchestrator/runtime-core/fs-utils.mjs +8 -1
- package/src/runtime/agent/orchestrator/runtime-core/goal-mutations.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/goal-runtime.mjs +5 -0
- package/src/runtime/agent/orchestrator/runtime-core/goal-storage.mjs +68 -22
- package/src/runtime/agent/orchestrator/runtime-core/goal-tool-exec.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/goal-turns.mjs +10 -1
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +4 -6
- package/src/runtime/agent/orchestrator/runtime-core/route-context-state.mjs +81 -0
- package/src/runtime/agent/orchestrator/runtime-core/session-text.mjs +2 -1
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +52 -6
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +35 -13
- package/src/runtime/agent/orchestrator/runtime-core/workflow/agents.mjs +7 -6
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/workflow/packs.mjs +8 -4
- package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +8 -3
- package/src/runtime/agent/orchestrator/session/agent-loop.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/agent-mode.mjs +0 -6
- package/src/runtime/agent/orchestrator/session/agent-room-supervisor.d.mts +1 -1
- package/src/runtime/agent/orchestrator/session/agent-room-supervisor.mjs +22 -4
- package/src/runtime/agent/orchestrator/session/agent-room.d.mts +30 -2
- package/src/runtime/agent/orchestrator/session/agent-room.mjs +196 -45
- package/src/runtime/agent/orchestrator/session/attachment-preflight.mjs +80 -0
- package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/compact/continuation.mjs +15 -6
- package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +45 -19
- package/src/runtime/agent/orchestrator/session/compact/forked-summary.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/compact/messages.mjs +44 -0
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +185 -37
- package/src/runtime/agent/orchestrator/session/compact/summary-mode.mjs +16 -0
- package/src/runtime/agent/orchestrator/session/compact/summary-route.mjs +87 -0
- package/src/runtime/agent/orchestrator/session/compact/summary.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/compact/text-utils.mjs +6 -2
- package/src/runtime/agent/orchestrator/session/compact/user-message-kind.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/compaction-archive-capture.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/context-utils.mjs +41 -10
- package/src/runtime/agent/orchestrator/session/human-gate/delegation.mjs +240 -0
- package/src/runtime/agent/orchestrator/session/human-gate/gate.mjs +102 -35
- package/src/runtime/agent/orchestrator/session/human-gate/outbound-policy.mjs +20 -0
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +19 -9
- package/src/runtime/agent/orchestrator/session/human-gate/run-policy.mjs +73 -0
- package/src/runtime/agent/orchestrator/session/human-gate/store.mjs +55 -27
- package/src/runtime/agent/orchestrator/session/human-gate/unattended-port.mjs +15 -0
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +199 -109
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/continuation.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/empty-nudge.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/output-limit.mjs +62 -13
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn.mjs +22 -6
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +6 -2
- package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +5 -5
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +10 -0
- package/src/runtime/agent/orchestrator/session/loop/steering.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +33 -8
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/call-prep.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +27 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +12 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +11 -5
- package/src/runtime/agent/orchestrator/session/manager/agent-listing-notice.mjs +102 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-queue.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +13 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +13 -2
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +27 -14
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +14 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-steering-drain.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +44 -18
- package/src/runtime/agent/orchestrator/session/manager/idle-cleanup.mjs +32 -1
- package/src/runtime/agent/orchestrator/session/manager/orchestration-mode-switch-notice.mjs +115 -0
- package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +42 -0
- package/src/runtime/agent/orchestrator/session/manager/pending-message-entry.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +3 -9
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-file.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-shard.mjs +5 -3
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +36 -0
- package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +40 -1
- package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +12 -0
- package/src/runtime/agent/orchestrator/session/manager/runtime-state.mjs +20 -0
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +28 -9
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +55 -27
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +4 -9
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +14 -1
- package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +7 -3
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +6 -15
- package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +24 -8
- package/src/runtime/agent/orchestrator/session/manager/workflow-switch-notice.mjs +94 -13
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +52 -11
- package/src/runtime/agent/orchestrator/session/provider-prefix-guard.mjs +21 -3
- package/src/runtime/agent/orchestrator/session/routine-result.d.mts +18 -3
- package/src/runtime/agent/orchestrator/session/routine-result.mjs +126 -12
- package/src/runtime/agent/orchestrator/session/runtime-user-context.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +16 -3
- package/src/runtime/agent/orchestrator/session/side-question-store.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/store/canonical-reader.mjs +41 -7
- package/src/runtime/agent/orchestrator/session/store/lifecycle-barriers.mjs +10 -2
- package/src/runtime/agent/orchestrator/session/store/load-cache.mjs +14 -2
- package/src/runtime/agent/orchestrator/session/store/session-delete.mjs +15 -1
- package/src/runtime/agent/orchestrator/session/store/sweep/stale-sweep.mjs +5 -4
- package/src/runtime/agent/orchestrator/session/store/sweep/sub-agent-retention.mjs +140 -0
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-plan.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-record.mjs +15 -5
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-row.mjs +49 -1
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +80 -1
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +40 -5
- package/src/runtime/agent/orchestrator/session/store-summary-last-message.mjs +47 -2
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +33 -1
- package/src/runtime/agent/orchestrator/session/store-summary-visibility.d.mts +5 -0
- package/src/runtime/agent/orchestrator/session/store-summary-visibility.mjs +37 -0
- package/src/runtime/agent/orchestrator/session/store.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/tail-reminder-rules.mjs +125 -0
- package/src/runtime/agent/orchestrator/session/tool-batch/finalize.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/tool-result-offload.mjs +78 -43
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +35 -5
- package/src/runtime/agent/orchestrator/session/transcript-restore/user-text.mjs +42 -2
- package/src/runtime/agent/orchestrator/tools/builtin/advisory-lock.mjs +47 -14
- package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +25 -5
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +6 -3
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +13 -14
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/transport-artifacts.mjs +9 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +19 -14
- package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +7 -1
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +127 -20
- package/src/runtime/agent/orchestrator/tools/builtin/git-worktree-tool.mjs +557 -0
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +10 -12
- package/src/runtime/agent/orchestrator/tools/builtin/pdf-test-fixtures.mjs +5 -3
- package/src/runtime/agent/orchestrator/tools/builtin/read-image.mjs +4 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-single-media.mjs +47 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-special-files.mjs +264 -87
- package/src/runtime/agent/orchestrator/tools/builtin/shell-analysis.mjs +10 -4
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +42 -23
- package/src/runtime/agent/orchestrator/tools/code-graph/constants.mjs +8 -4
- package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +9 -30
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +24 -12
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +3 -2
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +6 -2
- package/src/runtime/agent/orchestrator/tools/patch/delete-quarantine.mjs +2 -1
- package/src/runtime/agent/orchestrator/tools/patch/replay-capture.mjs +4 -2
- package/src/runtime/agent/orchestrator/tools/patch/rollback-state.mjs +33 -2
- package/src/runtime/agent/orchestrator/tools/patch-manifest.json +13 -13
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +5 -3
- package/src/runtime/agent/orchestrator/tools/shell-exec-output.mjs +3 -1
- package/src/runtime/attachments/attachment-reference.mjs +155 -0
- package/src/runtime/attachments/legacy-office.mjs +110 -0
- package/src/runtime/attachments/limits.mjs +5 -1
- package/src/runtime/attachments/office-extract.mjs +3 -6
- package/src/runtime/attachments/pdf-extract.mjs +84 -10
- package/src/runtime/attachments/prompt-restore.mjs +70 -0
- package/src/runtime/attachments/store.mjs +109 -33
- package/src/runtime/browser-bridge/client.mjs +73 -20
- package/src/runtime/channels/lib/runtime-paths.mjs +1 -1
- package/src/runtime/channels/lib/scheduler.mjs +14 -7
- package/src/runtime/channels/lib/state-file.mjs +15 -15
- package/src/runtime/channels/lib/voice-runtime-fetcher.mjs +14 -13
- package/src/runtime/channels/lib/webhook/relay-tunnel.mjs +22 -18
- package/src/runtime/channels/lib/webhook/session-dispatch.mjs +14 -36
- package/src/runtime/channels/lib/worker-main.mjs +3 -2
- package/src/runtime/effort-judge/compact-tokenizer.mjs +8 -2
- package/src/runtime/effort-judge/judge-client.mjs +66 -16
- package/src/runtime/effort-judge/model-install.mjs +47 -7
- package/src/runtime/local-provider/asset-installer.mjs +10 -4
- package/src/runtime/local-provider/catalog.mjs +5 -2
- package/src/runtime/local-provider/registered-models.mjs +64 -27
- package/src/runtime/local-provider/server.mjs +2 -3
- package/src/runtime/media/adapters/image-api.mjs +89 -0
- package/src/runtime/media/auth.mjs +64 -1
- package/src/runtime/media/catalog.mjs +66 -4
- package/src/runtime/media/jobs.mjs +4 -0
- package/src/runtime/media/lanes.mjs +46 -5
- package/src/runtime/media/media-usage.mjs +17 -0
- package/src/runtime/media/renditions.mjs +15 -15
- package/src/runtime/media/store.mjs +36 -35
- package/src/runtime/media/tool.mjs +8 -1
- package/src/runtime/memory/lib/cycle-scheduler/health-ledger.mjs +8 -2
- package/src/runtime/memory/lib/embedding-model-files.mjs +30 -7
- package/src/runtime/memory/lib/ingest/transcript-tail.mjs +16 -7
- package/src/runtime/memory/lib/memory-chunk-quality.mjs +14 -2
- package/src/runtime/memory/lib/pg/process.mjs +8 -4
- package/src/runtime/memory/lib/project-id-resolver.mjs +5 -1
- package/src/runtime/memory/lib/runtime-fetcher.mjs +6 -1
- package/src/runtime/office/core/journal.mjs +7 -14
- package/src/runtime/office/design/library/design-library-core.mjs +4 -16
- package/src/runtime/office/pdf/ocr-engine-worker.mjs +37 -0
- package/src/runtime/office/pdf/ocr-engine.mjs +146 -0
- package/src/runtime/office/pdf/pdf-ocr.mjs +51 -21
- package/src/runtime/office/pdf/pdf-render.mjs +30 -18
- package/src/runtime/office/portable/ooxml-validator.mjs +2 -2
- package/src/runtime/office/portable/portable-soffice.mjs +135 -29
- package/src/runtime/shared/agent-avatar-sprites.mjs +23 -8
- package/src/runtime/shared/agent-avatar.mjs +3 -2
- package/src/runtime/shared/agent-kind-migration.mjs +200 -0
- package/src/runtime/shared/agent-message-envelope.d.mts +6 -0
- package/src/runtime/shared/agent-message-envelope.mjs +44 -0
- package/src/runtime/shared/agent-reap-state.d.mts +4 -0
- package/src/runtime/shared/agent-room-host.d.mts +31 -0
- package/src/runtime/shared/agent-room-host.mjs +58 -0
- package/src/runtime/shared/agent-store.mjs +24 -7
- package/src/runtime/shared/agent-task-starts.mjs +27 -0
- package/src/runtime/shared/atomic-file.d.mts +50 -0
- package/src/runtime/shared/atomic-file.mjs +394 -132
- package/src/runtime/shared/background-tasks.mjs +7 -4
- package/src/runtime/shared/bot-hops.mjs +35 -0
- package/src/runtime/shared/bot-split-migration.mjs +1 -1
- package/src/runtime/shared/bounded-download.mjs +4 -2
- package/src/runtime/shared/config.mjs +39 -9
- package/src/runtime/shared/defaults-separation.mjs +6 -2
- package/src/runtime/shared/delegated-approval-host.mjs +74 -0
- package/src/runtime/shared/err-text.mjs +4 -0
- package/src/runtime/shared/error-presentation.mjs +22 -4
- package/src/runtime/shared/file-has-data.mjs +28 -0
- package/src/runtime/shared/llm/usage-ledger-import.mjs +37 -18
- package/src/runtime/shared/pending-agent-work.mjs +54 -0
- package/src/runtime/shared/process-lifecycle.mjs +8 -12
- package/src/runtime/shared/projects.mjs +50 -41
- package/src/runtime/shared/provider-accounts.mjs +17 -12
- package/src/runtime/shared/redact-directories.mjs +18 -0
- package/src/runtime/shared/remove-directory.mjs +28 -0
- package/src/runtime/shared/routine-trigger.d.mts +6 -1
- package/src/runtime/shared/routine-trigger.mjs +14 -6
- package/src/runtime/shared/run-child.d.mts +3 -0
- package/src/runtime/shared/run-child.mjs +24 -3
- package/src/runtime/shared/session-baseline-store.mjs +8 -2
- package/src/runtime/shared/session-sidebar-host.d.mts +11 -2
- package/src/runtime/shared/session-sidebar-host.mjs +16 -3
- package/src/runtime/shared/singleton-owner.mjs +7 -6
- package/src/runtime/shared/skill-tool-dependencies.mjs +4 -10
- package/src/runtime/shared/staged-update.mjs +4 -2
- package/src/runtime/shared/statusline/statusline-segments.mjs +4 -15
- package/src/runtime/shared/tool-execution-contract.mjs +10 -0
- package/src/runtime/shared/tool-work-units.mjs +12 -9
- package/src/runtime/shared/transcript-metadata.mjs +28 -3
- package/src/runtime/shared/transcript-writer/session-record.mjs +7 -6
- package/src/runtime/shared/turn-snapshot-store.mjs +5 -4
- package/src/runtime/shared/turn-snapshot.mjs +277 -124
- package/src/runtime/shared/user-cwd.mjs +9 -4
- package/src/runtime/shared/user-data-guard.mjs +92 -61
- package/src/runtime/shared/utf8-cut.mjs +10 -0
- package/src/runtime/shared/worktrees/activity-gate.mjs +251 -61
- package/src/runtime/shared/worktrees/contract.mjs +11 -3
- package/src/runtime/shared/worktrees/maintenance.mjs +11 -2
- package/src/runtime/shared/worktrees/manager.mjs +419 -52
- package/src/runtime/shared/worktrees/registry.mjs +29 -27
- package/src/runtime/shared/worktrees/tool-host.mjs +39 -0
- package/src/runtime/tidy/core-install.mjs +26 -4
- package/src/runtime/tidy/install.mjs +91 -23
- package/src/runtime/tidy/process.mjs +41 -8
- package/src/runtime/tidy/resolve.mjs +10 -7
- package/src/runtime/web-search/lib/config.mjs +4 -16
- package/src/session-runtime/agent-home-delivery.mjs +542 -204
- package/src/session-runtime/agent-profile-changes.mjs +16 -0
- package/src/session-runtime/agent-room-delivery.mjs +81 -35
- package/src/session-runtime/agent-task-sessions.mjs +811 -179
- package/src/session-runtime/agent-tool-routing.mjs +1 -0
- package/src/session-runtime/boot/apis.mjs +48 -24
- package/src/session-runtime/boot/config.mjs +1 -0
- package/src/session-runtime/boot/facade.mjs +16 -7
- package/src/session-runtime/boot/infrastructure.mjs +14 -2
- package/src/session-runtime/boot/providers.mjs +2 -2
- package/src/session-runtime/boot/shared.mjs +12 -6
- package/src/session-runtime/boot/tools.mjs +23 -3
- package/src/session-runtime/bot-status.mjs +432 -0
- package/src/session-runtime/config-lifecycle/lead-route-sync.mjs +29 -0
- package/src/session-runtime/config-lifecycle.mjs +60 -55
- package/src/session-runtime/cwd-plugins/core-memory-context.mjs +2 -4
- package/src/session-runtime/held-requests.mjs +31 -33
- package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +10 -1
- package/src/session-runtime/internal-tool-executor/feature-tools.mjs +2 -2
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +24 -26
- package/src/session-runtime/lifecycle/session-catalog.mjs +12 -2
- package/src/session-runtime/lifecycle/teardown.mjs +11 -3
- package/src/session-runtime/mcp-glue/connect.mjs +100 -186
- package/src/session-runtime/mcp-glue/initial-connect-gate.mjs +57 -0
- package/src/session-runtime/mcp-glue/server-connection.mjs +71 -0
- package/src/session-runtime/media-api.mjs +5 -2
- package/src/session-runtime/model-recency.mjs +1 -0
- package/src/session-runtime/model-route/route-tuning.mjs +4 -1
- package/src/session-runtime/model-route/set-route.mjs +61 -1
- package/src/session-runtime/owned-automation-run.mjs +8 -1
- package/src/session-runtime/provider-models/row-hydration.mjs +8 -1
- package/src/session-runtime/quick-model-rows/model-meta.mjs +2 -0
- package/src/session-runtime/quick-model-rows/provider-rows.mjs +7 -1
- package/src/session-runtime/route-resolution.mjs +16 -8
- package/src/session-runtime/route-state.mjs +1 -59
- package/src/session-runtime/routine-home-turn.mjs +5 -3
- package/src/session-runtime/runtime-bootstrap.mjs +5 -3
- package/src/session-runtime/runtime-paths.mjs +11 -5
- package/src/session-runtime/runtime-review-api.mjs +4 -1
- package/src/session-runtime/runtime-tunables.mjs +6 -0
- package/src/session-runtime/services/agent-tool/close-flow/close-all.mjs +11 -2
- package/src/session-runtime/services/agent-tool/close-flow.mjs +4 -2
- package/src/session-runtime/services/agent-tool/execute-send.mjs +1 -0
- package/src/session-runtime/services/agent-tool/execute-spawn.mjs +1 -0
- package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +34 -19
- package/src/session-runtime/services/agent-tool/restart-notify.mjs +10 -0
- package/src/session-runtime/services/agent-tool/send-flow.mjs +25 -21
- package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +7 -0
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +6 -3
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +8 -5
- package/src/session-runtime/services/agent-tool/worker-index/row-liveness.mjs +22 -2
- package/src/session-runtime/services/agent-tool/worker-index.mjs +4 -6
- package/src/session-runtime/services/agent-tool.mjs +6 -0
- package/src/session-runtime/services/daemon-crash-capture/daemon-exit-record.mjs +1 -1
- package/src/session-runtime/services/daemon-crash-capture/retention.mjs +4 -3
- package/src/session-runtime/services/hook-bus/config-loader.mjs +14 -5
- package/src/session-runtime/services/hook-bus/rule-file.mjs +49 -11
- package/src/session-runtime/services/plugin-admin.mjs +26 -26
- package/src/session-runtime/services/provider-admin.mjs +26 -6
- package/src/session-runtime/services/schedule-access.mjs +33 -4
- package/src/session-runtime/services/seeds.mjs +4 -3
- package/src/session-runtime/services/usage-dashboard.mjs +1 -1
- package/src/session-runtime/services/usage-stats-model.mjs +2 -1
- package/src/session-runtime/services/worktree-access.mjs +27 -0
- package/src/session-runtime/session-create/materialize.mjs +2 -3
- package/src/session-runtime/session-create/session-options.mjs +15 -2
- package/src/session-runtime/session-hooks.mjs +9 -17
- package/src/session-runtime/settings-builtin-tools-api.mjs +65 -1
- package/src/session-runtime/settings-compaction-api.mjs +86 -39
- package/src/session-runtime/setup-tool/executor.mjs +12 -2
- package/src/session-runtime/setup-tool/settings-contract.mjs +34 -1
- package/src/session-runtime/setup-tool/tool-defs.mjs +20 -3
- package/src/session-runtime/skills-api.mjs +12 -5
- package/src/session-runtime/tool-policy/agent-profile-fold.mjs +349 -0
- package/src/session-runtime/tool-policy/mode-switch.mjs +54 -0
- package/src/session-runtime/tool-policy/pending-switches.mjs +59 -0
- package/src/session-runtime/tool-policy/policy-stage.mjs +183 -0
- package/src/session-runtime/tool-policy/session-switches.mjs +169 -0
- package/src/session-runtime/tool-policy/surface-helpers.mjs +114 -0
- package/src/session-runtime/tool-policy/workflow-overlay.mjs +145 -0
- package/src/session-runtime/tool-policy-refresh.mjs +48 -369
- package/src/session-runtime/tool-surface.mjs +10 -4
- package/src/session-runtime/turn/session-ops.mjs +8 -0
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +95 -88
- package/src/session-runtime/turn/turn-run/turn-timing.mjs +4 -3
- package/src/session-runtime/turn/turn-run.mjs +7 -2
- package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +54 -7
- package/src/session-runtime/workflow-agents-api/agent-editor.mjs +527 -333
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +85 -63
- package/src/session-runtime/workflow-agents-api/shared.mjs +5 -1
- package/src/session-runtime/workflow-agents-api/style-and-mode.mjs +14 -1
- package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +6 -3
- package/src/session-runtime/workspace/transition-steps.mjs +1 -18
- package/src/session-runtime/workspace/transitions.mjs +279 -67
- package/src/session-runtime/workspace/workspace-state.mjs +7 -6
- package/src/session-runtime/workspace/worktree-tool.mjs +194 -0
- package/src/standalone/daemon-agent-control.mjs +4 -1
- package/src/standalone/daemon-lag-profiler.mjs +3 -1
- package/src/standalone/daemon-session-control.mjs +173 -15
- package/src/standalone/daemon-telemetry.mjs +9 -0
- package/src/standalone/daemon.mjs +33 -10
- package/src/standalone/local-session-runtime.mjs +33 -16
- package/src/standalone/session-client.mjs +7 -2
- package/src/standalone/session-protocol.mjs +8 -0
- package/src/standalone/session-runtime-inline-host/boot-loaders.mjs +2 -0
- package/src/standalone/session-service/agent-route-follow.mjs +69 -0
- package/src/standalone/session-service/session-calls/session-turns.mjs +33 -4
- package/src/standalone/session-service.mjs +21 -0
- package/src/standalone/session-state-projection.mjs +19 -9
- package/src/standalone/session-tool-output.mjs +36 -9
- package/src/standalone/staged-import.mjs +47 -0
- package/src/tui/App.jsx +2 -0
- package/src/tui/app/maintenance-pickers/auto-clear-picker.mjs +19 -13
- package/src/tui/app/message-selector.mjs +15 -2
- package/src/tui/app/model-options.mjs +16 -2
- package/src/tui/app/model-picker.mjs +2 -1
- package/src/tui/app/route-pickers.mjs +3 -1
- package/src/tui/app/settings-picker/settings-rows.mjs +2 -2
- package/src/tui/app/slash-commands.mjs +1 -1
- package/src/tui/app/usage-context-panels/context-model.mjs +8 -2
- package/src/tui/dist/index.mjs +617 -369
- package/src/tui/paste-attachments.mjs +0 -1
- package/src/tui/paste-text-policy.mjs +4 -5
- package/src/tui/prompt-history-store.mjs +16 -21
- package/src/tui/session/agent-job-feed/execution-delivery.mjs +4 -1
- package/src/tui/session/context-state.mjs +4 -0
- package/src/tui/session/notice-surface.mjs +3 -0
- package/src/tui/session/session-api/intake/abort.mjs +52 -18
- package/src/tui/session/session-api/intake/rewind.mjs +39 -4
- package/src/tui/session/session-api/media.mjs +2 -1
- package/src/tui/session/session-api/routes-agent-definitions.mjs +76 -0
- package/src/tui/session/session-api/routes-write.mjs +203 -0
- package/src/tui/session/session-api/routes.mjs +23 -247
- package/src/tui/session/session-api/settings.mjs +14 -1
- package/src/tui/session/session-flow/drain.mjs +28 -3
- package/src/tui/session/session-flow/failed-turn-rewind.mjs +4 -2
- package/src/tui/session/session-flow/queue/take-entries.mjs +8 -0
- package/src/tui/session/session-flow/steering.mjs +8 -3
- package/src/tui/session/tool-approval.mjs +142 -14
- package/src/tui/session/transcript-intake.mjs +2 -0
- package/src/tui/session/turn.mjs +23 -14
- package/src/tui/transcript-tool-failures.mjs +8 -2
- package/src/vendor/statusline/src/gateway/route-meta.mjs +7 -8
- package/src/vendor/statusline/src/gateway/session-routes.mjs +6 -7
- package/src/rules/agent-mode/ROUTINE.md +0 -6
- package/src/session-runtime/room-member-gate.mjs +0 -48
|
@@ -22,6 +22,7 @@ export function createRoutedAgentTool({ rt, agentTool, executeAgentControl = nul
|
|
|
22
22
|
{
|
|
23
23
|
type: '__close_all',
|
|
24
24
|
reason: String(reason || 'agent owner closed'),
|
|
25
|
+
...(scope?.processExit === true ? { processExit: true } : {}),
|
|
25
26
|
},
|
|
26
27
|
{
|
|
27
28
|
callerCwd: rt.currentCwd,
|
|
@@ -60,13 +60,13 @@ import { createSessionTurnApi } from '../session-turn-api.mjs';
|
|
|
60
60
|
import { createGoalFacadeApi } from '../goal-facade-api.mjs';
|
|
61
61
|
import { createRuntimeReviewApi } from '../runtime-review-api.mjs';
|
|
62
62
|
import { createWorkspaceTransitions, refreshWorkspacePrompt } from '../workspace/transitions.mjs';
|
|
63
|
-
import { saveSession } from '../../runtime/agent/orchestrator/session/store.mjs';
|
|
63
|
+
import { saveSession, saveSessionAsync } from '../../runtime/agent/orchestrator/session/store.mjs';
|
|
64
64
|
import { modelToolSchemaAllowlist } from '../../runtime/agent/orchestrator/runtime-core/tool-profile.mjs';
|
|
65
65
|
import { sessionOptions } from '../session-create/session-options.mjs';
|
|
66
66
|
import { createConversationImportApi } from '../conversation-import/service.mjs';
|
|
67
67
|
import { importError } from '../conversation-import/discovery.mjs';
|
|
68
68
|
import { bootProfile } from '../boot-profile.mjs';
|
|
69
|
-
import {
|
|
69
|
+
import { standaloneDataDir } from '../runtime-paths.mjs';
|
|
70
70
|
import { registerBotRouteStore } from '../../runtime/shared/agent-store.mjs';
|
|
71
71
|
import {
|
|
72
72
|
dataDirOf,
|
|
@@ -125,6 +125,13 @@ export function wireApis(boot) {
|
|
|
125
125
|
} catch (error) {
|
|
126
126
|
bootProfile('connector-policy:migrate-failed', { error: error?.message || String(error) });
|
|
127
127
|
}
|
|
128
|
+
// Agents made before the kind marker get `kind: agent` once, so an update
|
|
129
|
+
// never turns a workflow agent into a bot (agent-kind-migration.mjs).
|
|
130
|
+
try {
|
|
131
|
+
boot.workflowAgentsApi.migrateAgentKindMarkers();
|
|
132
|
+
} catch (error) {
|
|
133
|
+
bootProfile('agent-kind:migrate-failed', { error: error?.message || String(error) });
|
|
134
|
+
}
|
|
128
135
|
// Bots get their own store (bots/) once, before any catalog read; a
|
|
129
136
|
// failed split leaves agents/ read as before (bot-split-migration.mjs).
|
|
130
137
|
try {
|
|
@@ -153,28 +160,41 @@ export function wireApis(boot) {
|
|
|
153
160
|
|
|
154
161
|
function wireToolPolicyRefresh(boot) {
|
|
155
162
|
const { rt, cfgMod } = boot;
|
|
156
|
-
const {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
163
|
+
const {
|
|
164
|
+
refreshEmptySessionToolPolicy,
|
|
165
|
+
switchSessionWorkflow,
|
|
166
|
+
switchSessionOrchestrationMode,
|
|
167
|
+
applyPendingSessionSwitches,
|
|
168
|
+
refreshAgentProfile,
|
|
169
|
+
applyPendingAgentProfile,
|
|
170
|
+
currentAgents,
|
|
171
|
+
} = createToolPolicyRefresh({
|
|
172
|
+
getSession: () => rt.session,
|
|
173
|
+
getRoute: () => rt.route,
|
|
174
|
+
getMode: () => rt.mode,
|
|
175
|
+
getConfig: () => rt.config,
|
|
176
|
+
getDataDir: () => dataDirOf(cfgMod),
|
|
177
|
+
getActiveTurnCount: () => rt.activeTurnCount || 0,
|
|
178
|
+
modelStandaloneTools: boot.modelStandaloneTools,
|
|
179
|
+
featureDisallowedTools: boot.featureDisallowedTools,
|
|
180
|
+
loadCoreMemoryContext: boot.loadCoreMemoryContext,
|
|
181
|
+
loadInstructionFilesContext: (session) =>
|
|
182
|
+
session.skipInstructionFiles
|
|
183
|
+
? ''
|
|
184
|
+
: loadInstructionFilesContext({ mode: rt.config?.instructionFiles, cwd: session.cwd }),
|
|
185
|
+
activeWorkflowContext: workflowHelpers.activeWorkflowContext,
|
|
186
|
+
invalidatePreSessionToolSurface: boot.invalidatePreSessionToolSurface,
|
|
187
|
+
// A switch is acknowledged only once saved; a session closed or replaced
|
|
188
|
+
// since (its generation moved) is not resurrected.
|
|
189
|
+
persistSession: (session) => saveSessionAsync(session, { expectedGeneration: session.generation }),
|
|
190
|
+
});
|
|
174
191
|
boot.refreshEmptySessionToolPolicy = refreshEmptySessionToolPolicy;
|
|
175
192
|
boot.switchSessionWorkflow = switchSessionWorkflow;
|
|
193
|
+
boot.switchSessionOrchestrationMode = switchSessionOrchestrationMode;
|
|
194
|
+
boot.applyPendingSessionSwitches = applyPendingSessionSwitches;
|
|
176
195
|
boot.refreshAgentProfile = refreshAgentProfile;
|
|
177
196
|
boot.applyPendingAgentProfile = applyPendingAgentProfile;
|
|
197
|
+
boot.currentAgents = currentAgents;
|
|
178
198
|
// A saved bot reaches this runtime's thread when its prompt embeds it (it
|
|
179
199
|
// runs as that bot, or lists it); the rebuilt prompt is saved with the session.
|
|
180
200
|
const profileChanges = subscribeAgentProfileChanges(async () => {
|
|
@@ -192,7 +212,7 @@ function wireToolPolicyRefresh(boot) {
|
|
|
192
212
|
function builtinFeatureAdapters(boot) {
|
|
193
213
|
const { cfgMod, getMemoryModule } = boot;
|
|
194
214
|
return {
|
|
195
|
-
prepareBuiltinFeature: async (name) => {
|
|
215
|
+
prepareBuiltinFeature: async (name, options) => {
|
|
196
216
|
if (name === 'memory') {
|
|
197
217
|
const memory = await getMemoryModule();
|
|
198
218
|
await memory.warmupEmbedding();
|
|
@@ -203,7 +223,7 @@ function builtinFeatureAdapters(boot) {
|
|
|
203
223
|
const { installTidyCoreEngines } = await import('../../runtime/tidy/core-install.mjs');
|
|
204
224
|
// Per-engine failures land in the install job, not in an exception:
|
|
205
225
|
// the feature still installs and the card reports what did not.
|
|
206
|
-
await installTidyCoreEngines({ pluginData: dataDirOf(cfgMod) });
|
|
226
|
+
await installTidyCoreEngines({ pluginData: dataDirOf(cfgMod), engines: options?.engines });
|
|
207
227
|
} else if (name === 'localProvider') {
|
|
208
228
|
await installLocalProviderRuntime();
|
|
209
229
|
} else if (name === 'autoEffort') {
|
|
@@ -487,7 +507,7 @@ function resourceApiFor(boot) {
|
|
|
487
507
|
getCurrentCwd: () => rt.currentCwd,
|
|
488
508
|
cfgMod,
|
|
489
509
|
hooks: boot.hooks,
|
|
490
|
-
STANDALONE_DATA_DIR,
|
|
510
|
+
STANDALONE_DATA_DIR: standaloneDataDir(),
|
|
491
511
|
saveConfigAndAdopt: boot.saveConfigAndAdopt,
|
|
492
512
|
connectConfiguredMcp: boot.connectConfiguredMcp,
|
|
493
513
|
cancelMcpLogin: boot.cancelMcpLogin,
|
|
@@ -574,7 +594,7 @@ function workflowAgentsApiFor(boot) {
|
|
|
574
594
|
},
|
|
575
595
|
getSession: () => rt.session,
|
|
576
596
|
cfgMod: boot.cfgMod,
|
|
577
|
-
STANDALONE_DATA_DIR,
|
|
597
|
+
STANDALONE_DATA_DIR: standaloneDataDir(),
|
|
578
598
|
resolveRoute,
|
|
579
599
|
lookupModelMeta: boot.lookupModelMeta,
|
|
580
600
|
adoptConfig: boot.adoptConfig,
|
|
@@ -599,6 +619,7 @@ function workflowAgentsApiFor(boot) {
|
|
|
599
619
|
invalidatePreSessionToolSurface: boot.invalidatePreSessionToolSurface,
|
|
600
620
|
refreshEmptySessionToolPolicy: boot.refreshEmptySessionToolPolicy,
|
|
601
621
|
switchSessionWorkflow: boot.switchSessionWorkflow,
|
|
622
|
+
switchSessionOrchestrationMode: boot.switchSessionOrchestrationMode,
|
|
602
623
|
});
|
|
603
624
|
}
|
|
604
625
|
|
|
@@ -641,6 +662,8 @@ function sessionTurnApiFor(boot) {
|
|
|
641
662
|
return createSessionTurnApi({
|
|
642
663
|
applyPendingRoute: () => boot.modelRouteApi.applyPendingRoute(),
|
|
643
664
|
applyPendingAgentProfile: boot.applyPendingAgentProfile,
|
|
665
|
+
currentAgents: boot.currentAgents,
|
|
666
|
+
applyPendingSessionSwitches: boot.applyPendingSessionSwitches,
|
|
644
667
|
prepareTurnWorkspace: boot.workspaceApi.prepareTurnWorkspace,
|
|
645
668
|
admitTurnWorkspace: boot.workspaceApi.admitTurnWorkspace,
|
|
646
669
|
getSession: () => rt.session,
|
|
@@ -696,6 +719,7 @@ function sessionTurnApiFor(boot) {
|
|
|
696
719
|
notificationListeners: boot.notificationListeners,
|
|
697
720
|
awaitInitialMcpConnect: boot.awaitInitialMcpConnect,
|
|
698
721
|
mcpTurnGraceMs: tunables.mcpTurnGraceMs,
|
|
722
|
+
mcpAgentGraceMs: tunables.mcpAgentGraceMs,
|
|
699
723
|
awaitRoutePreparation: () => routePreparation.wait(),
|
|
700
724
|
getReservedSessionId: () => rt.reservedSessionId,
|
|
701
725
|
assertSessionAdmission: () => assertAdmissionOpen(rt),
|
|
@@ -36,6 +36,7 @@ export async function resolveConfig(boot) {
|
|
|
36
36
|
contextPercent: params.contextPercent,
|
|
37
37
|
contextTokens: params.contextTokens,
|
|
38
38
|
selectedContextWindow: params.selectedContextWindow,
|
|
39
|
+
agentOwned: params.sessionProfile?.owner === 'agent' || params.sessionProfile?.visibility === 'agent-only',
|
|
39
40
|
}));
|
|
40
41
|
configureLocalProviderIdleTtl(rt.config.providers?.[LOCAL_PROVIDER_ID]?.idleTtlSeconds);
|
|
41
42
|
setConfiguredShell(normalizeSystemShellConfig(rt.config.shell).command);
|
|
@@ -7,6 +7,7 @@ import { createRuntimeFacade } from '../runtime-facade.mjs';
|
|
|
7
7
|
import { bootProfile } from '../boot-profile.mjs';
|
|
8
8
|
import { assertAdmissionOpen, bindSessionAddress } from '../session-address.mjs';
|
|
9
9
|
import { dataDirOf, workflowHelpers } from './shared.mjs';
|
|
10
|
+
import { publicWorkspaceMethods } from '../workspace/transitions.mjs';
|
|
10
11
|
|
|
11
12
|
export function buildFacade(boot) {
|
|
12
13
|
const { rt, setupTool } = boot;
|
|
@@ -41,16 +42,14 @@ export function buildFacade(boot) {
|
|
|
41
42
|
getLiveWorkspace: boot.workspaceApi.getLiveWorkspace,
|
|
42
43
|
getBranchMenu: boot.workspaceApi.getBranchMenu,
|
|
43
44
|
getProjectBranchMenu: boot.workspaceApi.getProjectBranchMenu,
|
|
44
|
-
selectBranch: boot.workspaceApi.selectBranch,
|
|
45
45
|
selectProjectBranch: boot.workspaceApi.selectProjectBranch,
|
|
46
46
|
mergeProjectBranch: boot.workspaceApi.mergeProjectBranch,
|
|
47
47
|
inspectProjectBranch: boot.workspaceApi.inspectProjectBranch,
|
|
48
48
|
manageProjectBranch: boot.workspaceApi.manageProjectBranch,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
pruneWorktrees: boot.workspaceApi.pruneWorktrees,
|
|
49
|
+
// selectBranch, requestWorktree, mergeWorkspace, removeWorktree,
|
|
50
|
+
// listWorktrees, pruneWorktrees: the public arity only, so no external
|
|
51
|
+
// caller (desktop IPC, the daemon's configure lane) reaches `ownTurn`.
|
|
52
|
+
...publicWorkspaceMethods(boot.workspaceApi),
|
|
54
53
|
onWorktreeSetup: boot.workspaceApi.onWorktreeSetup,
|
|
55
54
|
claimSetupRequest: setupTool.claimSetupRequest,
|
|
56
55
|
isSetupRequestActive: setupTool.isSetupRequestActive,
|
|
@@ -90,6 +89,14 @@ function reserveSessionId(boot, id) {
|
|
|
90
89
|
// the configured one is the default for new sessions.
|
|
91
90
|
function currentWorkflow(boot) {
|
|
92
91
|
const { rt, cfgMod } = boot;
|
|
92
|
+
// A switch chosen while a turn runs shows at once; it applies next turn.
|
|
93
|
+
const pending = rt.session?.pendingWorkflowId;
|
|
94
|
+
if (pending) {
|
|
95
|
+
return workflowHelpers.activeWorkflowSummary(
|
|
96
|
+
{ ...rt.config, workflow: { ...(rt.config?.workflow || {}), active: pending } },
|
|
97
|
+
dataDirOf(cfgMod)
|
|
98
|
+
);
|
|
99
|
+
}
|
|
93
100
|
const active = workflowHelpers.activeWorkflowSummary(rt.config, dataDirOf(cfgMod));
|
|
94
101
|
const current = rt.session?.workflow;
|
|
95
102
|
return current?.id && active?.id && current.id !== active.id ? current : active;
|
|
@@ -106,7 +113,9 @@ function facadeGetters(boot) {
|
|
|
106
113
|
},
|
|
107
114
|
getWorkflow: () => currentWorkflow(boot),
|
|
108
115
|
getOrchestrationMode: () =>
|
|
109
|
-
rt.session?.id
|
|
116
|
+
rt.session?.id
|
|
117
|
+
? (rt.session.pendingOrchestrationMode ?? sessionOrchestrationMode(rt.session))
|
|
118
|
+
: configuredOrchestrationMode(rt.config),
|
|
110
119
|
getOutputStyle: () => boot.getOutputStyleStatusCached().current,
|
|
111
120
|
getContextStatus: boot.computeContextStatus,
|
|
112
121
|
getContextStatusForSession: boot.computeContextStatusForSession,
|
|
@@ -4,6 +4,7 @@ import { performance } from 'node:perf_hooks';
|
|
|
4
4
|
import { existsSync, statSync } from 'node:fs';
|
|
5
5
|
import { resolve } from 'node:path';
|
|
6
6
|
import { createStandaloneHookBus } from '../services/hook-bus.mjs';
|
|
7
|
+
import { attachSessionHooks } from '../session-hooks.mjs';
|
|
7
8
|
import { updateCurrentCwdOverride, writeLastSessionCwd } from '../../runtime/shared/user-cwd.mjs';
|
|
8
9
|
import { listRegisteredPlugins, pluginAdminStatus } from '../services/plugin-admin.mjs';
|
|
9
10
|
import { clean } from '../../runtime/agent/orchestrator/runtime-core/session-text.mjs';
|
|
@@ -17,7 +18,7 @@ import { createCwdPlugins } from '../cwd-plugins.mjs';
|
|
|
17
18
|
import { injectedMemoryAgentId } from '../services/memory-access.mjs';
|
|
18
19
|
import { listProjectsStrict } from '../../runtime/shared/projects.mjs';
|
|
19
20
|
import { isWithin } from '../../runtime/shared/worktrees/paths.mjs';
|
|
20
|
-
import {
|
|
21
|
+
import { standaloneDataDir } from '../runtime-paths.mjs';
|
|
21
22
|
import { SessionAddressError, isAdmissionOpen, ownerLifecycle } from '../session-address.mjs';
|
|
22
23
|
import { dataDirOf } from './shared.mjs';
|
|
23
24
|
|
|
@@ -186,6 +187,17 @@ export function sessionAdopter(boot) {
|
|
|
186
187
|
}
|
|
187
188
|
}
|
|
188
189
|
rt.session = v;
|
|
190
|
+
// The PreToolUse/PostToolUse bridge is a non-enumerable property that
|
|
191
|
+
// neither the store nor a resumed record carries: every session installed
|
|
192
|
+
// here (create, resume, route swap, clear, the manager's copy) gets it, so
|
|
193
|
+
// hook rules apply to all of them, not only to freshly created sessions.
|
|
194
|
+
if (v?.id && typeof v.beforeToolHook !== 'function') {
|
|
195
|
+
attachSessionHooks(v, {
|
|
196
|
+
hooks: boot.hooks,
|
|
197
|
+
hookCommonPayload: (...a) => boot.hookCommonPayload(...a),
|
|
198
|
+
getCwd: () => rt.currentCwd,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
189
201
|
if (v?.id) {
|
|
190
202
|
rt.desktopSession = v.desktopSession || null;
|
|
191
203
|
// Bind every adopted session, including a cold resume and a session
|
|
@@ -292,7 +304,7 @@ function wireCwdPlugins(boot) {
|
|
|
292
304
|
statSync,
|
|
293
305
|
existsSync,
|
|
294
306
|
cfgMod,
|
|
295
|
-
STANDALONE_DATA_DIR,
|
|
307
|
+
STANDALONE_DATA_DIR: standaloneDataDir(),
|
|
296
308
|
});
|
|
297
309
|
Object.assign(boot, { resolveCwdPath, applyResolvedCwd, pluginsStatus, loadCoreMemoryContext });
|
|
298
310
|
}
|
|
@@ -35,7 +35,7 @@ import { createQuickModelRows } from '../quick-model-rows.mjs';
|
|
|
35
35
|
import { createProviderModels } from '../provider-models.mjs';
|
|
36
36
|
import { createProviderUsage } from '../provider-usage.mjs';
|
|
37
37
|
import { bootProfile } from '../boot-profile.mjs';
|
|
38
|
-
import {
|
|
38
|
+
import { standaloneDataDir } from '../runtime-paths.mjs';
|
|
39
39
|
import { outputStyleStatus, resolveRoute, webSearchCapableFor } from './shared.mjs';
|
|
40
40
|
|
|
41
41
|
export function wireProviders(boot) {
|
|
@@ -80,7 +80,7 @@ function wireConfigLifecycle(boot) {
|
|
|
80
80
|
clean,
|
|
81
81
|
resolve,
|
|
82
82
|
onConfigReloaded: () => boot.invalidateContextStatusCache?.(),
|
|
83
|
-
STANDALONE_DATA_DIR,
|
|
83
|
+
STANDALONE_DATA_DIR: standaloneDataDir(),
|
|
84
84
|
});
|
|
85
85
|
const {
|
|
86
86
|
disposeConfigSync,
|
|
@@ -3,25 +3,31 @@
|
|
|
3
3
|
import { isKnownProvider } from '../services/provider-admin.mjs';
|
|
4
4
|
import { normalizeAgentPermissionOrNone, readMarkdownDocument } from '../../runtime/shared/markdown-frontmatter.mjs';
|
|
5
5
|
import { makeWebSearchCapableFor } from '../../runtime/agent/orchestrator/runtime-core/model-capabilities.mjs';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
makeResolveDefaultProvider,
|
|
8
|
+
findPreset,
|
|
9
|
+
makeResolveRoute,
|
|
10
|
+
} from '../../runtime/agent/orchestrator/runtime-core/config-helpers.mjs';
|
|
7
11
|
import { outputStyleStatus as outputStyleStatusRaw } from '../output-styles.mjs';
|
|
8
12
|
import {
|
|
9
13
|
createWorkflowHelpers,
|
|
10
14
|
createWorkflowRouteHelpers,
|
|
11
15
|
webSearchProviderFamily,
|
|
12
16
|
} from '../../runtime/agent/orchestrator/runtime-core/workflow.mjs';
|
|
13
|
-
import { STANDALONE_ROOT,
|
|
17
|
+
import { STANDALONE_ROOT, standaloneDataDir } from '../runtime-paths.mjs';
|
|
14
18
|
|
|
15
19
|
export const resolveRoute = makeResolveRoute(makeResolveDefaultProvider(isKnownProvider));
|
|
16
20
|
export const webSearchCapableFor = makeWebSearchCapableFor(webSearchProviderFamily);
|
|
17
21
|
|
|
18
|
-
export const outputStyleStatus = (dataDir =
|
|
19
|
-
outputStyleStatusRaw(STANDALONE_ROOT, dataDir ||
|
|
22
|
+
export const outputStyleStatus = (dataDir = standaloneDataDir(), opts = {}) =>
|
|
23
|
+
outputStyleStatusRaw(STANDALONE_ROOT, dataDir || standaloneDataDir(), opts);
|
|
20
24
|
|
|
21
|
-
// Workflow/agent pack loaders bound to this runtime's root/data layout.
|
|
25
|
+
// Workflow/agent pack loaders bound to this runtime's root/data layout. The
|
|
26
|
+
// default data dir is the resolver itself, read per call, so a later runtime
|
|
27
|
+
// start in the same process uses its own data folder.
|
|
22
28
|
export const workflowHelpers = createWorkflowHelpers({
|
|
23
29
|
rootDir: STANDALONE_ROOT,
|
|
24
|
-
dataDir:
|
|
30
|
+
dataDir: standaloneDataDir,
|
|
25
31
|
readMarkdownDocument,
|
|
26
32
|
normalizeAgentPermissionOrNone,
|
|
27
33
|
});
|
|
@@ -34,7 +34,9 @@ import {
|
|
|
34
34
|
createContextStatus,
|
|
35
35
|
} from '../../runtime/agent/orchestrator/runtime-core/context-status.mjs';
|
|
36
36
|
import { createInternalToolExecutor } from '../internal-tool-executor.mjs';
|
|
37
|
-
import {
|
|
37
|
+
import { registerWorktreeToolHost } from '../../runtime/shared/worktrees/tool-host.mjs';
|
|
38
|
+
import { createWorktreeToolHost } from '../workspace/worktree-tool.mjs';
|
|
39
|
+
import { STANDALONE_ROOT, standaloneDataDir } from '../runtime-paths.mjs';
|
|
38
40
|
import { dataDirOf, workflowHelpers } from './shared.mjs';
|
|
39
41
|
|
|
40
42
|
export function wireTools(boot) {
|
|
@@ -182,7 +184,7 @@ function wireToolSurface(boot) {
|
|
|
182
184
|
getCurrentCwd: () => rt.currentCwd,
|
|
183
185
|
cfgMod,
|
|
184
186
|
delegatableAgentIds: workflowHelpers.delegatableAgentIds,
|
|
185
|
-
dataDir:
|
|
187
|
+
dataDir: standaloneDataDir(),
|
|
186
188
|
getFeatureDisallowedTools: featureDisallowedTools,
|
|
187
189
|
});
|
|
188
190
|
Object.assign(boot, {
|
|
@@ -261,5 +263,23 @@ function wireInternalTools(boot) {
|
|
|
261
263
|
executeSessionControl: boot.params.executeSessionControl,
|
|
262
264
|
}),
|
|
263
265
|
});
|
|
264
|
-
|
|
266
|
+
// The git tool's managed-worktree operations reach this Lead's workspace
|
|
267
|
+
// authority (late-bound like the internal tools) through this host.
|
|
268
|
+
const disposeWorktreeToolHost = registerWorktreeToolHost({
|
|
269
|
+
sessionId: () => rt.session?.id || null,
|
|
270
|
+
run: createWorktreeToolHost({
|
|
271
|
+
getSession: () => rt.session,
|
|
272
|
+
getWorkspaceApi: () => boot.workspaceApi || null,
|
|
273
|
+
executeSessionControl: boot.params.executeSessionControl || null,
|
|
274
|
+
}).run,
|
|
275
|
+
});
|
|
276
|
+
Object.assign(boot, {
|
|
277
|
+
setupTool,
|
|
278
|
+
disposeInternalTools: () => {
|
|
279
|
+
disposeWorktreeToolHost();
|
|
280
|
+
// Its turn snapshot cleanups stop with the runtime (maintenance finishes them).
|
|
281
|
+
boot.workspaceApi?.dispose();
|
|
282
|
+
disposeInternalTools();
|
|
283
|
+
},
|
|
284
|
+
});
|
|
265
285
|
}
|