mixdog 1.3.0 → 1.3.2
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/NOTICE.md +52 -9
- package/README.md +8 -4
- package/package.json +2 -2
- package/scripts/native-release-status.mjs +238 -0
- package/src/defaults/shipped-history.json +8 -1
- 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 +54 -4
- package/src/defaults/skills/setup/references/surfaces.md +23 -3
- package/src/defaults/skills/setup-guide/SKILL.md +17 -10
- 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/output-styles/common.md +13 -8
- package/src/rules/agent-mode/AGENT_MODE.md +9 -6
- package/src/rules/agent-mode/MIXY.md +11 -6
- package/src/rules/lead/LEAD.md +2 -2
- package/src/rules/shared/10-tool-workflow.md +4 -0
- package/src/rules/shared/20-research.md +2 -0
- 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 +81 -16
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +97 -4
- 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 +80 -31
- 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 +67 -38
- package/src/runtime/agent/orchestrator/providers/anthropic-turn-result.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-catalog.mjs +7 -2
- package/src/runtime/agent/orchestrator/providers/antigravity-request.mjs +6 -2
- package/src/runtime/agent/orchestrator/providers/auto-effort.mjs +34 -16
- 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.mjs +11 -8
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-prefix-trace.mjs +76 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +19 -1
- package/src/runtime/agent/orchestrator/providers/lib/tail-reminder-split.mjs +13 -0
- package/src/runtime/agent/orchestrator/providers/lib/tool-call-wire-ids.mjs +65 -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-retry-profile.mjs +8 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +10 -2
- 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-responses-input.mjs +3 -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/provider-error-kind.mjs +14 -2
- package/src/runtime/agent/orchestrator/providers/registry.mjs +9 -0
- package/src/runtime/agent/orchestrator/providers/retry-executor.mjs +17 -0
- 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-storage.mjs +68 -22
- package/src/runtime/agent/orchestrator/runtime-core/goal-tool-exec.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +5 -5
- 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 +12 -1
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +17 -6
- package/src/runtime/agent/orchestrator/runtime-core/workflow/agents.mjs +41 -10
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +6 -4
- package/src/runtime/agent/orchestrator/runtime-core/workflow/packs.mjs +8 -4
- package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +2 -0
- 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 +21 -2
- package/src/runtime/agent/orchestrator/session/agent-room.mjs +149 -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/execution-tail.mjs +14 -11
- package/src/runtime/agent/orchestrator/session/compact/forked-summary.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +68 -18
- 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 +5 -1
- package/src/runtime/agent/orchestrator/session/compact/user-message-kind.mjs +1 -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 +230 -0
- package/src/runtime/agent/orchestrator/session/human-gate/gate.mjs +156 -25
- package/src/runtime/agent/orchestrator/session/human-gate/outbound-policy.mjs +20 -0
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +21 -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 +189 -105
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +9 -0
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +6 -2
- package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +111 -9
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +11 -14
- package/src/runtime/agent/orchestrator/session/loop/steering.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +38 -5
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +21 -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/loop/usage.mjs +46 -4
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +13 -2
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-commit.mjs +18 -8
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +44 -18
- package/src/runtime/agent/orchestrator/session/manager/orchestration-mode-switch-notice.mjs +99 -0
- package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +42 -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/provider-replay.mjs +50 -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-lifecycle.mjs +62 -47
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +6 -8
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +12 -1
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +6 -15
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +7 -1
- package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +24 -8
- package/src/runtime/agent/orchestrator/session/manager/usage-metrics.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/workflow-switch-notice.mjs +94 -13
- package/src/runtime/agent/orchestrator/session/mixy-name.mjs +5 -2
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +42 -10
- package/src/runtime/agent/orchestrator/session/provider-prefix-guard.mjs +21 -3
- package/src/runtime/agent/orchestrator/session/routine-result.d.mts +35 -4
- package/src/runtime/agent/orchestrator/session/routine-result.mjs +179 -16
- package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +5 -1
- 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/sweep-record.mjs +8 -3
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-row.mjs +36 -1
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +4 -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/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 +49 -14
- package/src/runtime/agent/orchestrator/session/transcript-restore/user-text.mjs +134 -17
- package/src/runtime/agent/orchestrator/tools/builtin/advisory-lock.mjs +35 -13
- package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +25 -5
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +4 -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/lib/shell-job-records.mjs +6 -14
- 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 +34 -21
- 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/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/store.mjs +55 -30
- 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 +6 -3
- package/src/runtime/effort-judge/model-install.mjs +16 -8
- package/src/runtime/effort-judge/model-manifest.json +7 -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/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 +4 -0
- package/src/runtime/shared/agent-kind-migration.mjs +200 -0
- package/src/runtime/shared/agent-kind.mjs +152 -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-route-config.d.mts +1 -0
- package/src/runtime/shared/agent-route-config.mjs +22 -8
- package/src/runtime/shared/agent-store.mjs +149 -0
- 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 +30 -0
- package/src/runtime/shared/bot-split-migration.mjs +457 -0
- package/src/runtime/shared/bounded-download.mjs +4 -2
- package/src/runtime/shared/config-patch.mjs +20 -1
- package/src/runtime/shared/config.mjs +39 -9
- package/src/runtime/shared/connector-catalog.d.mts +1 -2
- package/src/runtime/shared/connector-catalog.mjs +2 -4
- package/src/runtime/shared/connector-triggers.mjs +2 -0
- 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 +7 -1
- package/src/runtime/shared/error-presentation.mjs +113 -10
- package/src/runtime/shared/file-has-data.mjs +28 -0
- package/src/runtime/shared/handoff-artifacts.d.mts +20 -0
- package/src/runtime/shared/handoff-artifacts.mjs +61 -0
- package/src/runtime/shared/llm/provider-model-identities.mjs +6 -1
- package/src/runtime/shared/llm/usage-accounting.mjs +7 -1
- package/src/runtime/shared/llm/usage-ledger-import.mjs +37 -18
- package/src/runtime/shared/model-route-fallback.mjs +79 -7
- package/src/runtime/shared/pending-agent-work.mjs +54 -0
- package/src/runtime/shared/plain-preview.mjs +22 -17
- 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/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/sensitive-path-rules.d.mts +15 -0
- package/src/runtime/shared/sensitive-path-rules.mjs +256 -0
- package/src/runtime/shared/session-baseline-store.mjs +8 -2
- 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 +6 -0
- 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 +44 -2
- package/src/runtime/shared/usage-readout-totals.mjs +15 -13
- package/src/runtime/shared/user-cwd.mjs +9 -4
- package/src/runtime/shared/user-data-guard.mjs +46 -44
- package/src/runtime/shared/utf8-cut.mjs +10 -0
- package/src/runtime/shared/worktrees/activity-gate.mjs +269 -61
- package/src/runtime/shared/worktrees/registry.mjs +26 -26
- package/src/runtime/tidy/core-install.mjs +26 -4
- package/src/runtime/tidy/install.mjs +91 -23
- package/src/runtime/web-search/lib/config.mjs +4 -16
- package/src/session-runtime/agent-home-delivery.mjs +859 -136
- package/src/session-runtime/agent-room-delivery.mjs +167 -19
- package/src/session-runtime/agent-task-sessions.mjs +831 -69
- package/src/session-runtime/agent-tool-routing.mjs +1 -0
- package/src/session-runtime/boot/apis.mjs +58 -24
- package/src/session-runtime/boot/config.mjs +1 -0
- package/src/session-runtime/boot/facade.mjs +11 -1
- package/src/session-runtime/boot/infrastructure.mjs +14 -2
- package/src/session-runtime/boot/providers.mjs +16 -6
- package/src/session-runtime/boot/shared.mjs +12 -6
- package/src/session-runtime/boot/tools.mjs +2 -2
- 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 +78 -32
- package/src/session-runtime/cwd-plugins/core-memory-context.mjs +2 -4
- package/src/session-runtime/handoff-attachments.mjs +593 -0
- package/src/session-runtime/held-requests.mjs +36 -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 +45 -6
- 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-route/route-persist.mjs +2 -2
- package/src/session-runtime/model-route/route-tuning.mjs +11 -2
- package/src/session-runtime/model-route/set-route.mjs +82 -2
- package/src/session-runtime/native-web-search.mjs +2 -2
- package/src/session-runtime/new-session-config.mjs +6 -1
- package/src/session-runtime/owned-automation-run.mjs +8 -1
- package/src/session-runtime/room-member-gate.mjs +16 -3
- package/src/session-runtime/route-resolution.mjs +21 -19
- 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-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/helpers.mjs +24 -5
- package/src/session-runtime/services/agent-tool/restart-notify.mjs +10 -0
- package/src/session-runtime/services/agent-tool/send-flow.mjs +36 -24
- package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +4 -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 +12 -6
- package/src/session-runtime/services/agent-tool/spawn-preset.mjs +5 -8
- package/src/session-runtime/services/agent-tool/tool-def.mjs +7 -0
- 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 +14 -4
- 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/session-create/materialize.mjs +2 -3
- package/src/session-runtime/session-create/session-options.mjs +15 -2
- package/src/session-runtime/settings-builtin-tools-api.mjs +63 -1
- package/src/session-runtime/settings-compaction-api.mjs +86 -39
- package/src/session-runtime/setup-tool/executor.mjs +20 -3
- package/src/session-runtime/setup-tool/extended-actions.mjs +19 -7
- package/src/session-runtime/setup-tool/settings-contract.mjs +37 -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 +265 -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 +165 -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 +47 -358
- package/src/session-runtime/tool-surface.mjs +5 -3
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +99 -81
- package/src/session-runtime/turn/turn-run/turn-timing.mjs +4 -3
- package/src/session-runtime/turn/turn-run.mjs +2 -1
- package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +54 -7
- package/src/session-runtime/workflow-agents-api/agent-editor.mjs +578 -301
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +113 -53
- package/src/session-runtime/workflow-agents-api/onboarding.mjs +11 -4
- 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/workspace-state.mjs +7 -6
- package/src/standalone/daemon-agent-control.mjs +4 -1
- package/src/standalone/daemon-session-control.mjs +60 -11
- package/src/standalone/daemon.mjs +34 -4
- package/src/standalone/local-session-runtime.mjs +22 -14
- package/src/standalone/session-client.mjs +7 -2
- package/src/standalone/session-protocol.mjs +7 -0
- package/src/standalone/session-service/agent-tree/agent-turns.mjs +46 -3
- package/src/standalone/session-service/agent-tree.mjs +4 -3
- package/src/standalone/session-service/session-calls/session-turns.mjs +19 -0
- package/src/standalone/session-service.mjs +11 -0
- package/src/standalone/session-state-projection.mjs +19 -9
- package/src/standalone/session-tool-output.mjs +35 -9
- package/src/tui/app/maintenance-pickers/auto-clear-picker.mjs +19 -13
- 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 +599 -342
- package/src/tui/prompt-history-store.mjs +16 -21
- package/src/tui/session/context-state.mjs +4 -0
- package/src/tui/session/notice-surface.mjs +3 -4
- package/src/tui/session/session-api/intake/abort.mjs +19 -1
- package/src/tui/session/session-api/media.mjs +2 -1
- package/src/tui/session/session-api/routes-agent-definitions.mjs +75 -0
- package/src/tui/session/session-api/routes-write.mjs +203 -0
- package/src/tui/session/session-api/routes.mjs +23 -236
- 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 +185 -20
- package/src/tui/session/transcript-intake.mjs +4 -0
- package/src/tui/session/turn-live-call.mjs +11 -3
- package/src/tui/session/turn.mjs +36 -17
- 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
|
@@ -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,14 @@ 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
|
+
import { registerBotRouteStore } from '../../runtime/shared/agent-store.mjs';
|
|
70
71
|
import {
|
|
71
72
|
dataDirOf,
|
|
72
73
|
resolveRoute,
|
|
@@ -124,7 +125,23 @@ export function wireApis(boot) {
|
|
|
124
125
|
} catch (error) {
|
|
125
126
|
bootProfile('connector-policy:migrate-failed', { error: error?.message || String(error) });
|
|
126
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
|
+
}
|
|
135
|
+
// Bots get their own store (bots/) once, before any catalog read; a
|
|
136
|
+
// failed split leaves agents/ read as before (bot-split-migration.mjs).
|
|
137
|
+
try {
|
|
138
|
+
boot.workflowAgentsApi.migrateBotStore();
|
|
139
|
+
} catch (error) {
|
|
140
|
+
bootProfile('bot-split:migrate-failed', { error: error?.message || String(error) });
|
|
141
|
+
}
|
|
127
142
|
}
|
|
143
|
+
// Route reads ask a store bot's own folder first (agent-store.mjs).
|
|
144
|
+
registerBotRouteStore(() => dataDirOf(boot.cfgMod));
|
|
128
145
|
boot.workspaceApi = workspaceApiFor(boot);
|
|
129
146
|
boot.sessionTurnApi = sessionTurnApiFor(boot);
|
|
130
147
|
const getFacadeSessionId = () => boot.rt.session?.id || boot.rt.reservedSessionId || null;
|
|
@@ -143,26 +160,37 @@ export function wireApis(boot) {
|
|
|
143
160
|
|
|
144
161
|
function wireToolPolicyRefresh(boot) {
|
|
145
162
|
const { rt, cfgMod } = boot;
|
|
146
|
-
const {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
163
|
+
const {
|
|
164
|
+
refreshEmptySessionToolPolicy,
|
|
165
|
+
switchSessionWorkflow,
|
|
166
|
+
switchSessionOrchestrationMode,
|
|
167
|
+
applyPendingSessionSwitches,
|
|
168
|
+
refreshAgentProfile,
|
|
169
|
+
applyPendingAgentProfile,
|
|
170
|
+
} = createToolPolicyRefresh({
|
|
171
|
+
getSession: () => rt.session,
|
|
172
|
+
getRoute: () => rt.route,
|
|
173
|
+
getMode: () => rt.mode,
|
|
174
|
+
getConfig: () => rt.config,
|
|
175
|
+
getDataDir: () => dataDirOf(cfgMod),
|
|
176
|
+
getActiveTurnCount: () => rt.activeTurnCount || 0,
|
|
177
|
+
modelStandaloneTools: boot.modelStandaloneTools,
|
|
178
|
+
featureDisallowedTools: boot.featureDisallowedTools,
|
|
179
|
+
loadCoreMemoryContext: boot.loadCoreMemoryContext,
|
|
180
|
+
loadInstructionFilesContext: (session) =>
|
|
181
|
+
session.skipInstructionFiles
|
|
182
|
+
? ''
|
|
183
|
+
: loadInstructionFilesContext({ mode: rt.config?.instructionFiles, cwd: session.cwd }),
|
|
184
|
+
activeWorkflowContext: workflowHelpers.activeWorkflowContext,
|
|
185
|
+
invalidatePreSessionToolSurface: boot.invalidatePreSessionToolSurface,
|
|
186
|
+
// A switch is acknowledged only once saved; a session closed or replaced
|
|
187
|
+
// since (its generation moved) is not resurrected.
|
|
188
|
+
persistSession: (session) => saveSessionAsync(session, { expectedGeneration: session.generation }),
|
|
189
|
+
});
|
|
164
190
|
boot.refreshEmptySessionToolPolicy = refreshEmptySessionToolPolicy;
|
|
165
191
|
boot.switchSessionWorkflow = switchSessionWorkflow;
|
|
192
|
+
boot.switchSessionOrchestrationMode = switchSessionOrchestrationMode;
|
|
193
|
+
boot.applyPendingSessionSwitches = applyPendingSessionSwitches;
|
|
166
194
|
boot.refreshAgentProfile = refreshAgentProfile;
|
|
167
195
|
boot.applyPendingAgentProfile = applyPendingAgentProfile;
|
|
168
196
|
// A saved bot reaches this runtime's thread when its prompt embeds it (it
|
|
@@ -182,7 +210,7 @@ function wireToolPolicyRefresh(boot) {
|
|
|
182
210
|
function builtinFeatureAdapters(boot) {
|
|
183
211
|
const { cfgMod, getMemoryModule } = boot;
|
|
184
212
|
return {
|
|
185
|
-
prepareBuiltinFeature: async (name) => {
|
|
213
|
+
prepareBuiltinFeature: async (name, options) => {
|
|
186
214
|
if (name === 'memory') {
|
|
187
215
|
const memory = await getMemoryModule();
|
|
188
216
|
await memory.warmupEmbedding();
|
|
@@ -193,7 +221,7 @@ function builtinFeatureAdapters(boot) {
|
|
|
193
221
|
const { installTidyCoreEngines } = await import('../../runtime/tidy/core-install.mjs');
|
|
194
222
|
// Per-engine failures land in the install job, not in an exception:
|
|
195
223
|
// the feature still installs and the card reports what did not.
|
|
196
|
-
await installTidyCoreEngines({ pluginData: dataDirOf(cfgMod) });
|
|
224
|
+
await installTidyCoreEngines({ pluginData: dataDirOf(cfgMod), engines: options?.engines });
|
|
197
225
|
} else if (name === 'localProvider') {
|
|
198
226
|
await installLocalProviderRuntime();
|
|
199
227
|
} else if (name === 'autoEffort') {
|
|
@@ -477,7 +505,7 @@ function resourceApiFor(boot) {
|
|
|
477
505
|
getCurrentCwd: () => rt.currentCwd,
|
|
478
506
|
cfgMod,
|
|
479
507
|
hooks: boot.hooks,
|
|
480
|
-
STANDALONE_DATA_DIR,
|
|
508
|
+
STANDALONE_DATA_DIR: standaloneDataDir(),
|
|
481
509
|
saveConfigAndAdopt: boot.saveConfigAndAdopt,
|
|
482
510
|
connectConfiguredMcp: boot.connectConfiguredMcp,
|
|
483
511
|
cancelMcpLogin: boot.cancelMcpLogin,
|
|
@@ -538,6 +566,8 @@ function modelRouteApiFor(boot) {
|
|
|
538
566
|
adoptConfig: boot.adoptConfig,
|
|
539
567
|
saveConfigAndAdopt: boot.saveConfigAndAdopt,
|
|
540
568
|
ensureFullConfig: boot.ensureFullConfig,
|
|
569
|
+
reloadFullConfig: boot.reloadFullConfig,
|
|
570
|
+
confirmLeadFill: boot.confirmLeadFill,
|
|
541
571
|
awaitKeychainPrewarm: boot.awaitKeychainPrewarm,
|
|
542
572
|
ensureProvidersReady: boot.ensureProvidersReady,
|
|
543
573
|
persistLeadRoute: boot.persistLeadRoute,
|
|
@@ -562,11 +592,12 @@ function workflowAgentsApiFor(boot) {
|
|
|
562
592
|
},
|
|
563
593
|
getSession: () => rt.session,
|
|
564
594
|
cfgMod: boot.cfgMod,
|
|
565
|
-
STANDALONE_DATA_DIR,
|
|
595
|
+
STANDALONE_DATA_DIR: standaloneDataDir(),
|
|
566
596
|
resolveRoute,
|
|
567
597
|
lookupModelMeta: boot.lookupModelMeta,
|
|
568
598
|
adoptConfig: boot.adoptConfig,
|
|
569
599
|
saveConfigAndAdopt: boot.saveConfigAndAdopt,
|
|
600
|
+
reloadFullConfig: boot.reloadFullConfig,
|
|
570
601
|
ensureProvidersReady: boot.ensureProvidersReady,
|
|
571
602
|
displayConfig: boot.displayConfig,
|
|
572
603
|
mcpStatus: () => boot.mcpStatus(),
|
|
@@ -586,6 +617,7 @@ function workflowAgentsApiFor(boot) {
|
|
|
586
617
|
invalidatePreSessionToolSurface: boot.invalidatePreSessionToolSurface,
|
|
587
618
|
refreshEmptySessionToolPolicy: boot.refreshEmptySessionToolPolicy,
|
|
588
619
|
switchSessionWorkflow: boot.switchSessionWorkflow,
|
|
620
|
+
switchSessionOrchestrationMode: boot.switchSessionOrchestrationMode,
|
|
589
621
|
});
|
|
590
622
|
}
|
|
591
623
|
|
|
@@ -628,6 +660,7 @@ function sessionTurnApiFor(boot) {
|
|
|
628
660
|
return createSessionTurnApi({
|
|
629
661
|
applyPendingRoute: () => boot.modelRouteApi.applyPendingRoute(),
|
|
630
662
|
applyPendingAgentProfile: boot.applyPendingAgentProfile,
|
|
663
|
+
applyPendingSessionSwitches: boot.applyPendingSessionSwitches,
|
|
631
664
|
prepareTurnWorkspace: boot.workspaceApi.prepareTurnWorkspace,
|
|
632
665
|
admitTurnWorkspace: boot.workspaceApi.admitTurnWorkspace,
|
|
633
666
|
getSession: () => rt.session,
|
|
@@ -683,6 +716,7 @@ function sessionTurnApiFor(boot) {
|
|
|
683
716
|
notificationListeners: boot.notificationListeners,
|
|
684
717
|
awaitInitialMcpConnect: boot.awaitInitialMcpConnect,
|
|
685
718
|
mcpTurnGraceMs: tunables.mcpTurnGraceMs,
|
|
719
|
+
mcpAgentGraceMs: tunables.mcpAgentGraceMs,
|
|
686
720
|
awaitRoutePreparation: () => routePreparation.wait(),
|
|
687
721
|
getReservedSessionId: () => rt.reservedSessionId,
|
|
688
722
|
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);
|
|
@@ -90,6 +90,14 @@ function reserveSessionId(boot, id) {
|
|
|
90
90
|
// the configured one is the default for new sessions.
|
|
91
91
|
function currentWorkflow(boot) {
|
|
92
92
|
const { rt, cfgMod } = boot;
|
|
93
|
+
// A switch chosen while a turn runs shows at once; it applies next turn.
|
|
94
|
+
const pending = rt.session?.pendingWorkflowId;
|
|
95
|
+
if (pending) {
|
|
96
|
+
return workflowHelpers.activeWorkflowSummary(
|
|
97
|
+
{ ...rt.config, workflow: { ...(rt.config?.workflow || {}), active: pending } },
|
|
98
|
+
dataDirOf(cfgMod)
|
|
99
|
+
);
|
|
100
|
+
}
|
|
93
101
|
const active = workflowHelpers.activeWorkflowSummary(rt.config, dataDirOf(cfgMod));
|
|
94
102
|
const current = rt.session?.workflow;
|
|
95
103
|
return current?.id && active?.id && current.id !== active.id ? current : active;
|
|
@@ -106,7 +114,9 @@ function facadeGetters(boot) {
|
|
|
106
114
|
},
|
|
107
115
|
getWorkflow: () => currentWorkflow(boot),
|
|
108
116
|
getOrchestrationMode: () =>
|
|
109
|
-
rt.session?.id
|
|
117
|
+
rt.session?.id
|
|
118
|
+
? (rt.session.pendingOrchestrationMode ?? sessionOrchestrationMode(rt.session))
|
|
119
|
+
: configuredOrchestrationMode(rt.config),
|
|
110
120
|
getOutputStyle: () => boot.getOutputStyleStatusCached().current,
|
|
111
121
|
getContextStatus: boot.computeContextStatus,
|
|
112
122
|
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
|
}
|
|
@@ -11,7 +11,10 @@ import { LOCAL_PROVIDER_ID, configureLocalProviderIdleTtl } from '../../runtime/
|
|
|
11
11
|
import { resolve } from 'node:path';
|
|
12
12
|
import { clean } from '../../runtime/agent/orchestrator/runtime-core/session-text.mjs';
|
|
13
13
|
import { LAZY_SECRET_PROVIDERS } from '../../runtime/agent/orchestrator/runtime-core/model-capabilities.mjs';
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
ensureProviderEnabled,
|
|
16
|
+
normalizeSystemShellConfig,
|
|
17
|
+
} from '../../runtime/agent/orchestrator/runtime-core/config-helpers.mjs';
|
|
15
18
|
import {
|
|
16
19
|
workflowPresetId,
|
|
17
20
|
normalizeWebSearchProviderId,
|
|
@@ -32,8 +35,8 @@ import { createQuickModelRows } from '../quick-model-rows.mjs';
|
|
|
32
35
|
import { createProviderModels } from '../provider-models.mjs';
|
|
33
36
|
import { createProviderUsage } from '../provider-usage.mjs';
|
|
34
37
|
import { bootProfile } from '../boot-profile.mjs';
|
|
35
|
-
import {
|
|
36
|
-
import { outputStyleStatus, webSearchCapableFor } from './shared.mjs';
|
|
38
|
+
import { standaloneDataDir } from '../runtime-paths.mjs';
|
|
39
|
+
import { outputStyleStatus, resolveRoute, webSearchCapableFor } from './shared.mjs';
|
|
37
40
|
|
|
38
41
|
export function wireProviders(boot) {
|
|
39
42
|
wireConfigLifecycle(boot);
|
|
@@ -63,6 +66,10 @@ function wireConfigLifecycle(boot) {
|
|
|
63
66
|
rt.configHasSecrets = next;
|
|
64
67
|
},
|
|
65
68
|
getRoute: () => rt.route,
|
|
69
|
+
setRouteState: (next) => {
|
|
70
|
+
rt.route = next;
|
|
71
|
+
},
|
|
72
|
+
resolveRoute,
|
|
66
73
|
cfgMod,
|
|
67
74
|
sharedCfgMod,
|
|
68
75
|
setConfiguredShell,
|
|
@@ -73,7 +80,7 @@ function wireConfigLifecycle(boot) {
|
|
|
73
80
|
clean,
|
|
74
81
|
resolve,
|
|
75
82
|
onConfigReloaded: () => boot.invalidateContextStatusCache?.(),
|
|
76
|
-
STANDALONE_DATA_DIR,
|
|
83
|
+
STANDALONE_DATA_DIR: standaloneDataDir(),
|
|
77
84
|
});
|
|
78
85
|
const {
|
|
79
86
|
disposeConfigSync,
|
|
@@ -82,6 +89,7 @@ function wireConfigLifecycle(boot) {
|
|
|
82
89
|
seedOutputStyleStatusCache,
|
|
83
90
|
adoptConfig,
|
|
84
91
|
saveConfigAndAdopt,
|
|
92
|
+
confirmLeadFill,
|
|
85
93
|
scheduleSkillsSave,
|
|
86
94
|
flushSkillsSave,
|
|
87
95
|
scheduleOutputStyleSave,
|
|
@@ -98,6 +106,7 @@ function wireConfigLifecycle(boot) {
|
|
|
98
106
|
seedOutputStyleStatusCache,
|
|
99
107
|
adoptConfig,
|
|
100
108
|
saveConfigAndAdopt,
|
|
109
|
+
confirmLeadFill,
|
|
101
110
|
scheduleSkillsSave,
|
|
102
111
|
flushSkillsSave,
|
|
103
112
|
scheduleOutputStyleSave,
|
|
@@ -106,13 +115,14 @@ function wireConfigLifecycle(boot) {
|
|
|
106
115
|
ensureFullConfig,
|
|
107
116
|
displayConfig,
|
|
108
117
|
ensureConfigForRouteProvider,
|
|
109
|
-
persistLeadRoute: (routeLike) => {
|
|
118
|
+
persistLeadRoute: (routeLike, { onlyIfAbsent = false } = {}) => {
|
|
110
119
|
const leadRoute = normalizeWorkflowRoute(routeLike);
|
|
111
120
|
if (!leadRoute) return null;
|
|
112
121
|
const nextConfig = { ...(rt.config || {}) };
|
|
113
122
|
nextConfig.presets = upsertWorkflowPreset(nextConfig.presets, 'lead', leadRoute);
|
|
114
123
|
nextConfig.default = workflowPresetId('lead');
|
|
115
|
-
|
|
124
|
+
// A conditional fill reaches the file only while no Lead route is stored.
|
|
125
|
+
saveConfigAndAdopt(nextConfig, { leadFill: onlyIfAbsent });
|
|
116
126
|
return leadRoute;
|
|
117
127
|
},
|
|
118
128
|
});
|
|
@@ -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,7 @@ 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 { STANDALONE_ROOT,
|
|
37
|
+
import { STANDALONE_ROOT, standaloneDataDir } from '../runtime-paths.mjs';
|
|
38
38
|
import { dataDirOf, workflowHelpers } from './shared.mjs';
|
|
39
39
|
|
|
40
40
|
export function wireTools(boot) {
|
|
@@ -182,7 +182,7 @@ function wireToolSurface(boot) {
|
|
|
182
182
|
getCurrentCwd: () => rt.currentCwd,
|
|
183
183
|
cfgMod,
|
|
184
184
|
delegatableAgentIds: workflowHelpers.delegatableAgentIds,
|
|
185
|
-
dataDir:
|
|
185
|
+
dataDir: standaloneDataDir(),
|
|
186
186
|
getFeatureDisallowedTools: featureDisallowedTools,
|
|
187
187
|
});
|
|
188
188
|
Object.assign(boot, {
|