mixdog 1.4.2 → 1.4.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/package.json +2 -2
- package/scripts/build-shipped-history.mjs +15 -5
- package/scripts/gate-local.mjs +65 -19
- package/scripts/graph-parity.mjs +8 -3
- package/scripts/lib/gate-scheduler.mjs +2 -1
- package/scripts/lib/run-node-tests.mjs +17 -5
- package/scripts/lib/test-failure-summary.mjs +1 -8
- package/scripts/lib/test-spawn-ledger.mjs +33 -2
- package/scripts/post-release-check.mjs +26 -16
- package/scripts/provider-pingpong-live.mjs +1 -1
- package/scripts/prune-embedding-runtime.mjs +3 -1
- package/scripts/release-paths.mjs +7 -1
- package/src/defaults/shipped-history.json +20 -0
- package/src/defaults/skills/setup/SKILL.md +2 -2
- package/src/defaults/skills/setup/references/actions.md +16 -3
- package/src/defaults/skills/setup/references/surfaces.md +3 -0
- package/src/defaults/skills/setup-guide/SKILL.md +6 -1
- package/src/lib/instruction-text.cjs +36 -0
- package/src/lib/rules-builder.cjs +34 -20
- package/src/orchestration/balanced.md +23 -0
- package/src/orchestration/focused.md +22 -0
- package/src/orchestration/none.md +5 -0
- package/src/orchestration/swarm.md +24 -0
- package/src/rules/agent-mode/AGENT_MODE.md +3 -1
- package/src/rules/agent-mode/MIXY.md +2 -2
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/session-prep.mjs +3 -3
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +0 -1
- package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +4 -2
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +0 -9
- package/src/runtime/agent/orchestrator/agent-runtime/heartbeat-completion.mjs +2 -2
- package/src/runtime/agent/orchestrator/agent-runtime/session-builder.mjs +67 -0
- package/src/runtime/agent/orchestrator/agent-trace-format.mjs +1 -0
- package/src/runtime/agent/orchestrator/context/role-instructions.mjs +4 -4
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +3 -1
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +199 -46
- package/src/runtime/agent/orchestrator/mcp/client-config.mjs +3 -5
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +9 -3
- package/src/runtime/agent/orchestrator/mcp/client.mjs +3 -5
- package/src/runtime/agent/orchestrator/mcp/oauth-client.mjs +1 -1
- package/src/runtime/agent/orchestrator/mcp/oauth-credentials.mjs +8 -2
- package/src/runtime/agent/orchestrator/mcp/oauth-probe.mjs +1 -1
- package/src/runtime/agent/orchestrator/mcp/oauth-provider.mjs +14 -0
- package/src/runtime/agent/orchestrator/mcp/oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events/content-block-stop.mjs +3 -3
- package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/gemini-thinking.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-response-normalization.mjs +4 -6
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-head-parity.json +2784 -2872
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai.mjs +5 -8
- package/src/runtime/agent/orchestrator/providers/openai-responses-payload-parity.fixture.json +288 -300
- package/src/runtime/agent/orchestrator/providers/vertex-ai.mjs +10 -1
- package/src/runtime/agent/orchestrator/providers/xai-tool-search-head-parity.json +10 -30
- package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +30 -0
- package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +0 -11
- package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-availability.mjs +8 -0
- package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-delta.mjs +17 -3
- package/src/runtime/agent/orchestrator/runtime-core/goal-control.mjs +47 -27
- package/src/runtime/agent/orchestrator/runtime-core/goal-deadlines.mjs +141 -10
- package/src/runtime/agent/orchestrator/runtime-core/goal-mutations.mjs +26 -63
- package/src/runtime/agent/orchestrator/runtime-core/goal-reminder.mjs +28 -3
- package/src/runtime/agent/orchestrator/runtime-core/goal-runtime.mjs +36 -11
- package/src/runtime/agent/orchestrator/runtime-core/goal-state.mjs +88 -56
- package/src/runtime/agent/orchestrator/runtime-core/goal-storage.mjs +4 -1
- package/src/runtime/agent/orchestrator/runtime-core/goal-store.mjs +51 -32
- package/src/runtime/agent/orchestrator/runtime-core/goal-text.mjs +45 -145
- package/src/runtime/agent/orchestrator/runtime-core/goal-tool-defs.mjs +15 -98
- package/src/runtime/agent/orchestrator/runtime-core/goal-tool-exec.mjs +32 -99
- package/src/runtime/agent/orchestrator/runtime-core/goal-turns.mjs +23 -78
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +69 -48
- package/src/runtime/agent/orchestrator/runtime-core/todo-list.mjs +367 -0
- package/src/runtime/agent/orchestrator/runtime-core/todo-tool-defs.mjs +47 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-availability.mjs +155 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +9 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +119 -35
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/agent-loop.mjs +28 -22
- package/src/runtime/agent/orchestrator/session/agent-pool-progress.mjs +30 -0
- package/src/runtime/agent/orchestrator/session/attachment-preflight.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/cache-warm.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/catalog-db/index.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/compact/summary-route.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/context-utils.mjs +8 -12
- package/src/runtime/agent/orchestrator/session/conversation-import/claude.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/conversation-import/codex.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/conversation-import/convert.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/conversation-import/imported-session.mjs +7 -3
- package/src/runtime/agent/orchestrator/session/human-gate/held-message.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +1 -2
- package/src/runtime/agent/orchestrator/session/human-gate/run-policy.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/image-strip-recovery.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/completion-guards.mjs +11 -1
- package/src/runtime/agent/orchestrator/session/loop/context-overflow.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +8 -1
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/todo-check.mjs +196 -0
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn.mjs +116 -50
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +8 -1
- package/src/runtime/agent/orchestrator/session/loop/provider-tool-exclusions.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/steering.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/loop/stored-tool-args.mjs +5 -6
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +6 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +16 -2
- package/src/runtime/agent/orchestrator/session/loop/turn-report.mjs +35 -0
- package/src/runtime/agent/orchestrator/session/loop/usage.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +57 -26
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +9 -7
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +21 -3
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-failure.mjs +27 -11
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-open.mjs +37 -34
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +15 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +25 -15
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-state.mjs +79 -24
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-steering-drain.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +12 -1
- package/src/runtime/agent/orchestrator/session/manager/context-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/idle-cleanup.mjs +6 -1
- package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +9 -1
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-path.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-shard.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/prompt-settings.mjs +598 -0
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +19 -0
- package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +19 -10
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/manager/session-fallback-title.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +31 -0
- package/src/runtime/agent/orchestrator/session/manager/session-lock.mjs +31 -0
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +42 -6
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +11 -1
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-context.mjs +8 -9
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +339 -88
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-recovery.mjs +135 -11
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +377 -104
- package/src/runtime/agent/orchestrator/session/manager/turn-durability.mjs +144 -0
- package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/usage-metrics.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/manager.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/mixy-name.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +8 -1
- package/src/runtime/agent/orchestrator/session/save-session-worker.mjs +5 -1
- package/src/runtime/agent/orchestrator/session/store/canonical-reader.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/liveness-veto.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/store/save-worker.mjs +23 -2
- package/src/runtime/agent/orchestrator/session/store/sweep/sub-agent-retention.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/store/transcript-durability.mjs +88 -0
- package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/store-summary-log.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +14 -5
- package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/store.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/synthetic-user-envelope.mjs +7 -1
- package/src/runtime/agent/orchestrator/session/tail-reminder-rules.mjs +9 -1
- package/src/runtime/agent/orchestrator/session/transcript-restore/agent-envelope.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/transcript-restore/user-text.mjs +2 -2
- package/src/runtime/agent/orchestrator/stall-policy.mjs +3 -5
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +4 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/misuse-guard.mjs +21 -3
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/result-format.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/worktree-add-guard.mjs +77 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +0 -1
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +7 -3
- package/src/runtime/agent/orchestrator/tools/builtin/git-worktree-tool.mjs +27 -9
- package/src/runtime/agent/orchestrator/tools/builtin/lib/search-input-helpers.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-range-index.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-single-fast-paths.mjs +0 -1
- package/src/runtime/agent/orchestrator/tools/builtin/search-tool.mjs +0 -10
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +1 -2
- package/src/runtime/agent/orchestrator/tools/builtin.mjs +1 -24
- package/src/runtime/agent/orchestrator/tools/code-graph/graph-binary/child-kill.mjs +4 -3
- package/src/runtime/agent/orchestrator/tools/code-graph/graph-binary.mjs +1 -2
- package/src/runtime/agent/orchestrator/tools/code-graph/modes/calls.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/code-graph/modes/symbols.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/code-graph/search.mjs +4 -5
- package/src/runtime/agent/orchestrator/tools/code-graph/symbol-index.mjs +3 -4
- package/src/runtime/agent/orchestrator/tools/code-graph.mjs +4 -22
- package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +0 -4
- package/src/runtime/agent/orchestrator/tools/shell-policy.mjs +0 -1
- package/src/runtime/attachments/attachment-reference.mjs +1 -1
- package/src/runtime/attachments/pdf-extract.mjs +1 -1
- package/src/runtime/attachments/store.d.mts +1 -0
- package/src/runtime/attachments/store.mjs +2 -2
- package/src/runtime/channels/lib/config-reload-watch.mjs +42 -0
- package/src/runtime/channels/lib/owned-runtime/config-reload.mjs +29 -9
- package/src/runtime/channels/lib/scheduler.mjs +33 -0
- package/src/runtime/channels/lib/schedules-db.mjs +11 -4
- package/src/runtime/channels/lib/webhook/session-dispatch.mjs +4 -1
- package/src/runtime/channels/lib/webhooks-db.mjs +9 -3
- package/src/runtime/channels/lib/whisper-server.mjs +12 -12
- package/src/runtime/channels/lib/worker-main.mjs +9 -31
- package/src/runtime/computer-bridge/linux-readiness.mjs +10 -14
- package/src/runtime/connectors/connector-accounts-mcp.mjs +169 -33
- package/src/runtime/connectors/gmail-app-password.mjs +2 -2
- package/src/runtime/connectors/google-mcp.mjs +1 -1
- package/src/runtime/effort-judge/judge-client.mjs +2 -2
- package/src/runtime/effort-judge/judge-input.mjs +4 -4
- package/src/runtime/explore/explorer.mjs +0 -5
- package/src/runtime/explore/tool.mjs +3 -3
- package/src/runtime/local-provider/hardware.mjs +1 -1
- package/src/runtime/media/adapters/codex-image.mjs +3 -3
- package/src/runtime/media/adapters/gemini-video.mjs +1 -1
- package/src/runtime/media/media-usage.mjs +1 -1
- package/src/runtime/media/store.mjs +1 -1
- package/src/runtime/memory/index.mjs +11 -1
- package/src/runtime/memory/lib/embedding-reindex.mjs +27 -0
- package/src/runtime/memory/lib/memory-embed.mjs +83 -14
- package/src/runtime/memory/lib/memory-process-lock.mjs +159 -36
- package/src/runtime/memory/lib/memory-text-utils.mjs +6 -1
- package/src/runtime/memory/lib/memory.mjs +17 -0
- package/src/runtime/memory/lib/pg/process.mjs +1 -1
- package/src/runtime/memory/lib/pg/supervisor.mjs +16 -96
- package/src/runtime/memory/lib/recall-hybrid/hybrid-sql.mjs +12 -3
- package/src/runtime/office/authoring/docx-html-runner.mjs +1 -1
- package/src/runtime/office/authoring/pptx-author-action.mjs +1 -1
- package/src/runtime/office/authoring/xlsx-html-build.mjs +1 -1
- package/src/runtime/office/authoring/xlsx-html-runner.mjs +1 -1
- package/src/runtime/office/capabilities.mjs +1 -1
- package/src/runtime/office/core/office-core.mjs +1 -1
- package/src/runtime/office/design/content-model.mjs +3 -3
- package/src/runtime/office/design/docx/design-docx/section.mjs +6 -6
- package/src/runtime/office/design/xlsx/design-xlsx-components.mjs +1 -1
- package/src/runtime/office/design/xlsx/design-xlsx.mjs +1 -1
- package/src/runtime/office/pdf/ocr-engine.mjs +1 -1
- package/src/runtime/office/pdf/pdf-writer.mjs +4 -4
- package/src/runtime/office/portable/portable-docx-operations.mjs +2 -2
- package/src/runtime/office/portable/portable-soffice.mjs +8 -6
- package/src/runtime/office/portable/xlsx-contract.mjs +1 -1
- package/src/runtime/shared/atomic-file.d.mts +8 -0
- package/src/runtime/shared/background-tasks.mjs +22 -4
- package/src/runtime/shared/background-wait.mjs +66 -0
- package/src/runtime/shared/child-guardian.mjs +17 -7
- package/src/runtime/shared/config.mjs +313 -16
- package/src/runtime/shared/connector-catalog.d.mts +4 -5
- package/src/runtime/shared/connector-catalog.mjs +11 -1
- package/src/runtime/shared/file-lock.mjs +8 -3
- package/src/runtime/shared/git-runner.mjs +7 -2
- package/src/runtime/shared/idle-gc.mjs +30 -7
- package/src/runtime/shared/llm/http-agent.mjs +8 -5
- package/src/runtime/shared/llm/system-proxy.mjs +2 -1
- package/src/runtime/shared/llm/usage-ledger-quota.mjs +31 -12
- package/src/runtime/shared/llm/usage-ledger-rollup.mjs +84 -8
- package/src/runtime/shared/llm/usage-ledger.mjs +3 -0
- package/src/runtime/shared/llm/usage-rollup.mjs +48 -0
- package/src/runtime/shared/maintenance-schedule.mjs +109 -0
- package/src/runtime/shared/process-runner.mjs +8 -4
- package/src/runtime/shared/routine-trigger.d.mts +13 -0
- package/src/runtime/shared/routine-trigger.mjs +34 -0
- package/src/runtime/shared/run-child.d.mts +2 -1
- package/src/runtime/shared/run-child.mjs +70 -18
- package/src/runtime/shared/session-scratch.mjs +14 -2
- package/src/runtime/shared/shipped-definitions.mjs +7 -1
- package/src/runtime/shared/tool-card-model.golden.json +3 -12
- package/src/runtime/shared/tool-execution-contract.mjs +2 -0
- package/src/runtime/shared/tool-work-units.mjs +31 -6
- package/src/runtime/shared/turn-snapshot.mjs +26 -4
- package/src/runtime/shared/turn-worktree-snapshot.mjs +6 -11
- package/src/runtime/shared/worker-requests.mjs +17 -3
- package/src/runtime/shared/worktrees/branch-management.mjs +1 -5
- package/src/runtime/shared/worktrees/contract.mjs +16 -6
- package/src/runtime/shared/worktrees/dependencies.mjs +127 -89
- package/src/runtime/shared/worktrees/disk.mjs +79 -2
- package/src/runtime/shared/worktrees/git.mjs +44 -11
- package/src/runtime/shared/worktrees/include.mjs +6 -4
- package/src/runtime/shared/worktrees/maintenance.mjs +422 -30
- package/src/runtime/shared/worktrees/manager.mjs +772 -75
- package/src/runtime/shared/worktrees/settings.mjs +33 -7
- package/src/runtime/shared/worktrees/test-support.mjs +5 -1
- package/src/runtime/shared/worktrees/worker-snapshots.mjs +82 -0
- package/src/runtime/tidy/process.mjs +2 -1
- package/src/runtime/web-search/index.mjs +3 -22
- package/src/runtime/web-search/lib/web-tools.mjs +2 -2
- package/src/runtime/web-search/tool-defs.mjs +17 -26
- package/src/session-runtime/agent-profile-changes.mjs +55 -4
- package/src/session-runtime/boot/apis.mjs +27 -4
- package/src/session-runtime/boot/begin.mjs +2 -0
- package/src/session-runtime/boot/config.mjs +10 -1
- package/src/session-runtime/boot/facade.mjs +1 -0
- package/src/session-runtime/boot/providers.mjs +70 -3
- package/src/session-runtime/boot/session.mjs +2 -0
- package/src/session-runtime/boot/tools.mjs +69 -25
- package/src/session-runtime/channel-config-api.mjs +1 -0
- package/src/session-runtime/config-change-effects.mjs +179 -0
- package/src/session-runtime/config-lifecycle/config-writers.mjs +1 -0
- package/src/session-runtime/config-lifecycle.mjs +160 -24
- package/src/session-runtime/conversation-import/discovery.mjs +86 -7
- package/src/session-runtime/conversation-import/service.mjs +3 -2
- package/src/session-runtime/goal-facade-api.mjs +49 -3
- package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +3 -0
- package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +3 -2
- package/src/session-runtime/internal-tool-executor/feature-tools.mjs +3 -11
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +18 -4
- package/src/session-runtime/internal-tool-executor.mjs +12 -19
- package/src/session-runtime/lifecycle/cold-heir.mjs +7 -0
- package/src/session-runtime/lifecycle/memory-ingest.mjs +3 -3
- package/src/session-runtime/lifecycle/session-switch/session-delete.mjs +53 -5
- package/src/session-runtime/lifecycle/session-switch.mjs +13 -2
- package/src/session-runtime/lifecycle/teardown/session-close.mjs +4 -4
- package/src/session-runtime/lifecycle-api.mjs +1 -0
- package/src/session-runtime/mcp-glue/server-catalog.mjs +14 -3
- package/src/session-runtime/mcp-glue/server-connection.mjs +34 -8
- package/src/session-runtime/model-route/set-route.mjs +40 -7
- package/src/session-runtime/native-web-search/routes.mjs +3 -3
- package/src/session-runtime/provider-auth/refresh.mjs +6 -3
- package/src/session-runtime/provider-auth/setup.mjs +1 -1
- package/src/session-runtime/provider-readiness.mjs +53 -4
- package/src/session-runtime/resource-api.mjs +1 -1
- package/src/session-runtime/resource-extension-sync.mjs +4 -8
- package/src/session-runtime/resource-mcp-connector-accounts.mjs +5 -1
- package/src/session-runtime/resource-mcp-secrets.mjs +3 -3
- package/src/session-runtime/resource-plugins-api.mjs +4 -0
- package/src/session-runtime/routine-executor.mjs +152 -0
- package/src/session-runtime/routine-home-turn.mjs +46 -5
- package/src/session-runtime/runtime-facade.mjs +5 -0
- package/src/session-runtime/runtime-feature-gates.mjs +2 -11
- package/src/session-runtime/schedule-session-run.mjs +1 -0
- package/src/session-runtime/services/agent-tool/job-task-reconcile.mjs +6 -1
- package/src/session-runtime/services/agent-tool/job-views/session-progress.mjs +7 -0
- package/src/session-runtime/services/agent-tool/send-flow.mjs +110 -6
- package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +12 -0
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-plan.mjs +5 -0
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +24 -6
- package/src/session-runtime/services/agent-tool.mjs +51 -1
- package/src/session-runtime/services/channel-admin.mjs +18 -0
- package/src/session-runtime/services/hook-bus/command-handler.mjs +7 -11
- package/src/session-runtime/services/plugin-admin.mjs +4 -0
- package/src/session-runtime/services/seeds.mjs +7 -0
- package/src/session-runtime/services/usage-stats-model.mjs +32 -11
- package/src/session-runtime/session-create/materialize.mjs +4 -2
- package/src/session-runtime/session-create/session-options.mjs +2 -0
- package/src/session-runtime/settings-builtin-tools-api.mjs +1 -9
- package/src/session-runtime/setup-tool/connector-widen-approval.mjs +1 -1
- package/src/session-runtime/setup-tool/executor.mjs +8 -1
- package/src/session-runtime/setup-tool/extended-actions.mjs +2 -0
- package/src/session-runtime/setup-tool/settings-contract.mjs +28 -0
- package/src/session-runtime/setup-tool/tool-defs.mjs +26 -1
- package/src/session-runtime/tool-policy/agent-profile-fold.mjs +40 -43
- package/src/session-runtime/tool-policy/mode-switch.mjs +1 -1
- package/src/session-runtime/tool-policy/policy-stage.mjs +106 -8
- package/src/session-runtime/tool-policy/workflow-overlay.mjs +2 -1
- package/src/session-runtime/tool-policy-refresh.mjs +182 -5
- package/src/session-runtime/tool-surface.mjs +38 -1
- package/src/session-runtime/turn/agent-ops.mjs +10 -2
- package/src/session-runtime/turn/session-ops.mjs +2 -0
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +5 -0
- package/src/session-runtime/turn/turn-run.mjs +1 -1
- package/src/session-runtime/webhook-session-run.mjs +2 -0
- package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +1 -4
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +3 -10
- package/src/session-runtime/workflow-agents-api/instruction-files.mjs +165 -0
- package/src/session-runtime/workflow-agents-api/style-and-mode.mjs +5 -4
- package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +2 -3
- package/src/session-runtime/workflow-agents-api.mjs +2 -0
- package/src/session-runtime/workspace/project-branches.mjs +1 -1
- package/src/session-runtime/workspace/session-view.mjs +1 -1
- package/src/session-runtime/workspace/transitions.mjs +20 -4
- package/src/session-runtime/workspace/worktree-maintenance.mjs +126 -6
- package/src/session-runtime/workspace/worktree-setup.mjs +13 -1
- package/src/session-runtime/workspace/worktree-tool.mjs +16 -0
- package/src/standalone/daemon-agent-control.mjs +25 -8
- package/src/standalone/daemon-desktop-runtime.mjs +6 -2
- package/src/standalone/daemon-lag-profiler.mjs +7 -7
- package/src/standalone/daemon.mjs +54 -2
- package/src/standalone/local-session-runtime.mjs +16 -0
- package/src/standalone/session-client/daemon-unavailable.mjs +1 -1
- package/src/standalone/session-protocol.mjs +11 -0
- package/src/standalone/session-service/agent-route-follow.mjs +23 -20
- package/src/standalone/session-service/agent-tree/agent-turns.mjs +18 -6
- package/src/standalone/session-service/quota-resume.mjs +9 -0
- package/src/standalone/session-service/session-calls/session-action.mjs +51 -1
- package/src/standalone/session-service/session-calls/session-turns.mjs +37 -18
- package/src/standalone/session-service/session-calls/turn-gate.mjs +34 -0
- package/src/standalone/session-service/session-calls.mjs +2 -1
- package/src/tui/App.jsx +8 -0
- package/src/tui/app/clipboard.mjs +1 -1
- package/src/tui/app/create-app-pickers.mjs +2 -0
- package/src/tui/app/doctor.mjs +2 -2
- package/src/tui/app/panel-signature.mjs +1 -1
- package/src/tui/app/settings-picker.mjs +53 -8
- package/src/tui/app/shell-layout/row-budgets.mjs +2 -2
- package/src/tui/app/slash-commands.mjs +1 -1
- package/src/tui/app/slash-dispatch/route-commands.mjs +1 -1
- package/src/tui/app/slash-dispatch/session-commands.mjs +1 -1
- package/src/tui/app/use-prompt-queue-history.mjs +2 -2
- package/src/tui/app/use-transcript-activity.mjs +1 -1
- package/src/tui/app/use-transcript-window/geometry.mjs +1 -1
- package/src/tui/components/prompt-input/escape-policy.d.mts +0 -1
- package/src/tui/components/prompt-input/escape-policy.mjs +1 -1
- package/src/tui/components/question-panel-model.mjs +4 -4
- package/src/tui/components/tool-execution/standard-card.jsx +3 -4
- package/src/tui/components/user-message-skills.mjs +1 -1
- package/src/tui/dist/index.mjs +309 -30
- package/src/tui/markdown/render-ansi.mjs +1 -1
- package/src/tui/session/agent-job-feed/notification-router.mjs +10 -0
- package/src/tui/session/agent-job-feed.mjs +2 -0
- package/src/tui/session/context-state.mjs +3 -0
- package/src/tui/session/quota-resume.mjs +1 -1
- package/src/tui/session/session-api/lifecycle/dispose.mjs +1 -0
- package/src/tui/session/session-api/lifecycle/session-reset.mjs +7 -0
- package/src/tui/session/session-api/routes-agent-definitions.mjs +5 -0
- package/src/tui/session/session-api/worktree.mjs +13 -1
- package/src/tui/session/session-flow/drain.mjs +11 -14
- package/src/tui/session/tool-card-results/grouped-result.mjs +2 -2
- package/src/tui/session/turn-quiet.mjs +1 -1
- package/src/tui/session/turn.mjs +3 -0
- package/src/tui/session/worktree-setup-notice.mjs +1 -1
- package/src/tui/spinner-meta.mjs +3 -3
- package/src/tui/spinner-verbs.mjs +2 -2
- package/src/defaults/skills/goal-management/SKILL.md +0 -169
- package/src/runtime/agent/orchestrator/runtime-core/goal-tasks.mjs +0 -156
- package/src/session-runtime/goal-tasks.mjs +0 -1
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
_clearSessionRuntime,
|
|
24
24
|
} from './runtime-liveness.mjs';
|
|
25
25
|
import { clearTurnCheckpoint } from './turn-checkpoint.mjs';
|
|
26
|
+
import { forgetUnsettledTurn } from './turn-durability.mjs';
|
|
26
27
|
import { forgetSessionSaveBaseline } from '../store/save-worker.mjs';
|
|
27
28
|
import { publishSessionPersistence } from '../store/session-persistence-events.mjs';
|
|
28
29
|
import { forgetSessionLoadCache } from '../store/load-cache.mjs';
|
|
@@ -31,6 +32,7 @@ import { cancelOwnedShellTrees } from '../../tools/lib/owned-shell-trees.mjs';
|
|
|
31
32
|
import { noteShellOwnerSessionClosed } from '../../tools/builtin/lib/shell-job-records.mjs';
|
|
32
33
|
import { forgetSideQuestion } from '../side-question-store.mjs';
|
|
33
34
|
import { cancelBackgroundTasks } from '../../../../shared/background-tasks.mjs';
|
|
35
|
+
import { releaseWorkerSnapshots } from '../../../../shared/worktrees/worker-snapshots.mjs';
|
|
34
36
|
|
|
35
37
|
/**
|
|
36
38
|
* Close a session. Plants a `closed=true` tombstone on disk with a bumped
|
|
@@ -148,6 +150,7 @@ function finishClose({ id, reason, tombstone, entry, closeSnapshot, newGen, outc
|
|
|
148
150
|
_stopToolActivityHeartbeat(id);
|
|
149
151
|
cancelOwnedShellProcesses({ id, reason, tombstone });
|
|
150
152
|
clearTurnCheckpoint(id);
|
|
153
|
+
forgetUnsettledTurn(id);
|
|
151
154
|
teardownSessionRuntime({ id, entry, reason, tombstone, newGen });
|
|
152
155
|
return true;
|
|
153
156
|
}
|
|
@@ -377,6 +380,8 @@ export function unloadSessionRuntime(id, reason = 'runtime-unload') {
|
|
|
377
380
|
closeProviderConnections(id, `runtime-unload:${reason}`);
|
|
378
381
|
releaseSessionReadCaches(id);
|
|
379
382
|
_clearSessionRuntime(id);
|
|
383
|
+
// A settled worker turn's read-only snapshots go with it (only ones it made).
|
|
384
|
+
void releaseWorkerSnapshots(id).catch(() => {});
|
|
380
385
|
if (process.env.MIXDOG_DEBUG_SESSION_LOG) {
|
|
381
386
|
try {
|
|
382
387
|
process.stderr.write(`[agent-unload] session=${id} reason=${reason}\n`);
|
|
@@ -68,7 +68,7 @@ export function fallbackTitleFromMessages(messages) {
|
|
|
68
68
|
/** Fills `session.title` only when missing. Never touches a locked (manual/AI)
|
|
69
69
|
* or generated title, and leaves generatedTitleStage unset so
|
|
70
70
|
* updateSessionGeneratedTitle can still upgrade it. The caller persists. */
|
|
71
|
-
|
|
71
|
+
function applyFallbackSessionTitle(session, title) {
|
|
72
72
|
if (!session || !isUsableTitle(title) || isUsableTitle(session.title)) return false;
|
|
73
73
|
if (session.titleLocked === true || session.generatedTitleStage) return false;
|
|
74
74
|
session.title = title;
|
|
@@ -7,6 +7,7 @@ import { getProvider } from '../../providers/registry.mjs';
|
|
|
7
7
|
import { invalidateContextUsageSnapshot, invalidateProviderContextBaseline } from '../loop/compact-policy.mjs';
|
|
8
8
|
import { saveSession, saveSessionAsync, saveSessionAsyncDeferred, loadSession, setLiveSession } from '../store.mjs';
|
|
9
9
|
import { _liveSessions } from '../store/live-state.mjs';
|
|
10
|
+
import { _getRuntimeEntry } from './runtime-liveness.mjs';
|
|
10
11
|
import { _recoverTurnCheckpointDurably } from './turn-checkpoint-recovery.mjs';
|
|
11
12
|
import { isAgentOwner } from '../../agent-owner.mjs';
|
|
12
13
|
import { AGENT_MODE, resolveSessionMode, sessionModeOf } from '../agent-mode.mjs';
|
|
@@ -522,6 +523,36 @@ export function updateSessionRoute(id, route = {}, options = {}) {
|
|
|
522
523
|
return session;
|
|
523
524
|
}
|
|
524
525
|
|
|
526
|
+
/**
|
|
527
|
+
* A route saved for a session while its turn runs: held as
|
|
528
|
+
* `session.heldRoute` (on the object the running turn commits, so its save
|
|
529
|
+
* persists it) and applied at the session's next turn boundary
|
|
530
|
+
* (applyHeldSessionRoute). A later hold replaces an earlier one; `route`
|
|
531
|
+
* null drops the hold (the route was saved back to the running one).
|
|
532
|
+
*/
|
|
533
|
+
export function holdSessionRoute(id, route = {}) {
|
|
534
|
+
if (!id) return null;
|
|
535
|
+
const targets = new Set([_getRuntimeEntry(id)?.session, loadSession(id)]);
|
|
536
|
+
let held = null;
|
|
537
|
+
for (const session of targets) {
|
|
538
|
+
if (session?.id !== id || session.closed === true) continue;
|
|
539
|
+
if (route) session.heldRoute = { ...route };
|
|
540
|
+
else delete session.heldRoute;
|
|
541
|
+
held = session;
|
|
542
|
+
}
|
|
543
|
+
return held;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/** A held route takes effect before the turn opens on `session`. */
|
|
547
|
+
export function applyHeldSessionRoute(session) {
|
|
548
|
+
const route = session?.heldRoute;
|
|
549
|
+
if (!route) return session;
|
|
550
|
+
delete session.heldRoute;
|
|
551
|
+
const crossProvider =
|
|
552
|
+
(route.provider && route.provider !== session.provider) || (route.model && route.model !== session.model);
|
|
553
|
+
return updateSessionRoute(session.id, route, { session, crossProvider }) || session;
|
|
554
|
+
}
|
|
555
|
+
|
|
525
556
|
// --- resume (reload tools for a stored session) ---
|
|
526
557
|
// Interrupted-turn recovery lives in turn-checkpoint-recovery.mjs; the
|
|
527
558
|
// prepared tool surface it consumes is cached in prepared-resume-cache.mjs.
|
|
@@ -29,7 +29,38 @@ export function acquireSessionLock(sessionId, signal = null) {
|
|
|
29
29
|
};
|
|
30
30
|
const unlock = () => releaseSlot();
|
|
31
31
|
if (!signal) return previousReady.then(() => unlock);
|
|
32
|
+
return waitForSlot(sessionId, signal, previousReady, releaseSlot, unlock);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** The lock only when nobody holds it or waits for it: the unlock now, or
|
|
36
|
+
* null. Synchronous, so a caller can check and act with no turn starting
|
|
37
|
+
* in between (askSession takes this lock for every turn). */
|
|
38
|
+
export function tryAcquireSessionLock(sessionId) {
|
|
39
|
+
if (_sessionLocks.has(sessionId)) return null;
|
|
40
|
+
let release;
|
|
41
|
+
const entry = {
|
|
42
|
+
promise: new Promise((r) => {
|
|
43
|
+
release = r;
|
|
44
|
+
}),
|
|
45
|
+
count: 1,
|
|
46
|
+
};
|
|
47
|
+
_sessionLocks.set(sessionId, entry);
|
|
48
|
+
let released = false;
|
|
49
|
+
return () => {
|
|
50
|
+
if (released) return;
|
|
51
|
+
released = true;
|
|
52
|
+
entry.count--;
|
|
53
|
+
if (entry.count === 0 && _sessionLocks.get(sessionId) === entry) _sessionLocks.delete(sessionId);
|
|
54
|
+
release();
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Someone waits for the lock behind its holder (a turn about to start). */
|
|
59
|
+
export function sessionLockContended(sessionId) {
|
|
60
|
+
return (_sessionLocks.get(sessionId)?.count ?? 0) > 1;
|
|
61
|
+
}
|
|
32
62
|
|
|
63
|
+
function waitForSlot(sessionId, signal, previousReady, releaseSlot, unlock) {
|
|
33
64
|
// A cancelled waiter must reject immediately without opening a hole in the
|
|
34
65
|
// mutex. Its reserved slot is skipped only after the previous holder exits,
|
|
35
66
|
// so later waiters still cannot overlap the live owner.
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
// carry all four to the provider with their cache tiers.
|
|
5
5
|
import { buildSkillManifest, composeSystemPrompt } from '../../context/collect.mjs';
|
|
6
6
|
import { configuredInstructionFilesMode, loadInstructionFilesContext } from '../../context/instruction-files.mjs';
|
|
7
|
+
import { normalizeInstructionFilesMode } from '../../../../shared/instruction-files-mode.mjs';
|
|
8
|
+
import { promptConfigSlice, promptSettingsRecord } from './prompt-settings.mjs';
|
|
7
9
|
import { agentModeIdentityLine } from '../../context/role-instructions.mjs';
|
|
8
10
|
import { AGENT_MODE, sessionModeOf } from '../agent-mode.mjs';
|
|
9
11
|
import { MIXY_AGENT_ID } from '../agent-home.mjs';
|
|
@@ -13,6 +15,7 @@ import {
|
|
|
13
15
|
_buildAgentModeRules,
|
|
14
16
|
_buildLeadRules,
|
|
15
17
|
_buildLeadMetaContext,
|
|
18
|
+
_buildLeadLanguage,
|
|
16
19
|
_buildLeadLanguageContext,
|
|
17
20
|
} from './rules-cache.mjs';
|
|
18
21
|
import {
|
|
@@ -88,7 +91,7 @@ function buildShellEnvironmentContext(opts, ownerIsAgent, toolsForRouting, sessi
|
|
|
88
91
|
* none.
|
|
89
92
|
* @returns {{ environmentContext: string|undefined, instructionFilesContext: string|undefined }}
|
|
90
93
|
*/
|
|
91
|
-
export function buildWorkspacePromptContext(session, cwd) {
|
|
94
|
+
export function buildWorkspacePromptContext(session, cwd, { instructionFilesMode } = {}) {
|
|
92
95
|
const ownerIsAgent = session?.owner === 'agent';
|
|
93
96
|
const toolFreeRole =
|
|
94
97
|
ownerIsAgent && Array.isArray(session?.schemaAllowedTools) && session.schemaAllowedTools.length === 0;
|
|
@@ -103,7 +106,14 @@ export function buildWorkspacePromptContext(session, cwd) {
|
|
|
103
106
|
instructionFilesContext:
|
|
104
107
|
session?.skipInstructionFiles === true || sessionModeOf(session) === AGENT_MODE
|
|
105
108
|
? undefined
|
|
106
|
-
: loadInstructionFilesContext({
|
|
109
|
+
: loadInstructionFilesContext({
|
|
110
|
+
// A session runtime passes its in-memory setting; others read the file.
|
|
111
|
+
mode:
|
|
112
|
+
instructionFilesMode === undefined
|
|
113
|
+
? configuredInstructionFilesMode()
|
|
114
|
+
: normalizeInstructionFilesMode(instructionFilesMode),
|
|
115
|
+
cwd,
|
|
116
|
+
}),
|
|
107
117
|
};
|
|
108
118
|
}
|
|
109
119
|
|
|
@@ -184,10 +194,13 @@ export function composeSessionSystem(opts, { profile, providerName, modelName, s
|
|
|
184
194
|
sessionMode,
|
|
185
195
|
});
|
|
186
196
|
const leadOnly = !skipAgentRules && !ownerIsAgent;
|
|
187
|
-
|
|
197
|
+
// The runtime's in-memory settings (a session runtime passes its config;
|
|
198
|
+
// other callers read the config file).
|
|
199
|
+
const config = promptConfigSlice(opts.promptConfig);
|
|
200
|
+
const metaContext = leadOnly ? _buildLeadMetaContext({ includeOutputStyle: !agentMode, config }) : '';
|
|
188
201
|
// Lead-only response language; closes the environment block so no English
|
|
189
202
|
// system text (session/shell/git lines) follows it.
|
|
190
|
-
const languageContext = leadOnly ? _buildLeadLanguageContext({ includeOutputStyle: !agentMode }) : '';
|
|
203
|
+
const languageContext = leadOnly ? _buildLeadLanguageContext({ includeOutputStyle: !agentMode, config }) : '';
|
|
191
204
|
// Cwd, shell and repository facts only serve tool calls; a tool-free role
|
|
192
205
|
// gets none, which also keeps its prompt identical across projects.
|
|
193
206
|
const shellEnvironmentContext = toolFreeRole
|
|
@@ -203,7 +216,10 @@ export function composeSessionSystem(opts, { profile, providerName, modelName, s
|
|
|
203
216
|
const instructionFilesContext =
|
|
204
217
|
toolFreeRole || profile?.skip?.claudemd || agentMode
|
|
205
218
|
? ''
|
|
206
|
-
: loadInstructionFilesContext({
|
|
219
|
+
: loadInstructionFilesContext({
|
|
220
|
+
mode: config ? normalizeInstructionFilesMode(config.instructionFiles) : configuredInstructionFilesMode(),
|
|
221
|
+
cwd: opts.cwd,
|
|
222
|
+
});
|
|
207
223
|
const composed = composeSystemPrompt({
|
|
208
224
|
...roleFields,
|
|
209
225
|
agentRules: injectedRules || undefined,
|
|
@@ -218,7 +234,27 @@ export function composeSessionSystem(opts, { profile, providerName, modelName, s
|
|
|
218
234
|
environmentContext: shellEnvironmentContext,
|
|
219
235
|
provider: providerName || null,
|
|
220
236
|
});
|
|
221
|
-
|
|
237
|
+
// What the prompt presents of the prompt settings (prompt-settings.mjs).
|
|
238
|
+
const promptSettings = promptSettingsRecord({
|
|
239
|
+
meta: metaContext,
|
|
240
|
+
workflow: opts.workflowContext || '',
|
|
241
|
+
// A coding Lead's mode text (an agent-mode Lead's delegation block is fixed).
|
|
242
|
+
...(ownerIsAgent || agentMode
|
|
243
|
+
? {}
|
|
244
|
+
: {
|
|
245
|
+
orchestration: String(opts.leadWorkflowParts?.orchestrationContext || ''),
|
|
246
|
+
orchestrationMode: opts.orchestrationMode || '',
|
|
247
|
+
}),
|
|
248
|
+
skills: buildSkillManifest(skills),
|
|
249
|
+
language: languageContext,
|
|
250
|
+
instructionFiles: profile?.skip?.claudemd ? '' : instructionFilesContext,
|
|
251
|
+
coreMemory: profile?.skip?.memory ? '' : opts.coreMemoryContext || '',
|
|
252
|
+
instructionFilesMode: config
|
|
253
|
+
? normalizeInstructionFilesMode(config.instructionFiles)
|
|
254
|
+
: configuredInstructionFilesMode(),
|
|
255
|
+
});
|
|
256
|
+
const responseLanguage = leadOnly ? _buildLeadLanguage({ config }) || null : null;
|
|
257
|
+
return { ...composed, environmentTailContext, promptIdentity, promptSettings, responseLanguage };
|
|
222
258
|
}
|
|
223
259
|
|
|
224
260
|
// 4-BP layout (see composeSystemPrompt docs):
|
|
@@ -168,6 +168,8 @@ export function buildSessionRecord({ opts, route, presetObj, surface, prompt, me
|
|
|
168
168
|
sessionMode: opts.sessionMode,
|
|
169
169
|
bp3CoreContext: prompt.sessionMarkerCore,
|
|
170
170
|
promptIdentity: prompt.promptIdentity,
|
|
171
|
+
...(prompt.promptSettings ? { promptSettings: prompt.promptSettings } : {}),
|
|
172
|
+
...(prompt.responseLanguage !== undefined ? { responseLanguage: prompt.responseLanguage } : {}),
|
|
171
173
|
callerDisallowedTools: [...(opts.callerDisallowedTools ?? opts.disallowedTools ?? [])],
|
|
172
174
|
bp3EnvironmentContext: prompt.environmentTailContext,
|
|
173
175
|
// BP3 core and the volatile environment live in SEPARATE system
|
|
@@ -11,6 +11,7 @@ import { buildSkillToolDefs } from '../../context/collect.mjs';
|
|
|
11
11
|
import { filterModelEditTools } from '../../../../shared/edit-tool-dialect.mjs';
|
|
12
12
|
import { filterMcpToolsForSession } from '../../runtime-core/extension-scopes.mjs';
|
|
13
13
|
import { ROUTE_TOOL_ORDER } from '../../runtime-core/tool-catalog-data.mjs';
|
|
14
|
+
import { TODO_TOOL } from '../../runtime-core/todo-tool-defs.mjs';
|
|
14
15
|
|
|
15
16
|
// Merge externally-connected MCP tools with the plugin's in-process tools
|
|
16
17
|
// (registered by agent's toolExecutor adapter). Internal tools are exposed
|
|
@@ -110,10 +111,19 @@ export function resolveSessionTools(
|
|
|
110
111
|
// The shell text follows the system shell the runtime actually resolves
|
|
111
112
|
// (Git Bash/WSL on Windows, pwsh on POSIX), before the edit-dialect rewrite.
|
|
112
113
|
const shellKind = resolveShellFor('default')?.shellType;
|
|
113
|
-
const base = _computeBaseTools(toolSpec, mcp, skillTools).map((tool) =>
|
|
114
|
+
const base = withTodoTool(_computeBaseTools(toolSpec, mcp, skillTools), toolSpec).map((tool) =>
|
|
115
|
+
bindShellKind(tool, shellKind)
|
|
116
|
+
);
|
|
114
117
|
return filterModelEditTools(base, modelName);
|
|
115
118
|
}
|
|
116
119
|
|
|
120
|
+
// Every session that has tools at all owns a step list (the Lead and each
|
|
121
|
+
// agent alike); an explicit "no tools" spec stays without one.
|
|
122
|
+
function withTodoTool(tools, toolSpec) {
|
|
123
|
+
if (Array.isArray(toolSpec) && toolSpec.length === 0) return tools;
|
|
124
|
+
return _dedupByName([...tools, TODO_TOOL]);
|
|
125
|
+
}
|
|
126
|
+
|
|
117
127
|
export function previewSessionTools(toolSpec, skills = [], options = {}) {
|
|
118
128
|
return resolveSessionTools(toolSpec, skills, options);
|
|
119
129
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { contextMessagesSignature } from '../context-utils.mjs';
|
|
2
|
-
import { checkpointMessage
|
|
2
|
+
import { checkpointMessage } from './turn-checkpoint-journal.mjs';
|
|
3
3
|
|
|
4
4
|
const TURN_CONTEXT_STATE_VERSION = 1;
|
|
5
5
|
|
|
@@ -29,9 +29,11 @@ function compactCheckpointState(compaction) {
|
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Capture provider usage or a post-compact replacement reading against the
|
|
32
|
-
* same canonical message representation persisted by the checkpoint
|
|
32
|
+
* same canonical message representation persisted by the checkpoint:
|
|
33
|
+
* `messages[0..boundary)` is the part recovery takes from the durable record,
|
|
34
|
+
* the rest is the checkpoint's own (boundary 0 for a self-contained one).
|
|
33
35
|
*/
|
|
34
|
-
export function captureTurnCheckpointContextState(session, messages,
|
|
36
|
+
export function captureTurnCheckpointContextState(session, messages, boundary) {
|
|
35
37
|
if (!session || !Array.isArray(messages)) return null;
|
|
36
38
|
const providerCount = nonNegativeCount(session.contextPressureBaselineMessageCount);
|
|
37
39
|
const providerTokens = Number(session.contextPressureBaselineTokens);
|
|
@@ -54,12 +56,9 @@ export function captureTurnCheckpointContextState(session, messages, currentUser
|
|
|
54
56
|
}
|
|
55
57
|
if (!kind || anchorCount === null || anchorCount > messages.length) return null;
|
|
56
58
|
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
const canonicalTurnMessages = fullTranscript
|
|
61
|
-
? messages.map(checkpointMessage)
|
|
62
|
-
: turnMessagesForCheckpoint(messages, currentUserContent);
|
|
59
|
+
const committedPrefixCount =
|
|
60
|
+
Number.isInteger(boundary) && boundary >= 0 && boundary <= messages.length ? boundary : 0;
|
|
61
|
+
const canonicalTurnMessages = messages.slice(committedPrefixCount).map(checkpointMessage);
|
|
63
62
|
const turnMessageCount = anchorCount - committedPrefixCount;
|
|
64
63
|
if (turnMessageCount < 0 || turnMessageCount > canonicalTurnMessages.length) return null;
|
|
65
64
|
|