mixdog 1.2.3 → 1.2.5
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 +1 -1
- package/scripts/gate-local.mjs +6 -4
- package/scripts/lib/gate-scheduler.mjs +29 -11
- package/scripts/mobile-release.mjs +5 -4
- package/scripts/probe-provider-catalog.mjs +31 -0
- package/scripts/provider-pingpong-live.mjs +128 -38
- package/scripts/session-sweep.mjs +5 -25
- package/src/agents/maintainer/AGENT.md +1 -1
- package/src/agents/maintainer/agent.json +1 -1
- package/src/agents/reviewer/AGENT.md +2 -4
- package/src/agents/security/AGENT.md +1 -2
- package/src/agents/writer/AGENT.md +2 -3
- package/src/defaults/shipped-history.json +7 -1
- package/src/defaults/skills/image/SKILL.md +21 -23
- package/src/lib/keychain-cjs.cjs +13 -11
- package/src/output-styles/common.md +2 -1
- package/src/rules/agent/AGENT.md +7 -5
- package/src/rules/lead/LEAD.md +13 -13
- package/src/rules/shared/45-destructive.md +4 -0
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/preset.mjs +1 -0
- package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +28 -7
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +2 -11
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +101 -23
- package/src/runtime/agent/orchestrator/providers/account-pool.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-api-key-fetch.mjs +36 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-error-contract.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +2 -3
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request/gzip-post.mjs +26 -44
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +2 -5
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +4 -0
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-catalog.mjs +41 -12
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth.mjs +13 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-request.mjs +81 -10
- package/src/runtime/agent/orchestrator/providers/antigravity-retry-policy.mjs +109 -5
- package/src/runtime/agent/orchestrator/providers/antigravity-stream.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-transport.mjs +107 -37
- package/src/runtime/agent/orchestrator/providers/command-code-oauth.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/cursor-auth.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/cursor-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/cursor-native-context.mjs +48 -0
- package/src/runtime/agent/orchestrator/providers/cursor-wire-exec.mjs +144 -34
- package/src/runtime/agent/orchestrator/providers/cursor-wire-protobuf.mjs +28 -4
- package/src/runtime/agent/orchestrator/providers/cursor-wire-request.mjs +8 -4
- package/src/runtime/agent/orchestrator/providers/cursor-wire-stream-bridge.mjs +41 -11
- package/src/runtime/agent/orchestrator/providers/cursor-wire-stream-messages.mjs +67 -5
- package/src/runtime/agent/orchestrator/providers/cursor-wire.mjs +14 -4
- package/src/runtime/agent/orchestrator/providers/cursor.mjs +14 -1
- package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +9 -6
- package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +7 -2
- package/src/runtime/agent/orchestrator/providers/effort-configuration.mjs +26 -4
- package/src/runtime/agent/orchestrator/providers/gemini-cache.mjs +12 -6
- package/src/runtime/agent/orchestrator/providers/gemini-error-contract.mjs +14 -6
- package/src/runtime/agent/orchestrator/providers/gemini-request-body.mjs +4 -4
- package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/gemini-rest-stream/watchdogs.mjs +16 -5
- package/src/runtime/agent/orchestrator/providers/gemini-retry-policy.mjs +6 -1
- package/src/runtime/agent/orchestrator/providers/gemini-schema.mjs +22 -10
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +4 -2
- package/src/runtime/agent/orchestrator/providers/gemini-thinking.mjs +33 -7
- package/src/runtime/agent/orchestrator/providers/gemini.mjs +11 -2
- package/src/runtime/agent/orchestrator/providers/grok-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +9 -2
- package/src/runtime/agent/orchestrator/providers/lib/claude-bridge-schema.mjs +9 -5
- package/src/runtime/agent/orchestrator/providers/lib/request-compression.mjs +86 -0
- package/src/runtime/agent/orchestrator/providers/lib/wire-pairing.mjs +4 -2
- package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +16 -5
- package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +7 -1
- package/src/runtime/agent/orchestrator/providers/model-proxy-provider.mjs +60 -16
- package/src/runtime/agent/orchestrator/providers/oauth-credential-probes.mjs +11 -13
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +30 -19
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +5 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-models.mjs +42 -5
- package/src/runtime/agent/orchestrator/providers/openai-compat-reasoning-field.mjs +13 -9
- package/src/runtime/agent/orchestrator/providers/openai-compat-response-normalization.mjs +1 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-parity.fixtures.mjs +18 -7
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +36 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat-retry-profile.mjs +51 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat.mjs +11 -1
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-request.mjs +64 -52
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events/terminal-frames.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/openai-responses-input.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/openai-responses-payload.mjs +7 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws-delta.mjs +1 -4
- package/src/runtime/agent/orchestrator/providers/openai-ws-response-state/tool-calls.mjs +0 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +7 -6
- package/src/runtime/agent/orchestrator/providers/opencode-go-gemini.mjs +13 -2
- package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/openrouter.mjs +1 -2
- package/src/runtime/agent/orchestrator/providers/provider-error-kind.mjs +5 -4
- package/src/runtime/agent/orchestrator/providers/registry.mjs +9 -1
- package/src/runtime/agent/orchestrator/providers/retry-classification.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/wire-gateway.mjs +11 -4
- package/src/runtime/agent/orchestrator/providers/wire-route.mjs +14 -4
- package/src/runtime/agent/orchestrator/providers/xai-tool-search.fixtures.mjs +15 -3
- package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +6 -2
- package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +8 -6
- package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-availability.mjs +4 -1
- package/src/runtime/agent/orchestrator/runtime-core/goal-store.mjs +30 -2
- package/src/runtime/agent/orchestrator/runtime-core/goal-turns.mjs +3 -2
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +8 -3
- package/src/runtime/agent/orchestrator/runtime-core/skill-tool-loading.mjs +3 -1
- package/src/runtime/agent/orchestrator/runtime-core/tool-bridge-contract.mjs +6 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-bridge.mjs +10 -10
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +3 -1
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +46 -8
- package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +10 -8
- package/src/runtime/agent/orchestrator/session/agent-loop.mjs +1 -2
- package/src/runtime/agent/orchestrator/session/agent-pool-progress.mjs +24 -0
- package/src/runtime/agent/orchestrator/session/cache/tool-result-reuse.mjs +10 -2
- package/src/runtime/agent/orchestrator/session/catalog-db/index.mjs +2 -3
- package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +3 -11
- package/src/runtime/agent/orchestrator/session/catalog-db/worker.mjs +6 -22
- package/src/runtime/agent/orchestrator/session/compact/messages.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +16 -2
- package/src/runtime/agent/orchestrator/session/compact/user-message-kind.mjs +28 -0
- package/src/runtime/agent/orchestrator/session/compaction-archive-capture.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/conversation-import/claude.mjs +0 -6
- package/src/runtime/agent/orchestrator/session/conversation-import/codex.mjs +0 -6
- package/src/runtime/agent/orchestrator/session/eager-dispatch/admission.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/historical-session-closure.mjs +10 -0
- package/src/runtime/agent/orchestrator/session/loop/assistant-commit.mjs +2 -5
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +2 -4
- package/src/runtime/agent/orchestrator/session/loop/context-overflow.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +0 -27
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/output-limit.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/segments.mjs +4 -10
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn.mjs +2 -9
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/loop/provider-tool-exclusions.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/loop/request-boundary.mjs +1 -4
- package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +76 -0
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +5 -1
- package/src/runtime/agent/orchestrator/session/loop/step-auto-effort.mjs +8 -9
- package/src/runtime/agent/orchestrator/session/loop/tool-classify.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +15 -2
- package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +1 -4
- package/src/runtime/agent/orchestrator/session/loop/tool-phase.mjs +3 -4
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +33 -3
- package/src/runtime/agent/orchestrator/session/manager/ask-support.mjs +0 -4
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +21 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +38 -13
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-failure.mjs +33 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +19 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-state.mjs +57 -13
- package/src/runtime/agent/orchestrator/session/manager/failed-turn-rewind.mjs +16 -0
- package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +6 -120
- package/src/runtime/agent/orchestrator/session/manager/pending-persist-queue.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +29 -8
- package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +42 -49
- package/src/runtime/agent/orchestrator/session/manager/runtime-state.mjs +50 -0
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +32 -14
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +17 -33
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +29 -13
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-recovery.mjs +45 -0
- package/src/runtime/agent/orchestrator/session/manager.mjs +2 -9
- package/src/runtime/agent/orchestrator/session/send-instrumentation.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +5 -2
- package/src/runtime/agent/orchestrator/session/side-question.mjs +12 -7
- package/src/runtime/agent/orchestrator/session/store/lifecycle-barriers.mjs +5 -12
- package/src/runtime/agent/orchestrator/session/store/lifecycle-read.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/listing.mjs +2 -6
- package/src/runtime/agent/orchestrator/session/store/live-cache-eviction.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/liveness-veto.mjs +46 -37
- package/src/runtime/agent/orchestrator/session/store/load-cache.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/load-session.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/session-delete.mjs +5 -11
- package/src/runtime/agent/orchestrator/session/store/session-paths.mjs +59 -0
- package/src/runtime/agent/orchestrator/session/store/summary-cache.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/sweep/stale-sweep.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-finish.mjs +27 -32
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-plan.mjs +0 -8
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-record.mjs +6 -18
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-row.mjs +33 -106
- package/src/runtime/agent/orchestrator/session/store/write-admission.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store-agent-worker-pool.mjs +5 -8
- package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +160 -212
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +50 -116
- package/src/runtime/agent/orchestrator/session/store-summary-locations.mjs +3 -29
- package/src/runtime/agent/orchestrator/session/store-summary-reader-catalog-fixture.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +7 -8
- package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +9 -20
- package/src/runtime/agent/orchestrator/session/store.mjs +3 -16
- package/src/runtime/agent/orchestrator/session/tool-batch/execute-call.mjs +11 -12
- package/src/runtime/agent/orchestrator/session/tool-batch/finalize.mjs +37 -13
- package/src/runtime/agent/orchestrator/session/tool-batch/pre-dispatch.mjs +15 -4
- package/src/runtime/agent/orchestrator/session/tool-schema-rejection.mjs +4 -2
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +72 -15
- package/src/runtime/agent/orchestrator/session/turn-failure.mjs +45 -0
- package/src/runtime/agent/orchestrator/stall-policy.mjs +50 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +5 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/inline-hoist.mjs +6 -2
- package/src/runtime/agent/orchestrator/tools/builtin/external-tool-adapters.mjs +204 -10
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +160 -39
- package/src/runtime/agent/orchestrator/tools/builtin/git-partial-stage.mjs +7 -5
- package/src/runtime/agent/orchestrator/tools/builtin/grep-formatting.mjs +14 -5
- package/src/runtime/agent/orchestrator/tools/builtin/lib/grep-context-expander.mjs +4 -3
- package/src/runtime/agent/orchestrator/tools/builtin/lib/grep-output.mjs +2 -1
- package/src/runtime/agent/orchestrator/tools/builtin/lib/grep-path-fanout.mjs +48 -44
- package/src/runtime/agent/orchestrator/tools/builtin/lib/search-input-helpers.mjs +10 -3
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +200 -17
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-task-output.mjs +5 -4
- package/src/runtime/agent/orchestrator/tools/builtin/read-formatting.mjs +6 -1
- package/src/runtime/agent/orchestrator/tools/builtin/shell-analysis.mjs +20 -0
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +101 -2
- package/src/runtime/agent/orchestrator/tools/code-graph-prewarm-worker.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/lib/owned-shell-trees.mjs +67 -0
- package/src/runtime/agent/orchestrator/tools/lib/process-table-fixture.mjs +50 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +303 -63
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +2 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +108 -18
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +77 -11
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +81 -5
- package/src/runtime/attachments/store.d.mts +9 -0
- package/src/runtime/attachments/store.mjs +80 -9
- package/src/runtime/browser-bridge/browser-action-contract.d.mts +0 -1
- package/src/runtime/browser-bridge/browser-action-contract.mjs +0 -2
- package/src/runtime/computer-bridge/action-schema.mjs +178 -178
- package/src/runtime/computer-bridge/linux-readiness.d.mts +0 -2
- package/src/runtime/computer-bridge/linux-readiness.mjs +0 -16
- package/src/runtime/effort-judge/judge-client.mjs +21 -4
- package/src/runtime/effort-judge/judge-worker.mjs +4 -1
- package/src/runtime/github/tool.mjs +118 -17
- package/src/runtime/media/adapters/codex-image.mjs +140 -21
- package/src/runtime/media/catalog.mjs +4 -4
- package/src/runtime/media/chatgpt-usage.mjs +55 -0
- package/src/runtime/media/defaults.mjs +37 -0
- package/src/runtime/media/jobs.mjs +12 -2
- package/src/runtime/media/lanes.mjs +12 -0
- package/src/runtime/media/tool-defs.mjs +15 -4
- package/src/runtime/media/tool.mjs +41 -12
- package/src/runtime/media/upstream-error.mjs +72 -6
- package/src/runtime/memory/lib/ingest/transcript-rows.mjs +1 -0
- package/src/runtime/memory/lib/pg/process.mjs +5 -7
- package/src/runtime/memory/lib/pg/supervisor.mjs +4 -1
- package/src/runtime/office/authoring/docx-html-runner.mjs +1 -1
- package/src/runtime/office/authoring/html-browser.mjs +18 -8
- package/src/runtime/office/authoring/pdf-html-runner.mjs +1 -1
- package/src/runtime/office/authoring/pptx-html-measure.mjs +1 -1
- package/src/runtime/office/authoring/xlsx-html-runner.mjs +1 -1
- package/src/runtime/office/core/office-write-ledger.mjs +1 -5
- package/src/runtime/office/index.mjs +2 -3
- package/src/runtime/office/pdf/pdf-analysis.mjs +0 -68
- package/src/runtime/session-search/session-search-ingest.mjs +1 -1
- package/src/runtime/shared/agent-reap-state.mjs +13 -0
- package/src/runtime/shared/atomic-file.d.mts +1 -1
- package/src/runtime/shared/background-tasks.mjs +6 -1
- package/src/runtime/shared/bounded-line-diff.mjs +11 -2
- package/src/runtime/shared/browser-launch.mjs +15 -0
- package/src/runtime/shared/err-text.mjs +42 -4
- package/src/runtime/shared/file-lock.mjs +6 -5
- package/src/runtime/shared/llm/anthropic-betas.mjs +1 -2
- package/src/runtime/shared/llm/provider-model-identities.mjs +1 -0
- package/src/runtime/shared/model-route-chain.d.mts +8 -0
- package/src/runtime/shared/model-route-chain.mjs +48 -0
- package/src/runtime/shared/model-route-fallback.mjs +22 -0
- package/src/runtime/shared/pid-liveness.mjs +12 -0
- package/src/runtime/shared/provider-api-key.mjs +6 -0
- package/src/runtime/shared/provider-timeout-phase.mjs +17 -0
- package/src/runtime/shared/quiet-progress.d.mts +35 -0
- package/src/runtime/shared/quiet-progress.mjs +101 -0
- package/src/runtime/shared/quota-resume-store.mjs +32 -1
- package/src/runtime/shared/read-row-numbers.mjs +44 -0
- package/src/runtime/shared/remote-intent.mjs +2 -42
- package/src/runtime/shared/slow-span.mjs +8 -1
- package/src/runtime/shared/statusline/statusline-segments.mjs +24 -2
- package/src/runtime/shared/tool-card-model/card-header.mjs +2 -1
- package/src/runtime/shared/tool-output-budget.mjs +2 -0
- package/src/runtime/shared/tool-result-summary.mjs +16 -2
- package/src/runtime/shared/tool-status.mjs +3 -2
- package/src/runtime/shared/tool-surface.mjs +2 -3
- package/src/runtime/shared/tool-work-units.mjs +22 -15
- package/src/runtime/shared/transcript-metadata.mjs +49 -1
- package/src/runtime/shared/transcript-turn-keys.mjs +33 -0
- package/src/runtime/shared/transcript-writer/transcript-file.mjs +10 -1
- package/src/runtime/shared/transcript-writer.mjs +14 -4
- package/src/runtime/shared/turn-changes.mjs +2 -1
- package/src/runtime/shared/turn-snapshot.mjs +11 -3
- package/src/runtime/shared/worktrees/activity-gate.mjs +175 -0
- package/src/runtime/shared/worktrees/branch-management.mjs +179 -0
- package/src/runtime/shared/worktrees/carry.mjs +6 -4
- package/src/runtime/shared/worktrees/contract.mjs +27 -1
- package/src/runtime/shared/worktrees/dependencies.mjs +456 -0
- package/src/runtime/shared/worktrees/file-recovery.mjs +29 -13
- package/src/runtime/shared/worktrees/git-head.mjs +22 -13
- package/src/runtime/shared/worktrees/include.mjs +125 -7
- package/src/runtime/shared/worktrees/lock.mjs +1 -1
- package/src/runtime/shared/worktrees/maintenance.mjs +20 -2
- package/src/runtime/shared/worktrees/manager.mjs +378 -32
- package/src/runtime/shared/worktrees/owner.mjs +2 -1
- package/src/runtime/shared/worktrees/preparation-report.mjs +79 -0
- package/src/runtime/shared/worktrees/setup-commands.mjs +232 -0
- package/src/runtime/shared/worktrees/workspace-visibility.mjs +17 -0
- package/src/runtime/terminal-bridge/client.mjs +14 -10
- package/src/session-runtime/boot/apis.mjs +7 -1
- package/src/session-runtime/boot/config.mjs +2 -0
- package/src/session-runtime/boot/facade.mjs +3 -0
- package/src/session-runtime/boot/session.mjs +3 -2
- package/src/session-runtime/boot/tools.mjs +3 -0
- package/src/session-runtime/conversation-import/service.mjs +1 -1
- package/src/session-runtime/goal-facade-api.mjs +2 -2
- package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +44 -18
- package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +4 -1
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +22 -8
- package/src/session-runtime/internal-tool-executor.mjs +2 -0
- package/src/session-runtime/lifecycle/cold-heir.mjs +0 -1
- package/src/session-runtime/lifecycle/session-catalog.mjs +14 -16
- package/src/session-runtime/lifecycle/session-switch/session-delete.mjs +18 -53
- package/src/session-runtime/lifecycle/session-switch.mjs +1 -1
- package/src/session-runtime/lifecycle/shared.mjs +5 -6
- package/src/session-runtime/lifecycle/teardown/session-close.mjs +6 -5
- package/src/session-runtime/lifecycle/teardown.mjs +7 -16
- package/src/session-runtime/media-api.mjs +8 -0
- package/src/session-runtime/model-route/route-ownership.mjs +60 -0
- package/src/session-runtime/model-route/route-persist.mjs +3 -2
- package/src/session-runtime/model-route/set-route.mjs +114 -34
- package/src/session-runtime/model-route/web-search-route.mjs +7 -2
- package/src/session-runtime/model-route-api.mjs +4 -2
- package/src/session-runtime/native-web-search/routes.mjs +37 -24
- package/src/session-runtime/native-web-search.mjs +9 -8
- package/src/session-runtime/provider-auth/setup.mjs +4 -0
- package/src/session-runtime/provider-models/catalog-load.mjs +9 -0
- package/src/session-runtime/provider-models/web-search-catalog.mjs +23 -3
- package/src/session-runtime/provider-models.mjs +1 -0
- package/src/session-runtime/provider-usage.mjs +4 -0
- package/src/session-runtime/route-resolution.mjs +3 -1
- package/src/session-runtime/runtime-core.mjs +4 -0
- package/src/session-runtime/runtime-facade.mjs +6 -0
- package/src/session-runtime/services/agent-task-status.mjs +2 -0
- package/src/session-runtime/services/agent-tool/close-flow/close-all.mjs +0 -3
- package/src/session-runtime/services/agent-tool/close-flow.mjs +6 -7
- package/src/session-runtime/services/agent-tool/execute-send.mjs +2 -2
- package/src/session-runtime/services/agent-tool/execute-spawn.mjs +36 -3
- package/src/session-runtime/services/agent-tool/execute.mjs +9 -1
- package/src/session-runtime/services/agent-tool/helpers.mjs +30 -7
- package/src/session-runtime/services/agent-tool/job-task-reconcile.mjs +7 -2
- package/src/session-runtime/services/agent-tool/job-views/session-progress.mjs +6 -3
- package/src/session-runtime/services/agent-tool/lead-worker-index/lead-rows.mjs +3 -4
- package/src/session-runtime/services/agent-tool/lead-worker-index/reap-timers.mjs +9 -3
- package/src/session-runtime/services/agent-tool/lead-worker-index/row-settlement.mjs +7 -18
- package/src/session-runtime/services/agent-tool/lead-worker-index.mjs +9 -6
- package/src/session-runtime/services/agent-tool/model-select.mjs +82 -0
- package/src/session-runtime/services/agent-tool/send-flow.mjs +24 -6
- package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +3 -1
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +19 -5
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +5 -4
- package/src/session-runtime/services/agent-tool/spawn-flow.mjs +2 -1
- package/src/session-runtime/services/agent-tool/spawn-preset.mjs +3 -0
- package/src/session-runtime/services/agent-tool/tag-registry/tag-lookup.mjs +1 -3
- package/src/session-runtime/services/agent-tool/tag-registry/tag-refresh.mjs +1 -3
- package/src/session-runtime/services/agent-tool/tag-registry.mjs +3 -9
- package/src/session-runtime/services/agent-tool/terminal-reaper/scan-admission.mjs +8 -41
- package/src/session-runtime/services/agent-tool/terminal-reaper/stale-rows.mjs +3 -3
- package/src/session-runtime/services/agent-tool/terminal-reaper.mjs +6 -23
- package/src/session-runtime/services/agent-tool/terminal-trace.mjs +0 -1
- package/src/session-runtime/services/agent-tool/tool-def.mjs +7 -0
- package/src/session-runtime/services/agent-tool/worker-index/row-liveness.mjs +32 -20
- package/src/session-runtime/services/agent-tool/worker-index/row-shape.mjs +5 -2
- package/src/session-runtime/services/agent-tool/worker-index.mjs +28 -8
- package/src/session-runtime/services/agent-tool.mjs +4 -0
- package/src/session-runtime/services/agent-watchdog-registry.mjs +2 -0
- package/src/session-runtime/services/provider-admin.mjs +77 -0
- package/src/session-runtime/session-create/session-options.mjs +7 -5
- package/src/session-runtime/session-create/session-start-hook.mjs +2 -1
- package/src/session-runtime/session-transcript.mjs +4 -5
- package/src/session-runtime/session-turn-api.mjs +3 -9
- package/src/session-runtime/settings-builtin-tools-api.mjs +9 -6
- package/src/session-runtime/setup-tool/executor.mjs +23 -5
- package/src/session-runtime/setup-tool/extended-actions.mjs +6 -6
- package/src/session-runtime/setup-tool/settings-contract.mjs +7 -2
- package/src/session-runtime/setup-tool/tool-defs.mjs +13 -1
- package/src/session-runtime/tool-policy-refresh.mjs +83 -32
- package/src/session-runtime/turn/agent-ops.mjs +49 -2
- package/src/session-runtime/turn/side-question-ops.mjs +1 -4
- package/src/session-runtime/turn/turn-run/ask-callbacks.mjs +2 -0
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +4 -0
- package/src/session-runtime/turn/turn-run/turn-settle.mjs +8 -2
- package/src/session-runtime/turn/turn-run.mjs +1 -36
- package/src/session-runtime/usage-stats-api.mjs +4 -1
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +16 -1
- package/src/session-runtime/workspace/admission-gate.mjs +44 -15
- package/src/session-runtime/workspace/project-branches.mjs +28 -36
- package/src/session-runtime/workspace/transition-steps.mjs +96 -95
- package/src/session-runtime/workspace/transitions.mjs +248 -68
- package/src/standalone/channel-transport.mjs +3 -4
- package/src/standalone/daemon-desktop-runtime.mjs +32 -1
- package/src/standalone/daemon-pg-stop.mjs +1 -3
- package/src/standalone/daemon-session-control.mjs +88 -0
- package/src/standalone/daemon-stored-session-views.mjs +23 -3
- package/src/standalone/daemon.mjs +2 -0
- package/src/standalone/desktop-service-registry.mjs +32 -5
- package/src/standalone/local-session-runtime.mjs +11 -12
- package/src/standalone/session-protocol.mjs +7 -0
- package/src/standalone/session-runtime-inline-host.mjs +2 -0
- package/src/standalone/session-service/agent-tree/agent-cancel.mjs +91 -49
- package/src/standalone/session-service/agent-tree/agent-child.mjs +19 -1
- package/src/standalone/session-service/agent-tree/agent-registry.mjs +25 -0
- package/src/standalone/session-service/agent-tree/agent-turns.mjs +9 -1
- package/src/standalone/session-service/agent-tree.mjs +28 -2
- package/src/standalone/session-service/entries/session-loads.mjs +16 -5
- package/src/standalone/session-service/entries.mjs +1 -0
- package/src/standalone/session-service/projection/transcript-window.mjs +39 -0
- package/src/standalone/session-service/quota-resume.mjs +28 -13
- package/src/standalone/session-service/session-calls/session-turns.mjs +17 -6
- package/src/standalone/session-service/session-calls/session-views.mjs +6 -0
- package/src/standalone/session-tool-output.mjs +82 -0
- package/src/tui/app/app-view.jsx +2 -1
- package/src/tui/app/provider-setup/provider-items.mjs +8 -0
- package/src/tui/app/provider-setup-picker.mjs +15 -3
- package/src/tui/app/slash-commands.mjs +6 -0
- package/src/tui/app/slash-dispatch/session-commands.mjs +49 -0
- package/src/tui/components/Spinner.jsx +4 -0
- package/src/tui/components/SpinnerByline.jsx +21 -2
- package/src/tui/components/status-line/local-line.mjs +10 -2
- package/src/tui/dist/index.mjs +529 -270
- package/src/tui/session/active-tool-summary.mjs +1 -1
- package/src/tui/session/context-state.mjs +0 -3
- package/src/tui/session/goal-continuation/continuation-queue.mjs +2 -3
- package/src/tui/session/goal-continuation/deadline-delivery.mjs +4 -2
- package/src/tui/session/goal-continuation/session-boundary.mjs +21 -0
- package/src/tui/session/quota-resume.mjs +140 -61
- package/src/tui/session/session-api/commands.mjs +4 -10
- package/src/tui/session/session-api/controls.mjs +12 -0
- package/src/tui/session/session-api/lifecycle/dispose.mjs +2 -9
- package/src/tui/session/session-api/lifecycle/resume.mjs +2 -7
- package/src/tui/session/session-api/lifecycle.mjs +13 -11
- package/src/tui/session/session-api/media.mjs +2 -0
- package/src/tui/session/session-api/routes.mjs +81 -57
- package/src/tui/session/session-api/settings.mjs +3 -3
- package/src/tui/session/session-api/worktree.mjs +3 -2
- package/src/tui/session/session-flow/auto-clear.mjs +1 -3
- package/src/tui/session/session-flow/drain.mjs +6 -4
- package/src/tui/session/session-flow/queue/entry-shape.mjs +2 -0
- package/src/tui/session/session-flow/queue/take-entries.mjs +2 -1
- package/src/tui/session/session-flow/queue.mjs +1 -1
- package/src/tui/session/tool-approval.mjs +17 -8
- package/src/tui/session/transcript-store/streaming-tail.mjs +1 -1
- package/src/tui/session/tui-steering-persist.mjs +3 -5
- package/src/tui/session/turn-quiet.mjs +53 -0
- package/src/tui/session/turn-stream.mjs +5 -1
- package/src/tui/session/turn.mjs +38 -31
- package/src/tui/session/worktree-setup-notice.mjs +38 -0
- package/src/tui/spinner-meta.mjs +10 -0
- package/src/tui/spinner-verbs.mjs +3 -0
- package/src/ui/statusline.mjs +13 -3
- package/src/ui/streaming-markdown-heal.mjs +70 -18
- package/src/runtime/agent/orchestrator/providers/model-pricing-rates.mjs +0 -1
- package/src/runtime/agent/orchestrator/session/manager/foreign-pending-messages.mjs +0 -346
- package/src/runtime/agent/orchestrator/session/manager/session-owner-liveness.mjs +0 -117
- package/src/runtime/agent/orchestrator/session/store/paths-heartbeat.mjs +0 -302
- package/src/session-runtime/services/agent-tool/terminal-reaper/reap-timers.mjs +0 -142
- package/src/session-runtime/turn/share-ops.mjs +0 -77
- package/src/tui/session/cross-surface-share.mjs +0 -406
- package/src/tui/session/live-share/delta.mjs +0 -153
- package/src/tui/session/live-share/mirror.mjs +0 -106
- package/src/tui/session/live-share/owner.mjs +0 -254
- package/src/tui/session/live-share/retry.mjs +0 -54
- package/src/tui/session/live-share/viewer/frame-router.mjs +0 -32
- package/src/tui/session/live-share/viewer/pipe-client.mjs +0 -108
- package/src/tui/session/live-share/viewer/submit-acks.mjs +0 -65
- package/src/tui/session/live-share/viewer/sync-waiters.mjs +0 -53
- package/src/tui/session/live-share/viewer.mjs +0 -99
- package/src/tui/session/live-share/wire.mjs +0 -44
- package/src/tui/session/live-share.mjs +0 -154
- package/src/tui/session/shared-dir-watch.mjs +0 -69
|
@@ -155,198 +155,198 @@ const captureProperties = {
|
|
|
155
155
|
// schema below derives its `input` from it. It is not part of the advertised
|
|
156
156
|
// root: provider tool schemas must be an object root without anyOf/oneOf/allOf.
|
|
157
157
|
export const COMPUTER_ACTION_CONTRACTS = [
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
branch(
|
|
159
|
+
'wait_for_user',
|
|
160
|
+
input({
|
|
161
|
+
timeout_ms: {
|
|
162
|
+
type: 'integer',
|
|
163
|
+
minimum: 0,
|
|
164
|
+
maximum: 120000,
|
|
165
|
+
description: 'Wait for manual or host-configured idle resume; default 60000.',
|
|
166
|
+
},
|
|
167
|
+
}),
|
|
168
|
+
false
|
|
169
|
+
),
|
|
170
|
+
branch(
|
|
171
|
+
'list',
|
|
172
|
+
input(
|
|
173
|
+
{
|
|
174
|
+
kind: {
|
|
175
|
+
type: 'string',
|
|
176
|
+
enum: ['windows', 'apps', 'history'],
|
|
177
|
+
description:
|
|
178
|
+
"history returns this session's own executed commands with their verdicts, for reviewing what a run already did.",
|
|
179
|
+
},
|
|
180
|
+
query: {
|
|
181
|
+
type: 'string',
|
|
182
|
+
minLength: 1,
|
|
183
|
+
maxLength: MAX_TARGET_TOKEN_LENGTH,
|
|
184
|
+
description:
|
|
185
|
+
'With kind="apps", also lists installed apps whose name or id matches, including apps that are not running.',
|
|
186
|
+
},
|
|
187
|
+
limit: {
|
|
162
188
|
type: 'integer',
|
|
163
|
-
minimum:
|
|
164
|
-
maximum:
|
|
165
|
-
description: '
|
|
189
|
+
minimum: 1,
|
|
190
|
+
maximum: 60,
|
|
191
|
+
description: 'kind="history" only: how many of the most recent records to return; default 60.',
|
|
166
192
|
},
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
+
},
|
|
194
|
+
['kind']
|
|
195
|
+
)
|
|
196
|
+
),
|
|
197
|
+
branch(
|
|
198
|
+
'diagnose',
|
|
199
|
+
input({
|
|
200
|
+
...windowTarget,
|
|
201
|
+
ocr_language: {
|
|
202
|
+
...ocrLanguage,
|
|
203
|
+
description: 'Optional OS OCR language tag to verify, e.g. ko or en-US.',
|
|
204
|
+
},
|
|
205
|
+
}),
|
|
206
|
+
false
|
|
207
|
+
),
|
|
208
|
+
branch('capture', input(captureProperties), false),
|
|
209
|
+
branch(
|
|
210
|
+
'act',
|
|
211
|
+
input(
|
|
212
|
+
{
|
|
213
|
+
...windowTarget,
|
|
214
|
+
...appTarget,
|
|
215
|
+
frame_id: {
|
|
216
|
+
type: 'string',
|
|
217
|
+
minLength: 1,
|
|
218
|
+
maxLength: MAX_TARGET_TOKEN_LENGTH,
|
|
219
|
+
description: 'Latest unexpired frame id shared by coordinate actions in this act call.',
|
|
193
220
|
},
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
221
|
+
actions: {
|
|
222
|
+
type: 'array',
|
|
223
|
+
items: COMPUTER_CORE_ACTION_SCHEMA,
|
|
224
|
+
minItems: 1,
|
|
225
|
+
maxItems: 6,
|
|
226
|
+
description:
|
|
227
|
+
'First: an input action. Then type/key/wait reusing focus, or click/double_click/triple_click/scroll/set_value/type/key on a ref from the same observation (no marks or coordinates). Waits total ≤10s; transition/failure or a changed, disabled, or off-screen ref stops the rest.',
|
|
228
|
+
},
|
|
229
|
+
observe: {
|
|
230
|
+
type: 'string',
|
|
231
|
+
enum: ['state', 'ax'],
|
|
232
|
+
description:
|
|
233
|
+
'Returned observation. Default: ax when the first action targets a ref (full state if the tree is unusable), otherwise state. state includes the frame for coordinates or visual checks; ax skips the screenshot.',
|
|
234
|
+
},
|
|
235
|
+
...delivery,
|
|
236
|
+
},
|
|
237
|
+
['actions']
|
|
238
|
+
)
|
|
239
|
+
),
|
|
240
|
+
branch(
|
|
241
|
+
'window',
|
|
242
|
+
input(
|
|
243
|
+
{
|
|
200
244
|
...windowTarget,
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
245
|
+
...appTarget,
|
|
246
|
+
operation: {
|
|
247
|
+
type: 'string',
|
|
248
|
+
enum: ['focus', 'move', 'minimize', 'maximize', 'restore', 'close', 'terminate'],
|
|
204
249
|
},
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
'act',
|
|
211
|
-
input(
|
|
212
|
-
{
|
|
213
|
-
...windowTarget,
|
|
214
|
-
...appTarget,
|
|
215
|
-
frame_id: {
|
|
216
|
-
type: 'string',
|
|
217
|
-
minLength: 1,
|
|
218
|
-
maxLength: MAX_TARGET_TOKEN_LENGTH,
|
|
219
|
-
description: 'Latest unexpired frame id shared by coordinate actions in this act call.',
|
|
220
|
-
},
|
|
221
|
-
actions: {
|
|
222
|
-
type: 'array',
|
|
223
|
-
items: COMPUTER_CORE_ACTION_SCHEMA,
|
|
224
|
-
minItems: 1,
|
|
225
|
-
maxItems: 6,
|
|
226
|
-
description:
|
|
227
|
-
'First: an input action. Then type/key/wait reusing focus, or click/double_click/triple_click/scroll/set_value/type/key on a ref from the same observation (no marks or coordinates). Waits total ≤10s; transition/failure or a changed, disabled, or off-screen ref stops the rest.',
|
|
228
|
-
},
|
|
229
|
-
observe: {
|
|
230
|
-
type: 'string',
|
|
231
|
-
enum: ['state', 'ax'],
|
|
232
|
-
description:
|
|
233
|
-
'Returned observation. Default: ax when the first action targets a ref (full state if the tree is unusable), otherwise state. state includes the frame for coordinates or visual checks; ax skips the screenshot.',
|
|
234
|
-
},
|
|
235
|
-
...delivery,
|
|
250
|
+
confirm: {
|
|
251
|
+
type: 'string',
|
|
252
|
+
enum: ['terminate'],
|
|
253
|
+
description:
|
|
254
|
+
'terminate only, and required for it: kills the process behind the window, losing unsaved work. Ask the user first.',
|
|
236
255
|
},
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
branch(
|
|
241
|
-
'window',
|
|
242
|
-
input(
|
|
243
|
-
{
|
|
244
|
-
...windowTarget,
|
|
245
|
-
...appTarget,
|
|
246
|
-
operation: {
|
|
247
|
-
type: 'string',
|
|
248
|
-
enum: ['focus', 'move', 'minimize', 'maximize', 'restore', 'close', 'terminate'],
|
|
249
|
-
},
|
|
250
|
-
confirm: {
|
|
251
|
-
type: 'string',
|
|
252
|
-
enum: ['terminate'],
|
|
253
|
-
description:
|
|
254
|
-
'terminate only, and required for it: kills the process behind the window, losing unsaved work. Ask the user first.',
|
|
255
|
-
},
|
|
256
|
-
x: {
|
|
257
|
-
type: 'integer',
|
|
258
|
-
description: 'move only: new left edge; y the top; width/height an optional new size.',
|
|
259
|
-
},
|
|
260
|
-
y: { type: 'integer' },
|
|
261
|
-
width: { type: 'integer', minimum: 1 },
|
|
262
|
-
height: { type: 'integer', minimum: 1 },
|
|
256
|
+
x: {
|
|
257
|
+
type: 'integer',
|
|
258
|
+
description: 'move only: new left edge; y the top; width/height an optional new size.',
|
|
263
259
|
},
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
'
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
260
|
+
y: { type: 'integer' },
|
|
261
|
+
width: { type: 'integer', minimum: 1 },
|
|
262
|
+
height: { type: 'integer', minimum: 1 },
|
|
263
|
+
},
|
|
264
|
+
['operation']
|
|
265
|
+
)
|
|
266
|
+
),
|
|
267
|
+
branch(
|
|
268
|
+
'menu',
|
|
269
|
+
input(
|
|
270
|
+
{
|
|
271
|
+
...windowTarget,
|
|
272
|
+
...appTarget,
|
|
273
|
+
path: {
|
|
274
|
+
type: 'array',
|
|
275
|
+
items: { type: 'string', minLength: 1, maxLength: 512 },
|
|
276
|
+
minItems: 1,
|
|
277
|
+
maxItems: 8,
|
|
278
|
+
description:
|
|
279
|
+
'Exact labels from the bar down, e.g. ["File","Save As"]. Missing, ambiguous, or disabled entries fail closed.',
|
|
281
280
|
},
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
)
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
absent: { type: 'string', maxLength: MAX_TARGET_TOKEN_LENGTH },
|
|
305
|
-
title_contains: { type: 'string', maxLength: MAX_TARGET_TOKEN_LENGTH },
|
|
306
|
-
window_exists: { type: 'boolean' },
|
|
281
|
+
},
|
|
282
|
+
['path']
|
|
283
|
+
)
|
|
284
|
+
),
|
|
285
|
+
branch(
|
|
286
|
+
'verify',
|
|
287
|
+
input(
|
|
288
|
+
{
|
|
289
|
+
...windowTarget,
|
|
290
|
+
...appTarget,
|
|
291
|
+
expect: {
|
|
292
|
+
type: 'array',
|
|
293
|
+
minItems: 1,
|
|
294
|
+
maxItems: 8,
|
|
295
|
+
description: 'AND-combined predicates. Reads state only: no pixels, and prior refs stay valid.',
|
|
296
|
+
items: {
|
|
297
|
+
type: 'object',
|
|
298
|
+
properties: {
|
|
299
|
+
present: {
|
|
300
|
+
type: 'string',
|
|
301
|
+
maxLength: MAX_TARGET_TOKEN_LENGTH,
|
|
302
|
+
description: 'Text an element name or value must contain.',
|
|
307
303
|
},
|
|
308
|
-
|
|
304
|
+
absent: { type: 'string', maxLength: MAX_TARGET_TOKEN_LENGTH },
|
|
305
|
+
title_contains: { type: 'string', maxLength: MAX_TARGET_TOKEN_LENGTH },
|
|
306
|
+
window_exists: { type: 'boolean' },
|
|
309
307
|
},
|
|
310
|
-
|
|
311
|
-
timeout_ms: { type: 'integer', minimum: 0, maximum: 30000 },
|
|
312
|
-
stable_samples: {
|
|
313
|
-
type: 'integer',
|
|
314
|
-
minimum: 1,
|
|
315
|
-
maximum: 5,
|
|
316
|
-
description: 'Consecutive satisfied samples required. Default 2.',
|
|
308
|
+
additionalProperties: false,
|
|
317
309
|
},
|
|
318
310
|
},
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
{
|
|
326
|
-
operation: { type: 'string', enum: ['read', 'write'] },
|
|
327
|
-
text: {
|
|
328
|
-
type: 'string',
|
|
329
|
-
maxLength: MAX_CLIPBOARD_TEXT_LENGTH,
|
|
330
|
-
description: 'Required for operation="write".',
|
|
331
|
-
},
|
|
311
|
+
timeout_ms: { type: 'integer', minimum: 0, maximum: 30000 },
|
|
312
|
+
stable_samples: {
|
|
313
|
+
type: 'integer',
|
|
314
|
+
minimum: 1,
|
|
315
|
+
maximum: 5,
|
|
316
|
+
description: 'Consecutive satisfied samples required. Default 2.',
|
|
332
317
|
},
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
)
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
318
|
+
},
|
|
319
|
+
['expect']
|
|
320
|
+
)
|
|
321
|
+
),
|
|
322
|
+
branch(
|
|
323
|
+
'clipboard',
|
|
324
|
+
input(
|
|
325
|
+
{
|
|
326
|
+
operation: { type: 'string', enum: ['read', 'write'] },
|
|
327
|
+
text: {
|
|
328
|
+
type: 'string',
|
|
329
|
+
maxLength: MAX_CLIPBOARD_TEXT_LENGTH,
|
|
330
|
+
description: 'Required for operation="write".',
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
['operation']
|
|
334
|
+
)
|
|
335
|
+
),
|
|
336
|
+
branch(
|
|
337
|
+
'launch',
|
|
338
|
+
input(
|
|
339
|
+
{
|
|
340
|
+
app: {
|
|
341
|
+
type: 'string',
|
|
342
|
+
minLength: 1,
|
|
343
|
+
maxLength: MAX_TARGET_TOKEN_LENGTH,
|
|
344
|
+
description: 'Executable name, exact path, file, or URL.',
|
|
346
345
|
},
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
)
|
|
346
|
+
},
|
|
347
|
+
['app']
|
|
348
|
+
)
|
|
349
|
+
),
|
|
350
350
|
];
|
|
351
351
|
|
|
352
352
|
// A JSON Schema 2020-12 object root with no root combinator (Anthropic
|
|
@@ -46,7 +46,5 @@ export function linuxComputerPreflight(options?: Record<string, unknown>): Promi
|
|
|
46
46
|
export function resetLinuxComputerPreflightCache(): void;
|
|
47
47
|
export const GNOME_EXTENSION_UUID: 'mixdog-windows@mixdog.io';
|
|
48
48
|
export function gnomeExtensionDirs(env?: Record<string, string | undefined>): string[];
|
|
49
|
-
export const FIX_MESSAGES: Readonly<Record<'allow_input' | 'relogin' | 'enable_window_helper' | 'install_package', string>>;
|
|
50
|
-
export const REFUSAL_MESSAGE: string;
|
|
51
49
|
export const CAPTURE_FALLBACK_NOTE: string;
|
|
52
50
|
export function linuxCaptureFallback(options?: Record<string, unknown>): Promise<{ command: Record<string, unknown>; note: string } | null>;
|
|
@@ -32,22 +32,6 @@ export const CLIPBOARD_HINT =
|
|
|
32
32
|
export const DISPLAY_HINT =
|
|
33
33
|
'display_unavailable: no graphical session to drive; run inside a desktop session with DISPLAY (X11) or WAYLAND_DISPLAY set';
|
|
34
34
|
|
|
35
|
-
/**
|
|
36
|
-
* User-facing English phrases, one per fix a capability can ask for. They are
|
|
37
|
-
* the keys of the UI catalogs (apps/desktop/src/renderer/locales), so a UI that
|
|
38
|
-
* renders a capability's `fix` looks the phrase up there; `{{package}}` is the
|
|
39
|
-
* capability's `package`. The tool result text for the model stays English.
|
|
40
|
-
*/
|
|
41
|
-
export const FIX_MESSAGES = Object.freeze({
|
|
42
|
-
allow_input:
|
|
43
|
-
'Allow Mixdog to send keyboard and mouse input: grant access to /dev/uinput (add your user to the input group), then sign in again.',
|
|
44
|
-
relogin: 'Sign out and sign in again to finish setting up window control for Mixdog.',
|
|
45
|
-
enable_window_helper:
|
|
46
|
-
'Enable the Mixdog Windows extension so Mixdog can list and control windows (gnome-extensions enable mixdog-windows@mixdog.io).',
|
|
47
|
-
install_package: 'Install {{package}} to enable this Computer Use feature.',
|
|
48
|
-
});
|
|
49
|
-
export const REFUSAL_MESSAGE = 'Computer Use cannot run this action because a required capability is not ready.';
|
|
50
|
-
|
|
51
35
|
/** Stable code of the whole refusal; the per-capability codes are the native ones. */
|
|
52
36
|
export const CAPABILITY_UNAVAILABLE_CODE = 'computer_capability_unavailable';
|
|
53
37
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// Effort-judge client. The judge loads
|
|
2
|
-
// with Auto effort support)
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// Effort-judge client. The judge loads when a session that uses it (a model
|
|
2
|
+
// with Auto effort support) is created or opened, or on the first judged turn,
|
|
3
|
+
// and then stays resident until the feature is turned off or a model update
|
|
4
|
+
// replaces its files, so users who never open such a session never hold it in
|
|
5
|
+
// memory. A turn waits for a still-loading judge
|
|
5
6
|
// only briefly; when the model is missing, still loading, slow, or failing,
|
|
6
7
|
// `judgeTurn` returns a `skipped` reason and the turn keeps its default
|
|
7
8
|
// effort. Decisions are logged locally (lengths and probabilities only, never
|
|
@@ -237,6 +238,22 @@ export function refreshEffortJudge() {
|
|
|
237
238
|
});
|
|
238
239
|
}
|
|
239
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Starts the judge worker ahead of the first judged turn so its cold load
|
|
243
|
+
* (about 2.3 s) is over by then. Fire-and-forget: it spawns nothing when the
|
|
244
|
+
* platform is unsupported, the model is missing or being installed, or a
|
|
245
|
+
* failed load is still inside LOAD_RETRY_MS. Returns whether a worker is
|
|
246
|
+
* running or loading.
|
|
247
|
+
*/
|
|
248
|
+
export function prewarmEffortJudge() {
|
|
249
|
+
if (!onnxRuntimeSupported() || installing) return false;
|
|
250
|
+
const dir = effortJudgeModelDir();
|
|
251
|
+
if (!effortJudgeAvailable(dir)) return false;
|
|
252
|
+
if (!worker && lastLoadError && Date.now() - lastLoadErrorAt < LOAD_RETRY_MS) return false;
|
|
253
|
+
ensureWorker(dir);
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
|
|
240
257
|
export function effortJudgeReady() {
|
|
241
258
|
return ready;
|
|
242
259
|
}
|
|
@@ -94,7 +94,10 @@ async function load() {
|
|
|
94
94
|
executionProviders: ['cpu'],
|
|
95
95
|
graphOptimizationLevel: 'all',
|
|
96
96
|
// One judgment runs at a time; 4 threads halve the long-input tail
|
|
97
|
-
// (p95 ~280 -> ~110 ms measured) for a ~0.1 s burst per turn.
|
|
97
|
+
// (p95 ~280 -> ~110 ms measured) for a ~0.1 s burst per turn. More threads
|
|
98
|
+
// did not help where agents share the CPU: with 3-4 agent-like loads on
|
|
99
|
+
// 20 logical cores, 6 threads timed out 8-16% (3 loads) and 78-87% (4 loads) of judgments against
|
|
100
|
+
// 0-5% for 4, so the count stays fixed.
|
|
98
101
|
intraOpNumThreads: 4,
|
|
99
102
|
});
|
|
100
103
|
const settings = calibration();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GITHUB_ACTIONS } from './contract.mjs';
|
|
1
|
+
import { DEFAULT_GITHUB_HOSTNAME, GITHUB_ACTIONS } from './contract.mjs';
|
|
2
2
|
import { executeGithubRequest } from './client.mjs';
|
|
3
3
|
import { GITHUB_OUTPUT_MAX_BYTES } from '../shared/tool-output-limit.mjs';
|
|
4
4
|
import { persistToolResultArtifactSync } from '../agent/orchestrator/session/tool-result-offload.mjs';
|
|
@@ -6,19 +6,19 @@ import { normalizeOutputPath } from '../agent/orchestrator/tools/builtin/path-ut
|
|
|
6
6
|
|
|
7
7
|
// Model-facing reduction only; executeGithubRequest (also used by Desktop)
|
|
8
8
|
// keeps the raw REST response, and the agent's copy is preserved as `raw`.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
'
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
9
|
+
// html_url is the one page link the model can hand to a user; the asset,
|
|
10
|
+
// status and check links are the only other URLs not derivable from ids.
|
|
11
|
+
const KEPT_URL_KEYS = new Set(['html_url', 'browser_download_url', 'target_url', 'details_url']);
|
|
12
|
+
const DROPPED_KEYS = new Set([
|
|
13
|
+
'url',
|
|
14
|
+
'node_id',
|
|
15
|
+
'_links',
|
|
16
|
+
'gravatar_id',
|
|
17
|
+
'performed_via_github_app',
|
|
18
|
+
'author_association',
|
|
19
|
+
'sub_issues_summary',
|
|
20
|
+
'issue_dependencies_summary',
|
|
20
21
|
]);
|
|
21
|
-
const DROPPED_KEYS = new Set(['node_id', '_links', 'gravatar_id']);
|
|
22
22
|
const USER_KEYS = new Set([
|
|
23
23
|
'user',
|
|
24
24
|
'owner',
|
|
@@ -55,12 +55,22 @@ function reduceGithubData(value, key, parentKey) {
|
|
|
55
55
|
if (isNestedRepository(key, parentKey) && typeof value.full_name === 'string') return value.full_name;
|
|
56
56
|
const reduced = {};
|
|
57
57
|
for (const [name, item] of Object.entries(value)) {
|
|
58
|
-
if (DROPPED_KEYS.has(name) || (name.endsWith('_url') && !KEPT_URL_KEYS.has(name)))
|
|
58
|
+
if (DROPPED_KEYS.has(name) || name.endsWith('node_id') || (name.endsWith('_url') && !KEPT_URL_KEYS.has(name))) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
// Numbered objects (issues, PRs, milestones) are addressed by number; their id is noise.
|
|
62
|
+
if (name === 'id' && typeof value.number === 'number') continue;
|
|
63
|
+
if (name === 'reactions' && isEmptyReactions(item)) continue;
|
|
59
64
|
reduced[name] = reduceGithubData(item, name, key);
|
|
60
65
|
}
|
|
61
66
|
return reduced;
|
|
62
67
|
}
|
|
63
68
|
|
|
69
|
+
function isEmptyReactions(value) {
|
|
70
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return false;
|
|
71
|
+
return Object.values(value).every((item) => typeof item !== 'number' || item === 0);
|
|
72
|
+
}
|
|
73
|
+
|
|
64
74
|
const EXCERPT_MAX = 140;
|
|
65
75
|
const day = (value) => (typeof value === 'string' ? value.slice(0, 10) : undefined);
|
|
66
76
|
const login = (value) => userLogin(value) ?? (typeof value === 'string' ? value : undefined);
|
|
@@ -151,6 +161,89 @@ function projectList(action, data) {
|
|
|
151
161
|
return project && Array.isArray(data) ? data.map(project) : undefined;
|
|
152
162
|
}
|
|
153
163
|
|
|
164
|
+
const BODY_MAX = 1500;
|
|
165
|
+
|
|
166
|
+
function bodyText(body) {
|
|
167
|
+
if (typeof body !== 'string') return undefined;
|
|
168
|
+
const text = body.replace(/\r\n/g, '\n').trim();
|
|
169
|
+
if (!text) return undefined;
|
|
170
|
+
if (text.length <= BODY_MAX) return text;
|
|
171
|
+
const cut = /[\ud800-\udbff]/.test(text[BODY_MAX - 1]) ? BODY_MAX - 1 : BODY_MAX;
|
|
172
|
+
return `${text.slice(0, cut)}… ${text.length - cut} more chars in raw`;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function logins(list) {
|
|
176
|
+
const names = (Array.isArray(list) ? list : []).map(login).filter(Boolean);
|
|
177
|
+
return names.length ? names : undefined;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const stamp = (value) => (typeof value === 'string' ? value : undefined);
|
|
181
|
+
const repoName = (repo) => (typeof repo === 'string' ? repo : repo?.full_name);
|
|
182
|
+
|
|
183
|
+
// Single-item projections: the decision fields of one issue/PR. Nulls that
|
|
184
|
+
// mean "not yet" (open PR closed_at) are dropped; `mergeable`/`mergeable_state`
|
|
185
|
+
// stay as returned because null there means GitHub is still computing.
|
|
186
|
+
const VIEW_PROJECTORS = {
|
|
187
|
+
'pr.view': (pr) => ({
|
|
188
|
+
number: pr.number,
|
|
189
|
+
title: pr.title,
|
|
190
|
+
state: pr.state,
|
|
191
|
+
draft: pr.draft,
|
|
192
|
+
merged: pr.merged,
|
|
193
|
+
mergeable: pr.mergeable,
|
|
194
|
+
mergeable_state: pr.mergeable_state,
|
|
195
|
+
user: login(pr.user),
|
|
196
|
+
labels: labelNames(pr.labels),
|
|
197
|
+
assignees: logins(pr.assignees),
|
|
198
|
+
requested_reviewers: logins(pr.requested_reviewers),
|
|
199
|
+
head: pr.head && { ref: pr.head.ref, sha: pr.head.sha, repo: repoName(pr.head.repo) },
|
|
200
|
+
base: pr.base && { ref: pr.base.ref, sha: pr.base.sha },
|
|
201
|
+
commits: pr.commits,
|
|
202
|
+
additions: pr.additions,
|
|
203
|
+
deletions: pr.deletions,
|
|
204
|
+
changed_files: pr.changed_files,
|
|
205
|
+
comments: pr.comments,
|
|
206
|
+
review_comments: pr.review_comments,
|
|
207
|
+
html_url: pr.html_url,
|
|
208
|
+
created_at: stamp(pr.created_at),
|
|
209
|
+
updated_at: stamp(pr.updated_at),
|
|
210
|
+
closed_at: stamp(pr.closed_at),
|
|
211
|
+
merged_at: stamp(pr.merged_at),
|
|
212
|
+
body: bodyText(pr.body),
|
|
213
|
+
}),
|
|
214
|
+
'issue.view': (issue) => ({
|
|
215
|
+
number: issue.number,
|
|
216
|
+
title: issue.title,
|
|
217
|
+
state: issue.state,
|
|
218
|
+
state_reason: issue.state_reason || undefined,
|
|
219
|
+
user: login(issue.user),
|
|
220
|
+
labels: labelNames(issue.labels),
|
|
221
|
+
assignees: logins(issue.assignees),
|
|
222
|
+
milestone: issue.milestone?.title,
|
|
223
|
+
comments: issue.comments,
|
|
224
|
+
html_url: issue.html_url,
|
|
225
|
+
created_at: stamp(issue.created_at),
|
|
226
|
+
updated_at: stamp(issue.updated_at),
|
|
227
|
+
closed_at: stamp(issue.closed_at),
|
|
228
|
+
body: bodyText(issue.body),
|
|
229
|
+
}),
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
function projectView(action, data) {
|
|
233
|
+
const project = VIEW_PROJECTORS[action];
|
|
234
|
+
return project && data && typeof data === 'object' && !Array.isArray(data) ? project(data) : undefined;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Rows whose excerpt/description was shortened ("…") need raw for the rest.
|
|
238
|
+
function rowsWereCut(rows) {
|
|
239
|
+
return rows.some(
|
|
240
|
+
(row) =>
|
|
241
|
+
row &&
|
|
242
|
+
typeof row === 'object' &&
|
|
243
|
+
Object.values(row).some((value) => typeof value === 'string' && value.endsWith('…'))
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
154
247
|
const fits = (text) => Buffer.byteLength(text, 'utf8') <= GITHUB_OUTPUT_MAX_BYTES;
|
|
155
248
|
|
|
156
249
|
function clampStrings(value, max) {
|
|
@@ -303,7 +396,7 @@ export const GITHUB_TOOL_DEF = {
|
|
|
303
396
|
},
|
|
304
397
|
trigger: 'GitHub repos, issues, PRs, Actions, releases; not local Git history, diffs or staging (git).',
|
|
305
398
|
description:
|
|
306
|
-
'GitHub repositories, issues, PRs and reviews, Actions/logs, releases, and notifications through the signed-in GitHub CLI. Local Git history/diffs/staging belong to git. One action per call; writes are serialized and never retried. Obtain user approval before writes; workflow runs and published releases may deploy. repo is owner/name; omit to resolve the current Project. Lists use page/limit and return compact rows (issues/PRs: number, title, state, author, updated, labels, 140-char excerpt; other lists: ids and status fields); open a row with its *.view action for bodies and details. Review/merge requires the current PR head sha. Install/connect in Extensions → Plugin → Git & GitHub. Results omit API-only URLs and node ids and name users/repos by login/full_name; `raw
|
|
399
|
+
'GitHub repositories, issues, PRs and reviews, Actions/logs, releases, and notifications through the signed-in GitHub CLI. Local Git history/diffs/staging belong to git. One action per call; writes are serialized and never retried. Obtain user approval before writes; workflow runs and published releases may deploy. repo is owner/name; omit to resolve the current Project. Lists use page/limit and return compact rows (issues/PRs: number, title, state, author, updated, labels, 140-char excerpt; other lists: ids and status fields); open a row with its *.view action for bodies and details. Review/merge requires the current PR head sha. Install/connect in Extensions → Plugin → Git & GitHub. Results omit API-only URLs and node ids and name users/repos by login/full_name; issue/PR views keep decision fields and cap the body; `raw`, present whenever rows, text or fields were cut or dropped, is a readable file with the full response, and long results state what is shown.',
|
|
307
400
|
inputSchema: {
|
|
308
401
|
type: 'object',
|
|
309
402
|
properties: {
|
|
@@ -357,9 +450,17 @@ export const GITHUB_TOOL_DEF = {
|
|
|
357
450
|
export async function executeGithubTool(args, cwd, options = {}) {
|
|
358
451
|
try {
|
|
359
452
|
const result = await executeGithubRequest(args, cwd, options);
|
|
360
|
-
const
|
|
453
|
+
const data =
|
|
454
|
+
projectList(args.action, result.data) ?? projectView(args.action, result.data) ?? reduceGithubData(result.data);
|
|
455
|
+
const reduced = { ...result, data };
|
|
456
|
+
if (reduced.hostname === DEFAULT_GITHUB_HOSTNAME) delete reduced.hostname;
|
|
361
457
|
const text = JSON.stringify(reduced);
|
|
362
|
-
|
|
458
|
+
// Lists point at raw only when a row or excerpt was cut; they are projected
|
|
459
|
+
// by design. Everything else needs raw whenever the reduction dropped data.
|
|
460
|
+
const lossy = GITHUB_ACTIONS[args.action]?.list
|
|
461
|
+
? Array.isArray(data) && rowsWereCut(data)
|
|
462
|
+
: JSON.stringify(data) !== JSON.stringify(result.data);
|
|
463
|
+
if (!lossy && fits(text)) return text;
|
|
363
464
|
const raw = persistToolResultArtifactSync({
|
|
364
465
|
sessionId: options.sessionId,
|
|
365
466
|
toolCallId: options.toolCallId,
|