mixdog 1.3.4 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSES/oh-my-pi-MIT.txt +23 -0
- package/NOTICE.md +17 -2
- package/README.md +11 -0
- package/package.json +3 -11
- package/scripts/daemon-stub.mjs +1 -1
- package/scripts/embed-google-oauth-client.mjs +49 -0
- package/scripts/gate-local.mjs +4 -2
- package/scripts/lib/test-spawn-ledger.mjs +46 -1
- package/scripts/native-release-status.mjs +2 -2
- package/scripts/recall-history-cases.json +1 -1
- package/scripts/suite-health.mjs +10 -1
- package/scripts/test.mjs +12 -11
- package/src/agents/reviewer/AGENT.md +7 -11
- package/src/agents/reviewer/agent.json +1 -1
- package/src/defaults/shipped-history.json +25 -1
- package/src/defaults/skills/browser-use/SKILL.md +77 -17
- package/src/defaults/skills/code-tidy/SKILL.md +142 -270
- package/src/defaults/skills/code-tidy/references/agent-cleanup.md +4 -4
- package/src/defaults/skills/code-tidy/references/cleanup-report.md +31 -76
- package/src/defaults/skills/code-tidy/references/dead-code.md +6 -12
- package/src/defaults/skills/computer-use/SKILL.md +33 -9
- package/src/defaults/skills/setup/SKILL.md +29 -2
- package/src/defaults/skills/setup/references/actions.md +117 -28
- package/src/defaults/skills/setup/references/surfaces.md +77 -35
- package/src/defaults/skills/setup-guide/SKILL.md +3 -3
- package/src/defaults/skills/visualize/SKILL.md +2 -1
- package/src/lib/keychain-cjs.cjs +359 -29
- package/src/lib/rules-builder.cjs +10 -8
- package/src/rules/agent/AGENT.md +6 -6
- package/src/rules/agent-mode/AGENT_MODE.md +10 -2
- package/src/rules/agent-mode/MIXY.md +12 -0
- package/src/rules/lead/LEAD.md +18 -20
- package/src/rules/shared/05-tool-calls.md +5 -6
- package/src/rules/shared/10-tool-workflow.md +2 -0
- package/src/rules/shared/60-verification.md +7 -5
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +2 -3
- package/src/runtime/agent/orchestrator/agent-runtime/heartbeat-completion.mjs +193 -0
- package/src/runtime/agent/orchestrator/agent-runtime/title-completion.mjs +3 -1
- package/src/runtime/agent/orchestrator/agent-trace-format.mjs +3 -1
- package/src/runtime/agent/orchestrator/config.mjs +34 -0
- package/src/runtime/agent/orchestrator/context/collect.mjs +3 -0
- package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +72 -67
- package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +54 -1
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +3 -3
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +177 -73
- package/src/runtime/agent/orchestrator/mcp/client.mjs +25 -2
- package/src/runtime/agent/orchestrator/mcp/oauth-callback.mjs +31 -2
- package/src/runtime/agent/orchestrator/mcp/oauth-client.mjs +16 -3
- package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +42 -7
- package/src/runtime/agent/orchestrator/mcp/oauth-provider.mjs +21 -2
- package/src/runtime/agent/orchestrator/mcp/oauth-shared.mjs +23 -0
- package/src/runtime/agent/orchestrator/mcp/oauth.mjs +11 -1
- package/src/runtime/agent/orchestrator/providers/account-pool.mjs +230 -137
- package/src/runtime/agent/orchestrator/providers/admission-scheduler.mjs +64 -7
- package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +18 -5
- package/src/runtime/agent/orchestrator/providers/anthropic-cache-warm.mjs +165 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request/gzip-post.mjs +14 -14
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +160 -69
- package/src/runtime/agent/orchestrator/providers/anthropic-overload-fallback.mjs +25 -3
- package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +64 -33
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +135 -87
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-catalog.mjs +52 -8
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth.mjs +10 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-request.mjs +22 -6
- package/src/runtime/agent/orchestrator/providers/antigravity-response.mjs +15 -4
- package/src/runtime/agent/orchestrator/providers/antigravity-stream.mjs +17 -2
- package/src/runtime/agent/orchestrator/providers/antigravity-transport.mjs +142 -104
- package/src/runtime/agent/orchestrator/providers/cache-warm-admission.mjs +90 -0
- package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/cursor-wire-normalization.mjs +10 -4
- package/src/runtime/agent/orchestrator/providers/cursor-wire-protobuf.mjs +10 -217
- package/src/runtime/agent/orchestrator/providers/cursor-wire-transport.mjs +25 -9
- package/src/runtime/agent/orchestrator/providers/cursor.mjs +22 -6
- package/src/runtime/agent/orchestrator/providers/devin-auth.mjs +409 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-families.mjs +187 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-identity.mjs +342 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-models.mjs +541 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-protobuf.mjs +305 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-request.mjs +558 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-schema.mjs +880 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-session.mjs +190 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-tool-args.mjs +351 -0
- package/src/runtime/agent/orchestrator/providers/devin-wire-transport.mjs +560 -0
- package/src/runtime/agent/orchestrator/providers/devin.mjs +491 -0
- package/src/runtime/agent/orchestrator/providers/effort-configuration.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/gemini-output-limit.mjs +46 -0
- package/src/runtime/agent/orchestrator/providers/gemini-reasoning-relay.mjs +30 -0
- package/src/runtime/agent/orchestrator/providers/gemini-request-body.mjs +7 -11
- package/src/runtime/agent/orchestrator/providers/gemini-retry-policy.mjs +61 -22
- package/src/runtime/agent/orchestrator/providers/gemini-sdk-request.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +71 -4
- package/src/runtime/agent/orchestrator/providers/gemini.mjs +25 -2
- package/src/runtime/agent/orchestrator/providers/grok-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +96 -5
- package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +17 -3
- package/src/runtime/agent/orchestrator/providers/lib/tail-reminder-split.mjs +23 -5
- package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +52 -10
- package/src/runtime/agent/orchestrator/providers/model-proxy-channel.d.mts +8 -1
- package/src/runtime/agent/orchestrator/providers/model-proxy-channel.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/npm-cli-version.mjs +11 -3
- package/src/runtime/agent/orchestrator/providers/oauth-credential-probes.mjs +19 -1
- package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +39 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/openai-error-contract.mjs +6 -1
- package/src/runtime/agent/orchestrator/providers/openai-oauth-tokens.mjs +10 -9
- package/src/runtime/agent/orchestrator/providers/openai-ws-send/send-context.mjs +22 -3
- package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/attempt-context.mjs +43 -5
- package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/handshake-failure.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/stream-failure.mjs +6 -3
- package/src/runtime/agent/orchestrator/providers/opencode-go-gemini.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/provider-availability.mjs +19 -0
- package/src/runtime/agent/orchestrator/providers/provider-error-kind.mjs +65 -1
- package/src/runtime/agent/orchestrator/providers/quota-reading.mjs +38 -12
- package/src/runtime/agent/orchestrator/providers/registry.mjs +43 -3
- package/src/runtime/agent/orchestrator/providers/retry-executor.mjs +39 -7
- package/src/runtime/agent/orchestrator/providers/statusline-route-meta.mjs +6 -0
- package/src/runtime/agent/orchestrator/providers/wire-protobuf-codec.mjs +368 -0
- package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +12 -7
- package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +2 -0
- package/src/runtime/agent/orchestrator/runtime-core/compaction-config-keys.mjs +62 -0
- package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +37 -16
- package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-delta.mjs +100 -23
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/reaction-tool-defs.mjs +133 -0
- package/src/runtime/agent/orchestrator/runtime-core/session-text.mjs +2 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-bridge.mjs +19 -4
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +3 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +125 -30
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +23 -5
- package/src/runtime/agent/orchestrator/runtime-core/tool-profile.mjs +35 -10
- package/src/runtime/agent/orchestrator/runtime-core/workflow/agents.mjs +57 -10
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +9 -6
- package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/agent-loop.mjs +18 -0
- package/src/runtime/agent/orchestrator/session/agent-room.d.mts +0 -3
- package/src/runtime/agent/orchestrator/session/agent-room.mjs +10 -4
- package/src/runtime/agent/orchestrator/session/cache-warm.mjs +792 -0
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +148 -25
- package/src/runtime/agent/orchestrator/session/compaction-archive-capture.mjs +475 -58
- package/src/runtime/agent/orchestrator/session/compaction-archive.mjs +42 -17
- package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +8 -0
- package/src/runtime/agent/orchestrator/session/human-gate/gate.mjs +47 -9
- package/src/runtime/agent/orchestrator/session/human-gate/outbound-policy.mjs +6 -2
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +36 -4
- package/src/runtime/agent/orchestrator/session/human-gate/store.mjs +14 -2
- package/src/runtime/agent/orchestrator/session/loop/assistant-commit.mjs +8 -0
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +18 -22
- package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +32 -3
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +11 -2
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/segments.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn.mjs +51 -3
- package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +17 -3
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +10 -2
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/after-hook.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +14 -4
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +16 -2
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +16 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +10 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +3 -10
- package/src/runtime/agent/orchestrator/session/loop/tool-phase.mjs +23 -5
- package/src/runtime/agent/orchestrator/session/loop/turn-limits.mjs +60 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-queue.mjs +12 -2
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +19 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-commit.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +133 -90
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +14 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-state.mjs +31 -4
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +30 -18
- package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +23 -13
- package/src/runtime/agent/orchestrator/session/manager/pending-message-entry.mjs +11 -2
- package/src/runtime/agent/orchestrator/session/manager/provider-replay.mjs +13 -0
- package/src/runtime/agent/orchestrator/session/manager/route-fallback-chain.mjs +129 -0
- package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +20 -2
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +8 -0
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +13 -0
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +7 -2
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +102 -15
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +18 -5
- package/src/runtime/agent/orchestrator/session/message-ids.mjs +5 -3
- package/src/runtime/agent/orchestrator/session/message-reactions.mjs +89 -0
- package/src/runtime/agent/orchestrator/session/message-reactions.test-support.mjs +75 -0
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +19 -8
- package/src/runtime/agent/orchestrator/session/prompt-cache-idle-gaps.mjs +113 -0
- package/src/runtime/agent/orchestrator/session/prompt-cache-touch-store.mjs +127 -0
- package/src/runtime/agent/orchestrator/session/routine-result.d.mts +0 -2
- package/src/runtime/agent/orchestrator/session/routine-result.mjs +47 -11
- package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +20 -2
- package/src/runtime/agent/orchestrator/session/sensitive-projection.mjs +100 -0
- package/src/runtime/agent/orchestrator/session/sensitive-values.mjs +257 -0
- package/src/runtime/agent/orchestrator/session/side-question-store.mjs +20 -7
- package/src/runtime/agent/orchestrator/session/side-question.mjs +18 -0
- package/src/runtime/agent/orchestrator/session/skill-update-notice.mjs +60 -0
- package/src/runtime/agent/orchestrator/session/store/live-state.mjs +6 -3
- package/src/runtime/agent/orchestrator/session/store/save-delta.mjs +9 -5
- package/src/runtime/agent/orchestrator/session/store/serialize.mjs +9 -8
- package/src/runtime/agent/orchestrator/session/store/session-persistence-events.mjs +29 -0
- package/src/runtime/agent/orchestrator/session/store-agent-worker-header-cache.mjs +85 -0
- package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +133 -18
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +12 -2
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +44 -14
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +84 -3
- package/src/runtime/agent/orchestrator/session/stored-attachment-history.mjs +32 -0
- package/src/runtime/agent/orchestrator/session/tail-reminder-rules.mjs +11 -5
- package/src/runtime/agent/orchestrator/session/thinking-binding.mjs +108 -0
- package/src/runtime/agent/orchestrator/session/tool-batch/pre-dispatch.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/tool-batch/record-outcome.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/tool-batch/state.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/tool-batch.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +25 -2
- package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-status.mjs +9 -7
- package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-text.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/turn-failure.mjs +5 -1
- package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +5 -2
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +12 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/misuse-guard.mjs +240 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/result-format.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/shell-cwd.mjs +38 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +25 -5
- package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +65 -7
- package/src/runtime/agent/orchestrator/tools/builtin/shell-runtime.mjs +7 -1
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +36 -13
- package/src/runtime/browser-bridge/action-schema.mjs +13 -2
- package/src/runtime/browser-bridge/client.mjs +73 -8
- package/src/runtime/browser-bridge/input-fields.mjs +8 -9
- package/src/runtime/browser-bridge/mail-links.mjs +107 -0
- package/src/runtime/browser-bridge/tool-defs.mjs +1 -1
- package/src/runtime/channels/lib/config.mjs +6 -61
- package/src/runtime/channels/lib/crash-log.mjs +1 -1
- package/src/runtime/channels/lib/event-pipeline.mjs +4 -19
- package/src/runtime/channels/lib/event-queue.mjs +3 -18
- package/src/runtime/channels/lib/owned-runtime/automation-services.mjs +2 -2
- package/src/runtime/channels/lib/owned-runtime/automation-start.mjs +3 -4
- package/src/runtime/channels/lib/owned-runtime/config-reload.mjs +4 -59
- package/src/runtime/channels/lib/owned-runtime/owned-start.mjs +33 -115
- package/src/runtime/channels/lib/owned-runtime/owned-stop.mjs +5 -22
- package/src/runtime/channels/lib/owned-runtime/state.mjs +2 -8
- package/src/runtime/channels/lib/owned-runtime.mjs +6 -23
- package/src/runtime/channels/lib/parent-bridge.mjs +2 -2
- package/src/runtime/channels/lib/runtime-paths.mjs +4 -43
- package/src/runtime/channels/lib/schedule-errors.mjs +51 -0
- package/src/runtime/channels/lib/scheduler.mjs +135 -154
- package/src/runtime/channels/lib/schedules-db.mjs +83 -11
- package/src/runtime/channels/lib/status-snapshot.mjs +1 -1
- package/src/runtime/channels/lib/tool-dispatch.mjs +14 -2
- package/src/runtime/channels/lib/webhooks-db.mjs +5 -9
- package/src/runtime/channels/lib/worker-bootstrap.mjs +0 -1
- package/src/runtime/channels/lib/worker-ipc.mjs +0 -1
- package/src/runtime/channels/lib/worker-main.mjs +19 -34
- package/src/runtime/computer-bridge/action-schema.mjs +42 -1
- package/src/runtime/computer-bridge/actions.mjs +9 -1
- package/src/runtime/computer-bridge/client.mjs +180 -8
- package/src/runtime/computer-bridge/core-actions.mjs +2 -2
- package/src/runtime/computer-bridge/error-recovery.mjs +27 -2
- package/src/runtime/computer-bridge/linux-readiness.mjs +65 -23
- package/src/runtime/computer-bridge/pending-continuation.mjs +1 -1
- package/src/runtime/connectors/connector-accounts-mcp.mjs +230 -0
- package/src/runtime/connectors/gmail-app-password.mjs +172 -39
- package/src/runtime/connectors/google-mcp.mjs +10 -12
- package/src/runtime/memory/lib/pg/adapter.mjs +77 -70
- package/src/runtime/memory/lib/pg/supervisor.mjs +24 -12
- package/src/runtime/memory/lib/runtime-fetcher.mjs +23 -5
- package/src/runtime/office/com/com-adapter.mjs +17 -1
- package/src/runtime/office/com/office-com-host.ps1 +51 -1
- package/src/runtime/office/pdf/cfb-fixture.mjs +328 -0
- package/src/runtime/office/pdf/cfb-protection.mjs +311 -0
- package/src/runtime/office/pdf/document-preview.mjs +326 -8
- package/src/runtime/office/pdf/ooxml-crypto.mjs +469 -0
- package/src/runtime/office/pdf/ooxml-key-worker.mjs +14 -0
- package/src/runtime/office/portable/portable-soffice.mjs +45 -5
- package/src/runtime/session-search/session-search-db.mjs +73 -9
- package/src/runtime/session-search/session-search-ingest.mjs +110 -20
- package/src/runtime/shared/abort-race.mjs +89 -0
- package/src/runtime/shared/agent-avatar.d.mts +0 -1
- package/src/runtime/shared/agent-kind.mjs +4 -3
- package/src/runtime/shared/bot-hops.mjs +62 -2
- package/src/runtime/shared/bounded-download.mjs +8 -3
- package/src/runtime/shared/config.mjs +51 -35
- package/src/runtime/shared/connector-accounts.mjs +20 -10
- package/src/runtime/shared/connector-catalog.d.mts +33 -2
- package/src/runtime/shared/connector-catalog.mjs +166 -8
- package/src/runtime/shared/connector-triggers.mjs +22 -19
- package/src/runtime/shared/defaults-separation.mjs +2 -14
- package/src/runtime/shared/delegated-approval-host.mjs +103 -11
- package/src/runtime/shared/developer-options.mjs +32 -1
- package/src/runtime/shared/err-text.mjs +24 -15
- package/src/runtime/shared/file-permissions.d.mts +0 -8
- package/src/runtime/shared/file-permissions.mjs +0 -11
- package/src/runtime/shared/git-direct.test-support.mjs +19 -0
- package/src/runtime/shared/google-oauth-client.generated.json +4 -0
- package/src/runtime/shared/google-oauth-client.mjs +34 -9
- package/src/runtime/shared/heartbeat-interval.d.mts +4 -0
- package/src/runtime/shared/heartbeat-interval.mjs +19 -0
- package/src/runtime/shared/idle-auto-clear-gate.mjs +104 -0
- package/src/runtime/shared/llm/anthropic-betas.mjs +7 -0
- package/src/runtime/shared/llm/anthropic-thinking-contract.mjs +12 -0
- package/src/runtime/shared/llm/provider-catalog-registry.mjs +1 -0
- package/src/runtime/shared/llm/usage-rollup.mjs +1 -1
- package/src/runtime/shared/llm/well-formed.mjs +66 -0
- package/src/runtime/shared/mixy-presence.mjs +22 -0
- package/src/runtime/shared/orchestration.d.mts +2 -0
- package/src/runtime/shared/pg-schema-db.mjs +27 -16
- package/src/runtime/shared/profile-config.cjs +1 -1
- package/src/runtime/shared/prompt-origin.d.mts +4 -0
- package/src/runtime/shared/prompt-origin.mjs +21 -0
- package/src/runtime/shared/provider-accounts.mjs +231 -59
- package/src/runtime/shared/provider-api-key.mjs +19 -8
- package/src/runtime/shared/provider-display-name.mjs +29 -0
- package/src/runtime/shared/provider-timeout-phase.mjs +2 -0
- package/src/runtime/shared/routine-trigger.d.mts +2 -0
- package/src/runtime/shared/routine-trigger.mjs +52 -0
- package/src/runtime/shared/sensitive-path-rules.d.mts +2 -10
- package/src/runtime/shared/sensitive-path-rules.mjs +19 -41
- package/src/runtime/shared/session-activity-signal.mjs +34 -1
- package/src/runtime/shared/session-sidebar-host.d.mts +1 -1
- package/src/runtime/shared/session-sidebar-host.mjs +7 -3
- package/src/runtime/shared/session-turn-prelude.mjs +18 -0
- package/src/runtime/shared/tool-execution-contract.mjs +2 -0
- package/src/runtime/shared/tool-result-summary.mjs +1 -14
- package/src/runtime/shared/transcript-metadata.mjs +38 -0
- package/src/runtime/shared/user-data-guard.mjs +30 -2
- package/src/runtime/shared/worktrees/activity-gate.mjs +12 -5
- package/src/runtime/shared/worktrees/test-support.mjs +9 -4
- package/src/runtime/terminal-bridge/client.mjs +10 -1
- package/src/runtime/visualize-bridge/client.mjs +27 -8
- package/src/runtime/visualize-bridge/tool-defs.mjs +22 -8
- package/src/runtime/visualize-bridge/tool-meta.d.mts +5 -0
- package/src/runtime/visualize-bridge/tool-meta.mjs +22 -0
- package/src/runtime/web-search/lib/fetch-pipeline.mjs +2 -2
- package/src/session-runtime/agent-home-delivery.mjs +486 -179
- package/src/session-runtime/agent-room-delivery.mjs +28 -1
- package/src/session-runtime/agent-task-sessions.mjs +561 -199
- package/src/session-runtime/boot/apis.mjs +9 -0
- package/src/session-runtime/boot/begin.mjs +3 -2
- package/src/session-runtime/boot/infrastructure.mjs +4 -0
- package/src/session-runtime/boot/providers.mjs +3 -0
- package/src/session-runtime/boot/tools.mjs +8 -1
- package/src/session-runtime/bot-chain.mjs +32 -0
- package/src/session-runtime/bot-status.mjs +7 -4
- package/src/session-runtime/channel-config-api.mjs +63 -17
- package/src/session-runtime/config-lifecycle.mjs +6 -0
- package/src/session-runtime/connector-merge-migration.mjs +305 -0
- package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +132 -28
- package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +2 -0
- package/src/session-runtime/internal-tool-executor/reaction-tool.mjs +45 -0
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +72 -5
- package/src/session-runtime/internal-tool-executor.mjs +4 -0
- package/src/session-runtime/lifecycle/inheritance.mjs +16 -3
- package/src/session-runtime/lifecycle/session-catalog.mjs +3 -1
- package/src/session-runtime/lifecycle/teardown/runtime-stops.mjs +50 -4
- package/src/session-runtime/lifecycle/teardown.mjs +23 -5
- package/src/session-runtime/mcp-glue/server-catalog.mjs +61 -3
- package/src/session-runtime/mcp-oauth-login.mjs +5 -3
- package/src/session-runtime/mixy-heartbeat.mjs +927 -0
- package/src/session-runtime/model-route/route-tuning.mjs +10 -6
- package/src/session-runtime/notification-bus.mjs +31 -117
- package/src/session-runtime/notification-completion-queue.mjs +54 -0
- package/src/session-runtime/notification-listeners.mjs +76 -0
- package/src/session-runtime/owned-automation-run.mjs +35 -13
- package/src/session-runtime/prewarm/channel-start.mjs +3 -7
- package/src/session-runtime/provider-auth/login.mjs +7 -0
- package/src/session-runtime/provider-models/row-hydration.mjs +13 -2
- package/src/session-runtime/resource-mcp-api.mjs +143 -224
- package/src/session-runtime/resource-mcp-connector-accounts.mjs +163 -0
- package/src/session-runtime/resource-mcp-oauth-api.mjs +217 -0
- package/src/session-runtime/resource-mcp-secrets.mjs +82 -0
- package/src/session-runtime/resource-mcp-servers.mjs +78 -0
- package/src/session-runtime/resource-mcp-store.mjs +49 -0
- package/src/session-runtime/routine-home-turn.mjs +33 -6
- package/src/session-runtime/routine-owner.mjs +40 -9
- package/src/session-runtime/schedule-session-run.mjs +7 -3
- package/src/session-runtime/services/agent-tool/close-flow.mjs +3 -0
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-plan.mjs +8 -12
- package/src/session-runtime/services/agent-tool/spawn-preset.mjs +7 -2
- package/src/session-runtime/services/agent-tool/tag-registry.mjs +1 -0
- package/src/session-runtime/services/agent-tool/worker-index/awaiting-user-sync.mjs +51 -0
- package/src/session-runtime/services/agent-tool/worker-index/disposal.mjs +55 -0
- package/src/session-runtime/services/agent-tool/worker-index/released-store.mjs +123 -0
- package/src/session-runtime/services/agent-tool/worker-index/restart-settlement.mjs +112 -0
- package/src/session-runtime/services/agent-tool/worker-index/row-reads.mjs +36 -0
- package/src/session-runtime/services/agent-tool/worker-index/row-shape.mjs +2 -0
- package/src/session-runtime/services/agent-tool/worker-index/row-store.mjs +17 -4
- package/src/session-runtime/services/agent-tool/worker-index/row-writes.mjs +58 -0
- package/src/session-runtime/services/agent-tool/worker-index.mjs +41 -241
- package/src/session-runtime/services/agent-tool/worker-rows.mjs +3 -0
- package/src/session-runtime/services/channel-admin.mjs +73 -31
- package/src/session-runtime/services/channel-session-router.mjs +4 -2
- package/src/session-runtime/services/channel-worker.mjs +1 -1
- package/src/session-runtime/services/provider-admin.mjs +128 -25
- package/src/session-runtime/services/schedule-access.mjs +14 -0
- package/src/session-runtime/services/seeds.mjs +0 -28
- package/src/session-runtime/services/usage-dashboard-model.mjs +1 -0
- package/src/session-runtime/session-compaction-sync.mjs +27 -0
- package/src/session-runtime/session-create/session-options.mjs +8 -4
- package/src/session-runtime/settings-builtin-tools-api.mjs +11 -0
- package/src/session-runtime/settings-compaction-api.mjs +2 -40
- package/src/session-runtime/settings-system-api.mjs +28 -1
- package/src/session-runtime/setup-tool/agent-settings-actions.mjs +65 -0
- package/src/session-runtime/setup-tool/executor.mjs +187 -29
- package/src/session-runtime/setup-tool/extended-actions.mjs +33 -2
- package/src/session-runtime/setup-tool/session-route-actions.mjs +152 -0
- package/src/session-runtime/setup-tool/settings-contract.mjs +68 -6
- package/src/session-runtime/setup-tool/tool-defs.mjs +92 -6
- package/src/session-runtime/task-session-route.mjs +99 -0
- package/src/session-runtime/tool-policy/agent-profile-fold.mjs +17 -13
- package/src/session-runtime/tool-policy/policy-stage.mjs +21 -4
- package/src/session-runtime/tool-policy/surface-helpers.mjs +2 -3
- package/src/session-runtime/tool-surface.mjs +4 -0
- package/src/session-runtime/turn/turn-run/ask-callbacks.mjs +1 -0
- package/src/session-runtime/workflow-agents-api/agent-editor.mjs +98 -21
- package/src/session-runtime/workflow-agents-api/style-and-mode.mjs +4 -0
- package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +6 -1
- package/src/session-runtime/workspace/transitions.mjs +10 -2
- package/src/standalone/channel-transport/client-registry/client-records.mjs +65 -0
- package/src/standalone/channel-transport/client-registry/client-registration.mjs +118 -0
- package/src/standalone/channel-transport/client-registry.mjs +24 -163
- package/src/standalone/channel-transport.mjs +1 -1
- package/src/standalone/daemon-channels-loader.mjs +10 -8
- package/src/standalone/daemon-session-control/list-page.mjs +72 -0
- package/src/standalone/daemon-session-control/request.mjs +51 -0
- package/src/standalone/daemon-session-control/room-host.mjs +57 -0
- package/src/standalone/daemon-session-control/route-control.mjs +48 -0
- package/src/standalone/daemon-session-control/send-turn.mjs +60 -0
- package/src/standalone/daemon-session-control/worktree-control.mjs +40 -0
- package/src/standalone/daemon-session-control.mjs +161 -157
- package/src/standalone/daemon.mjs +33 -2
- package/src/standalone/session-client.mjs +7 -3
- package/src/standalone/session-protocol.mjs +10 -0
- package/src/standalone/session-service/agent-tree/agent-cancel.mjs +6 -2
- package/src/standalone/session-service/agent-tree/agent-child.mjs +1 -0
- package/src/standalone/session-service/quota-resume.mjs +3 -0
- package/src/standalone/session-service/retention/busy.mjs +65 -1
- package/src/standalone/session-service/session-calls/session-action.mjs +23 -2
- package/src/standalone/session-service/session-calls/session-turns.mjs +6 -0
- package/src/standalone/session-service/session-calls/session-views.mjs +8 -0
- package/src/standalone/session-service.mjs +13 -0
- package/src/standalone/session-tool-output.mjs +21 -10
- package/src/tui/app/model-options.mjs +4 -27
- package/src/tui/dist/index.mjs +81 -65
- package/src/tui/session/agent-job-feed/model-notification.mjs +3 -0
- package/src/tui/session/initial-state.mjs +3 -0
- package/src/tui/session/notice-surface.mjs +23 -1
- package/src/tui/session/queue-helpers.mjs +3 -42
- package/src/tui/session/session-api/integrations.mjs +1 -0
- package/src/tui/session/session-api/lifecycle.mjs +8 -0
- package/src/tui/session/session-api/routes-agent-definitions.mjs +14 -2
- package/src/tui/session/session-api/routes-write.mjs +5 -1
- package/src/tui/session/session-api/routes.mjs +1 -0
- package/src/tui/session/session-api/settings.mjs +30 -2
- package/src/tui/session/session-flow/auto-clear.mjs +4 -33
- package/src/tui/session/session-flow/drain-closed-queue.mjs +38 -0
- package/src/tui/session/session-flow/drain-enqueue.mjs +86 -0
- package/src/tui/session/session-flow/drain-retry.mjs +35 -0
- package/src/tui/session/session-flow/drain.mjs +118 -149
- package/src/tui/session/session-flow/queue/entry-shape.mjs +5 -0
- package/src/tui/session/session-flow/queue/take-entries.mjs +5 -2
- package/src/tui/session/tool-approval-delegation.mjs +64 -0
- package/src/tui/session/tool-approval-request.mjs +39 -0
- package/src/tui/session/tool-approval-settle.mjs +62 -0
- package/src/tui/session/tool-approval.mjs +69 -115
- package/src/tui/session/tui-steering-persist.mjs +8 -1
- package/src/tui/session/turn-stream.mjs +36 -3
- package/src/tui/session/turn.mjs +23 -2
- package/src/vendor/statusline/bin/statusline-route.mjs +1 -219
- package/src/vendor/statusline/src/gateway/route-meta.mjs +35 -13
- package/scripts/code-graph-description-contract.mjs +0 -188
- package/src/runtime/channels/lib/owned-runtime/ownership-refresh.mjs +0 -36
|
@@ -40,7 +40,7 @@ evidence as `kept`.
|
|
|
40
40
|
## Deletion ladder
|
|
41
41
|
|
|
42
42
|
Run the ladder on every selected unit (function, class, module, config knob)
|
|
43
|
-
in
|
|
43
|
+
in scope before looking for smells. Only code that lands on the
|
|
44
44
|
last rung goes on to the lenses.
|
|
45
45
|
|
|
46
46
|
| Rung | Question | Typical win |
|
|
@@ -55,7 +55,7 @@ in-place cleanup; take it before analysing the unit's smells.
|
|
|
55
55
|
|
|
56
56
|
## Lenses
|
|
57
57
|
|
|
58
|
-
Each lens judges the
|
|
58
|
+
Each lens judges the units in scope and may search the whole
|
|
59
59
|
repository for evidence (an existing helper, a sibling call site); a finding
|
|
60
60
|
without a path-plus-symbol pointer is dropped. Run every lens unless the user named a focus.
|
|
61
61
|
Judge each selected function or class in its full context, including relevant
|
|
@@ -116,8 +116,8 @@ Every finding carries one tier:
|
|
|
116
116
|
|
|
117
117
|
| Tier | Meaning | Examples | Handling |
|
|
118
118
|
|---|---|---|---|
|
|
119
|
-
| SAFE | equivalence established, including initialization and parsing | verified unused binding with no initialization effects, nonsemantic comment, redundant type assertion | apply as one batch
|
|
120
|
-
| CAREFUL | same semantics, structure changes | rename a local, flatten a ternary, guard clause, verified wrapper inlining, extract a helper, split responsibilities while preserving entry points, consolidate duplicates, name a magic number | apply one source unit at a time (including required new modules);
|
|
119
|
+
| SAFE | equivalence established, including initialization and parsing | verified unused binding with no initialization effects, nonsemantic comment, redundant type assertion | apply as one batch |
|
|
120
|
+
| CAREFUL | same semantics, structure changes | rename a local, flatten a ternary, guard clause, verified wrapper inlining, extract a helper, split responsibilities while preserving entry points, consolidate duplicates, name a magic number | apply one source unit at a time (including required new modules); verified by the single final check; undo only this run's edits if it cannot be fixed |
|
|
121
121
|
| RISKY | may change behavior or a contract | public API or export rename, route/DB column/config key rename, error-handling change, concurrency change, N+1 restructuring, altitude fix in shared infrastructure | report only, with the test coverage status; never auto-apply |
|
|
122
122
|
|
|
123
123
|
Conflict resolution when lenses disagree: correctness > the user's stated
|
|
@@ -1,88 +1,43 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Candidate list and report
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
the final report template. Findings and their risk tiers come from the
|
|
6
|
-
agent-level analysis; this file owns how they are recorded and reported.
|
|
3
|
+
Findings and risk tiers come from `agent-cleanup.md`; this file owns how they
|
|
4
|
+
are recorded and reported. Keep the list in the conversation, not a file.
|
|
7
5
|
|
|
8
|
-
##
|
|
6
|
+
## Candidates
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
using stable candidate IDs:
|
|
8
|
+
One line per candidate, with a stable ID (`C-01`):
|
|
12
9
|
|
|
13
10
|
```text
|
|
14
|
-
[ID] path · symbol → problem → cost
|
|
11
|
+
[ID] path · symbol → problem → cost → action | tier: SAFE/CAREFUL/RISKY | confidence: high/medium/low | status: completed/kept/unfinished
|
|
15
12
|
```
|
|
16
13
|
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
the
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
finding, do not register them or write a Keep justification.
|
|
29
|
-
- **Cost, Confidence & Nits**: A finding that cannot name its cost is a nit:
|
|
30
|
-
do not register it. An unresolved registered finding remains `unfinished`;
|
|
31
|
-
uncertainty is not evidence for keeping it. Confidence is `low` when
|
|
32
|
-
current code, callers, contracts, and tests do not explain why the code exists.
|
|
33
|
-
Consult history only to resolve a specific remaining question. Medium/low
|
|
34
|
-
confidence candidates stay unfinished until that question is resolved; apply
|
|
35
|
-
approval does not authorize guessing that they are safe to delete.
|
|
36
|
-
- **Statuses & Reconciliation Invariants**:
|
|
37
|
-
- `completed`: verified done, with evidence of what and how changed.
|
|
38
|
-
- `kept`: preserved with concrete evidence (documented keep rule or external contract).
|
|
39
|
-
- `unfinished`: work remaining, with substatuses: `pending`, `in_progress`, `blocked`, `deferred`, or `unverified`.
|
|
40
|
-
- Formula for registered candidates: `Total Candidate IDs = Completed + Kept + Unfinished Remaining`. Counts must reconcile exactly.
|
|
14
|
+
- Register only a lens finding with a path+symbol location, a cost, and an
|
|
15
|
+
action. A finding that cannot name its cost is a nit: drop it. Threshold
|
|
16
|
+
hits (long files or functions, deep nesting) are signals, not candidates.
|
|
17
|
+
- Findings sharing a root cause group under one ID, each member keeping its
|
|
18
|
+
path and symbol. Code moved by an extraction keeps its origin ID.
|
|
19
|
+
- Confidence is `low` when callers, contracts, and tests do not explain why
|
|
20
|
+
the code exists; medium/low candidates stay unfinished until that question
|
|
21
|
+
is resolved. Approval to apply does not authorize guessing.
|
|
22
|
+
- `completed` carries evidence of what changed; `kept` carries a concrete
|
|
23
|
+
reason (keep rule or external contract); `unfinished` carries the blocker
|
|
24
|
+
(pending, blocked, deferred, unverified).
|
|
41
25
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
with remaining partitions or candidates is **round complete, overall partial**,
|
|
46
|
-
with the remaining paths, IDs, and next work.
|
|
47
|
-
Skipped, failed, or unverified checks never count as passed.
|
|
26
|
+
Overall cleanup is complete only when every partition is done, the final
|
|
27
|
+
check has passed, and every candidate is completed or kept with evidence.
|
|
28
|
+
Otherwise report "overall partial" with the remaining paths and IDs.
|
|
48
29
|
|
|
49
|
-
## Final report
|
|
50
|
-
|
|
51
|
-
This is the shape of the closing reply after the last round; earlier rounds
|
|
52
|
-
close as the skill body's section 7 describes, while the inventory accumulates
|
|
53
|
-
in the form above.
|
|
30
|
+
## Final report
|
|
54
31
|
|
|
55
32
|
```text
|
|
56
|
-
Scope: <
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
✓ [Quality/SAFE] removed comment narrating the change in `renderRow` → deleted redundant comment
|
|
67
|
-
✓ [Reuse/CAREFUL] replaced manual join with `joinPath` from src/shared/path.mjs → consolidated helper
|
|
68
|
-
|
|
69
|
-
Kept / Not Applicable (evidenced)
|
|
70
|
-
[ID] path/file.ts · symbol
|
|
71
|
-
- [Keep/Contract] public export `parseConfig` kept → external contract
|
|
72
|
-
- [Keep/Rule] redundant-looking guard in `fetchUser` kept → validates untrusted network input
|
|
73
|
-
|
|
74
|
-
Unfinished (remaining candidates)
|
|
75
|
-
[ID] path/file.ts · symbol
|
|
76
|
-
☐ [Structure/CAREFUL] split `handleRequest` responsibility · Status: pending|in_progress|blocked|deferred|unverified
|
|
77
|
-
Remaining: extract auth sub-handler · Reason: waiting for auth test fixture · Next: Round <N+1>
|
|
78
|
-
|
|
79
|
-
Noticed but not applied (report-only or out of scope)
|
|
80
|
-
[ID] ⚠ [Altitude/RISKY] special case for caller X in `run` (src/core/run.mjs) — separate correction · coverage: none · Status: deferred
|
|
81
|
-
[ID] ⚠ [Quality] two equal rewrites of `parseInput`; principles could not decide · Status: blocked
|
|
82
|
-
|
|
83
|
-
Bugs found (not fixed here): <correctness issues surfaced while cleaning>
|
|
84
|
-
Verification: tests <passed/failed/skipped/baseline-excluded counts> · typecheck <result> · lint <remaining diagnostics>
|
|
85
|
-
Blocked or unavailable verification (required; write "none"): <check> — <engine unresolved through tidy | runner broken | lane conflict> → <paths left unverified>
|
|
86
|
-
Needs your decision: <one consolidated list — RISKY findings, bugs found, unresolved intent, unfinished candidates>
|
|
87
|
-
Next round: <scope and IDs planned for next round, or none if overall complete>
|
|
33
|
+
Scope: <paths | whole project> · Mode: report|apply · Overall: complete|partial
|
|
34
|
+
Deterministic: engines used/missing · files changed · diagnostics remaining · structural applied/skipped
|
|
35
|
+
Completed: [ID] path · symbol — [Lens/TIER] what changed
|
|
36
|
+
Kept: [ID] path · symbol — reason
|
|
37
|
+
Unfinished: [ID] path · symbol — remaining work · status · next
|
|
38
|
+
Noticed, not applied (RISKY or out of scope): [ID] path · symbol — why · test coverage
|
|
39
|
+
Bugs found (not fixed here): <issues>
|
|
40
|
+
Verification: tests <result> · typecheck <result> · tidy check <remaining diagnostics> · pre-existing failures <list|none>
|
|
41
|
+
Blocked or unverified: <check> — <reason> → <paths> (write "none" if none)
|
|
42
|
+
Needs your decision: <RISKY findings, bugs, unresolved intent, unfinished candidates>
|
|
88
43
|
```
|
|
@@ -19,9 +19,7 @@ never route one through `tidy` (they are not tidy engines):
|
|
|
19
19
|
| `deadcode` (Go, `golang.org/x/tools`) / `cargo machete` | unreachable functions / unused crates | only when on PATH |
|
|
20
20
|
| `code_graph mode:symbols` per selected file | private helpers with no callers (`callers`) | universal, no install |
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
Do not add stricter compiler flags for a routine cleanup check; an explicitly
|
|
24
|
-
requested additional diagnostic does not redefine the project's build criteria.
|
|
22
|
+
Do not add stricter compiler flags for a routine cleanup.
|
|
25
23
|
|
|
26
24
|
An import the project cannot resolve, or one whose package is absent from the
|
|
27
25
|
manifest, is not dead code but a phantom dependency: report it under "Bugs
|
|
@@ -48,7 +46,7 @@ found" and never settle it by installing the package.
|
|
|
48
46
|
module for registration or initialization. Preserve required initialization
|
|
49
47
|
rather than deleting it with the binding.
|
|
50
48
|
5. Record the symbol, kind, classified usage and contract evidence, side-effect
|
|
51
|
-
result, and proposed action in the
|
|
49
|
+
result, and proposed action in the candidate list.
|
|
52
50
|
|
|
53
51
|
## Never dead
|
|
54
52
|
|
|
@@ -81,9 +79,7 @@ evidence. Apply this procedure before classifying an old path as dead:
|
|
|
81
79
|
4. For a verified obsolete path, inventory its callers, flags/config, tests,
|
|
82
80
|
docs, files, and dependencies. Remove only approved members in the order
|
|
83
81
|
below; request scope expansion before editing related files outside it.
|
|
84
|
-
5.
|
|
85
|
-
documented checks. Record the retirement evidence and any remaining items.
|
|
86
|
-
A still-required path is kept with its contract; an unknown obligation
|
|
82
|
+
5. Record the retirement evidence and any remaining items. A still-required path is kept with its contract; an unknown obligation
|
|
87
83
|
leaves the candidate blocked, not assumed obsolete.
|
|
88
84
|
|
|
89
85
|
## Remove in order
|
|
@@ -98,11 +94,9 @@ evidence. Apply this procedure before classifying an old path as dead:
|
|
|
98
94
|
project's own package manager.
|
|
99
95
|
|
|
100
96
|
Group edits by file so one batch never touches a file another batch edits.
|
|
101
|
-
Verification and
|
|
102
|
-
the test-failure pitfall); never patch forward past a failure.
|
|
97
|
+
Verification and rollback follow the skill body (section 5).
|
|
103
98
|
|
|
104
99
|
## Report
|
|
105
100
|
|
|
106
|
-
Use the shared candidate
|
|
107
|
-
|
|
108
|
-
obligations, and verification result for each completed, kept, or unfinished ID.
|
|
101
|
+
Use the shared candidate list and closing report, with usage and side-effect
|
|
102
|
+
evidence per ID.
|
|
@@ -41,8 +41,11 @@ GNOME with Mixdog's own shell extension, which the app sets up); prefer accessib
|
|
|
41
41
|
- Mixdog browser pages → Browser Use (`browser`). A refused or unfinished
|
|
42
42
|
page action stays on that route for recovery or user handoff; never retry
|
|
43
43
|
it through `computer` or move it to another browser.
|
|
44
|
-
- On either route, permission denials, CAPTCHA/2FA,
|
|
45
|
-
stops are not fallback signals: report
|
|
44
|
+
- On either route, permission denials, CAPTCHA/2FA (authenticator, SMS,
|
|
45
|
+
passkey), identity checks, and user stops are not fallback signals: report
|
|
46
|
+
or hand off, never bypass them. A "check your e-mail" step of a sign-up or
|
|
47
|
+
sign-in Mixdog started is not one: finish it from a connected mailbox
|
|
48
|
+
(browser-use skill, E-mail verification).
|
|
46
49
|
- Use the screen when a UI itself is the subject: checking a desktop app's GUI
|
|
47
50
|
after a change, a GUI-only bug, UI-only settings, a cross-app flow.
|
|
48
51
|
- Service CLIs and deterministic file, process, or config work → `shell`/`edit`;
|
|
@@ -83,8 +86,10 @@ GNOME with Mixdog's own shell extension, which the app sets up); prefer accessib
|
|
|
83
86
|
`input_may_have_executed:true` or unknown delivery is not a no-input refusal.
|
|
84
87
|
A refusal applies to that action, not to earlier completed steps. Keep the
|
|
85
88
|
selected app/browser session when choosing another supported delivery route.
|
|
86
|
-
-
|
|
87
|
-
|
|
89
|
+
- Background work continues while the user works. A foreground step is refused
|
|
90
|
+
or interrupted (that action only, `user_input_active`) when the user acts; it
|
|
91
|
+
never pauses the session. Retry it after the user pauses. Explicit
|
|
92
|
+
Stop/Pause still halts everything; resume through the recovery flow below.
|
|
88
93
|
|
|
89
94
|
## Rules
|
|
90
95
|
|
|
@@ -114,11 +119,14 @@ GNOME with Mixdog's own shell extension, which the app sets up); prefer accessib
|
|
|
114
119
|
- Window pixels come only from a window-owned capture, never a sampled region
|
|
115
120
|
of the shared desktop. If that surface is unavailable, use semantic refs or
|
|
116
121
|
report `pixel_unavailable`; do not substitute a screen grab.
|
|
117
|
-
- If the user
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
- If the user's physical input interrupts an action, it fails alone with
|
|
123
|
+
`user_input_active` (input may have landed: capture fresh state, never replay,
|
|
124
|
+
no `wait_for_user`). Their cursor and focus stay theirs. Worker
|
|
125
|
+
termination and input cleanup must finish before resuming a pause. The user's
|
|
126
|
+
Resume on the overlay continues a pause; an unverified-recovery pause may
|
|
127
|
+
also resume after the host's configured quiet interval (renewed input resets
|
|
128
|
+
it), while explicit pauses, stops and uncertain cleanup never auto-resume.
|
|
129
|
+
Stop (or
|
|
122
130
|
`Ctrl+Alt+Esc`) cancels the task, which then reports the stop as a failure.
|
|
123
131
|
A cleanup that could not be confirmed is retried before the next input
|
|
124
132
|
command; if it still fails, that command returns the reason — relay it to
|
|
@@ -222,6 +230,22 @@ refs still work.
|
|
|
222
230
|
`type` text, optional `key` Enter → inspect the returned value. Use `verify`
|
|
223
231
|
only if the result does not establish the required value or completion state.
|
|
224
232
|
|
|
233
|
+
**Sign in inside the user's browser window** — prefer the session or SSO the
|
|
234
|
+
browser already has, or Browser Use's saved sign-in. As a fallback, focus the
|
|
235
|
+
login field (`act` click), then `saved_login` with `savedAccount` (username or
|
|
236
|
+
masked label) and `field` (`username` or `password`). The host writes it only
|
|
237
|
+
into that field of a verified Chrome/Edge HTTPS page whose origin has
|
|
238
|
+
the login (separate checks, then one write: not atomic inside the browser).
|
|
239
|
+
The site receives it. The password is the protected value: it is kept out of
|
|
240
|
+
your results and that browser's pixels are withheld until this turn ends
|
|
241
|
+
(`ax` reads still work), but a page that redisplays it can expose it, and other
|
|
242
|
+
programs of the same Windows user are outside this protection. A username is
|
|
243
|
+
an identifier and is not hidden. Continue with keys (`act` key Enter). On a
|
|
244
|
+
refusal, hand the secret to the user (`ask_user` kind `secret`,
|
|
245
|
+
surface `computer`); one-time codes, passkeys, security keys and app approvals
|
|
246
|
+
are the user's step (`ask_user` kind `takeover`). Never type a password or
|
|
247
|
+
code with `type`/`set_value`, even one shown on screen.
|
|
248
|
+
|
|
225
249
|
**Keyboard-driven navigation** — `act` with `key` steps such as `ctrl+s`
|
|
226
250
|
and a trailing short `wait`; verify with `verify` rather than another capture.
|
|
227
251
|
`alt+f4` is blocked in every delivery mode. To close a window, obtain the
|
|
@@ -20,10 +20,15 @@ supported `setup` action, and read its result as the change receipt.
|
|
|
20
20
|
|
|
21
21
|
- Use the `setup` tool for persisted Mixdog configuration. Never edit
|
|
22
22
|
`mixdog-config.json` or internal stores directly; if the tool and UI expose no
|
|
23
|
-
supported path, report that limitation.
|
|
23
|
+
supported path, report that limitation. The one exception is the definition
|
|
24
|
+
file a workflow or agent `read_definition` returns as `path`.
|
|
24
25
|
- API keys, OAuth credentials, tokens, and usage sign-ins stay out of tool
|
|
25
26
|
arguments and the transcript. Open the Providers surface and let the user
|
|
26
27
|
enter them.
|
|
28
|
+
- Developer option "Allow all actions" (`allowAllActions`) can only be turned
|
|
29
|
+
on by the person in the desktop app; the tool refuses it even with
|
|
30
|
+
`riskAccepted:true`, and remote enablement is refused too. Open `developer`
|
|
31
|
+
instead.
|
|
27
32
|
- A mutation follows the active workflow's approval rules. Status, catalog,
|
|
28
33
|
definition and MCP-config reads do not change persisted settings.
|
|
29
34
|
- Most changes affect new sessions. Report `appliedToCurrentSession` and
|
|
@@ -58,6 +63,28 @@ that a call returned without transport error.
|
|
|
58
63
|
- Read `references/surfaces.md` only when the user asks where a setting lives,
|
|
59
64
|
a secret must be entered, or no setup mutation exists.
|
|
60
65
|
|
|
66
|
+
## What applies now vs. later
|
|
67
|
+
|
|
68
|
+
- Now: built-in, connector, permission, hook-rule, cache-warming and
|
|
69
|
+
automation changes (each at its next use), and a fallback chain: running
|
|
70
|
+
sessions on that route read it at their next hop.
|
|
71
|
+
- Next turn: an agent/bot route for its open chats, `reset_route_fallback`, a
|
|
72
|
+
workflow switch. A running turn finishes on its current model.
|
|
73
|
+
- New sessions: the Main model (`set_route` model), instruction files, most
|
|
74
|
+
other settings. An established conversation keeps its model.
|
|
75
|
+
- Session actions (`reset_route_fallback`, quota resume, `continue_in_model`)
|
|
76
|
+
answer `scope: "session"`, not a saved setting.
|
|
77
|
+
|
|
78
|
+
## Stopping something already running
|
|
79
|
+
|
|
80
|
+
Setup changes settings; it does not stop work. Use the tool that owns it:
|
|
81
|
+
`session` `cancel` (another session's turn, a routine run in a bot's chat, a
|
|
82
|
+
group room's exchange; a Browser/Computer takeover ends with its turn),
|
|
83
|
+
`agent` `cancel`/`close` (sub-agents), `task` (background shell jobs), `goal`
|
|
84
|
+
`pause` (an active Goal, at the user's request). Setup only prevents more: `set_automation_enabled false`
|
|
85
|
+
(future routine runs), `fallbacks: []` (further hops), `cancel_quota_resume`,
|
|
86
|
+
`set_builtin_enabled` browser/computer off.
|
|
87
|
+
|
|
61
88
|
## High-signal distinctions
|
|
62
89
|
|
|
63
90
|
- Main model, agent models, and Web Search model are separate routes. Omitted
|
|
@@ -70,7 +97,7 @@ that a call returned without transport error.
|
|
|
70
97
|
background cycles. Core Memory entries
|
|
71
98
|
are read and changed with the `memory` tool, not setup.
|
|
72
99
|
- Built-ins have installation state separate from enabled state; Visualize
|
|
73
|
-
|
|
100
|
+
(on by default) and Media generation are toggle-only (no install step). Browser Use,
|
|
74
101
|
Computer Use actions require this conversation open in the local Desktop
|
|
75
102
|
window; voice runs on the runtime and needs no Desktop.
|
|
76
103
|
- Hook rules are before-tool policy, separate from MCP and plugins. Deleting a
|
|
@@ -24,18 +24,21 @@ Read this when choosing a `setup` mutation.
|
|
|
24
24
|
|---|---|
|
|
25
25
|
| Main model route | `set_route` |
|
|
26
26
|
| Agent-specific route or inheritance | `set_agent_route` |
|
|
27
|
-
| Web Search model route | `set_web_search_route` |
|
|
27
|
+
| Web Search model route (and its `route.fallbacks`) | `set_web_search_route` |
|
|
28
28
|
| Active workflow pack | `set_workflow` |
|
|
29
29
|
| Output style | `set_output_style` |
|
|
30
30
|
| User title, language, or experience level | `set_profile` |
|
|
31
31
|
| Idle session clearing, per provider, including `unlimited` | `set_autoclear` |
|
|
32
|
-
| Automatic context compaction | `set_compaction` |
|
|
32
|
+
| Automatic context compaction, compaction on model change, summary model | `set_compaction` |
|
|
33
|
+
| Context → Let AI rename sessions | `set_ai_session_titles` |
|
|
34
|
+
| Providers → Usage limits → Resume automatically when the limit resets | `set_quota_auto_resume` |
|
|
35
|
+
| Model management: "Show in /model" and favorites, per provider model | `set_model_preferences` |
|
|
33
36
|
| Memory capability | `set_memory_enabled` |
|
|
34
37
|
| Background memory cycles | `set_recap_enabled` |
|
|
35
38
|
| Web Search tool exposure | `set_web_search_enabled` |
|
|
36
39
|
| Which user instruction files (AGENTS.md / CLAUDE.md) new sessions load: all, agents, claude, or off | `set_instruction_files` |
|
|
37
40
|
| The reasoning effort Auto works around: low, medium (default), or high | `set_auto_effort_base` |
|
|
38
|
-
| Git, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, voice, or
|
|
41
|
+
| Git, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, voice, Visualize, or Media generation enabled state | `set_builtin_enabled` |
|
|
39
42
|
| Git, Memory, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, or voice preparation | `install_builtin` |
|
|
40
43
|
| Managed local model installation | `install_local_model` |
|
|
41
44
|
| Start or resume a background runtime/model download | `start_local_installation` |
|
|
@@ -49,11 +52,14 @@ Read this when choosing a `setup` mutation.
|
|
|
49
52
|
| Permanently delete confirmed, unchanged, unused model files | `delete_local_model` |
|
|
50
53
|
| TUI system shell | `set_system_shell` |
|
|
51
54
|
| Automatic updates | `set_auto_update` |
|
|
55
|
+
| Mixy's heartbeat: a regular check that wakes her only when something needs attention and only after the user had no operation for 30 minutes (no sent turn, no keyboard/mouse/wheel input in the desktop app's windows) (on by default; `status features` reports `heartbeat.enabled` and `heartbeat.intervalMinutes`) | `set_heartbeat_enabled` |
|
|
56
|
+
| How often the heartbeat checks: `minutes` 30, 60 (default), 120 or 240; applies from the next tick, counted from the last check | `set_heartbeat_interval` |
|
|
57
|
+
| Bots' emoji reactions on the user's messages (on by default; `status features` reports `reactions.enabled`) | `set_reactions_enabled` |
|
|
52
58
|
| Worktree defaults: new tasks on the current branch or a new worktree, branch prefix, large-repository warning size, automatic cleanup | `set_worktree_settings` |
|
|
53
|
-
| Remove stored provider authentication (one OAuth account at a time) | `forget_provider_auth` |
|
|
54
|
-
| Select, rename, or reorder OAuth accounts, set the switching policy, or allow paid credits | `set_provider_account` |
|
|
55
|
-
| Developer options
|
|
56
|
-
| Connect a catalog service (Notion, Linear, Gmail, …; not GitHub, which is the GitHub CLI) for the user: shows a
|
|
59
|
+
| Remove stored provider authentication (one OAuth account at a time, or an API-key provider's key) | `forget_provider_auth` |
|
|
60
|
+
| Select, rename, or reorder OAuth accounts, set automatic switching or the switching policy, or allow paid credits | `set_provider_account` |
|
|
61
|
+
| Developer options (approvals, risk-gated providers); `allowAllActions` can only be turned off | `set_developer_option` |
|
|
62
|
+
| Connect a catalog service (Notion, Linear, Gmail, …; not GitHub, which is the GitHub CLI) for the user: shows a connect card (sign-in, key sheet, or app-password dialog) | `connect_connector` |
|
|
57
63
|
| Add an MCP server | `add_mcp_server` |
|
|
58
64
|
| Edit or rename an MCP server | `save_mcp_server` |
|
|
59
65
|
| Remove an MCP server | `remove_mcp_server` |
|
|
@@ -78,17 +84,28 @@ Read this when choosing a `setup` mutation.
|
|
|
78
84
|
| Enable/disable (pause/resume) a schedule/webhook | `set_automation_enabled` |
|
|
79
85
|
| Run a schedule once now, or re-run a webhook on its latest received payload; the result posts into the owning agent's thread | `run_automation` |
|
|
80
86
|
| Webhook listener enabled state, port, or domain | `set_webhook_config` |
|
|
81
|
-
| Desktop keep-awake, run in background after window close, turn-completion notifications, notification volume (Windows), usage pin, usage rail short + long bars,
|
|
82
|
-
| Desktop theme, imported color theme, UI/code font, skin transparency (outer or main panels), display language, side panels, markdown default view, link previews, or tool activity expansion | `set_appearance` |
|
|
87
|
+
| Desktop keep-awake, run in background after window close, turn-completion notifications, notification volume (Windows), usage pin, usage rail short + long bars, expanded usage accounts, usage rail slots (three / all), Computer observe-only, Browser auto sign-in, or the representative bot overlay (`desktop.botOverlay`) | `set_desktop_settings` |
|
|
88
|
+
| Desktop theme, imported color theme, UI/code font, UI scale, code size and ligatures, chat text size, skin transparency (outer or main panels), display language, time format, side panels and their position, markdown default view, link previews, or tool activity expansion | `set_appearance` |
|
|
83
89
|
| Add a before-tool hook rule | `add_hook_rule` |
|
|
84
90
|
| Enable or disable a hook rule by its `status hooks` index | `set_hook_rule_enabled` |
|
|
85
91
|
| Delete a hook rule by its `status hooks` index | `delete_hook_rule` |
|
|
86
|
-
|
|
|
92
|
+
| Settings "Default generator" pin per kind (image/video): lane, model, account; `lane: ""` clears it (Auto) | `set_media_default` |
|
|
87
93
|
| Which activity rail items are pinned, in order (current list in `status desktop`) | `set_activity_rail_pins` |
|
|
88
94
|
| Register a Project and optionally set its display alias | `save_project` |
|
|
89
95
|
| Unregister a Project without deleting its files | `remove_project` |
|
|
90
96
|
| Revoke one linked device by its client id from `status connection`; re-pairing restores access | `revoke_linked_device` |
|
|
91
97
|
| Managed local model context allocation; null restores automatic | `set_local_context` |
|
|
98
|
+
| Return a session that fell back (this one by default, `sessionId`, or every chat of a bot with `agent`) to its primary route and chain | `reset_route_fallback` |
|
|
99
|
+
| Switch a session whose last turn stopped on a usage limit onto another model (`sessionId`, `route`) | `continue_in_model` |
|
|
100
|
+
| Resend a usage-limit-stopped turn of a session at its reset time, or drop that pending resume | `schedule_quota_resume`, `cancel_quota_resume` |
|
|
101
|
+
| Prompt-cache warming on/off (`status compaction` `promptCacheWarming`) | `set_cache_warming_enabled` |
|
|
102
|
+
| Read an agent's action permissions, connector switches and always-allowed tools | `read_agent_settings` |
|
|
103
|
+
| Read a Project's connector switches | `read_project_connectors` |
|
|
104
|
+
| An agent's action permission (block/ask per action kind) | `set_agent_permission` |
|
|
105
|
+
| Switch a connector off for an agent / a Project (switching it back on is done in the desktop app) | `set_agent_connector`, `set_project_connector` |
|
|
106
|
+
| One connector tool of an agent to needs_approval or disabled | `set_agent_connector_tool` |
|
|
107
|
+
| Bring back an archived bot or agent (`definitionKind: "agent"`) | `restore_definition` |
|
|
108
|
+
| Bot display order (Bots page, Sessions bot section; `status agents` `botOrder`) | `set_bot_order` |
|
|
92
109
|
|
|
93
110
|
## Routes and workflow
|
|
94
111
|
|
|
@@ -108,6 +125,11 @@ workflow` before changing the corresponding domain.
|
|
|
108
125
|
- A Web Search route must support native web search; tool exposure is changed
|
|
109
126
|
separately.
|
|
110
127
|
- Definition actions use `definitionKind` (workflow, agent, skill).
|
|
128
|
+
A workflow or agent `read_definition` returns `path` when a user copy exists:
|
|
129
|
+
to change part of its body, edit that file with the ordinary file edit tool
|
|
130
|
+
instead of re-sending the whole body; keep its frontmatter as it is. Without
|
|
131
|
+
`path` (a shipped-only definition), make the change with `save_definition`:
|
|
132
|
+
a save equal to the shipped copy keeps no user file.
|
|
111
133
|
Workflow/agent ids cannot be renamed through
|
|
112
134
|
a save; change their display name instead. User skills may be renamed with
|
|
113
135
|
`originalName` and `name`. A user skill's trigger line (`when_to_use`) is
|
|
@@ -121,8 +143,22 @@ workflow` before changing the corresponding domain.
|
|
|
121
143
|
- Changing orchestration does not rewrite workflow instructions or agents.
|
|
122
144
|
- `set_route` is the Lead default for new sessions. A model chosen in New Task
|
|
123
145
|
changes that default only when the user actually picks one there.
|
|
124
|
-
`route.fallbacks` (ordered models on
|
|
125
|
-
|
|
146
|
+
`route.fallbacks` (ordered models, each on a different provider from the
|
|
147
|
+
primary and the others; `[]` clears) works the same on `set_route` (Lead),
|
|
148
|
+
`set_agent_route` (agents and bots, Mixy included) and `set_web_search_route`.
|
|
149
|
+
Running sessions on that route read the chain at their next hop: an edit
|
|
150
|
+
applies at once, and `[]` stops further hops, so the turn ends with the
|
|
151
|
+
provider's own limit error. A session on another model follows no chain.
|
|
152
|
+
`status model` returns `route.autoEffort`, `route.fallbacks`, and the
|
|
153
|
+
position of this conversation (`session`) and other Lead conversations
|
|
154
|
+
(`sessions`): `current` vs `primary`, `onPrimary`, `fallbackIndex`, the
|
|
155
|
+
`fallbacks` it follows now, `next`, and `failures` (why it left each model);
|
|
156
|
+
`status agents` `sessions` gives the same for bot chats and sub-agents. A
|
|
157
|
+
session that fell back stays there until `reset_route_fallback` returns it
|
|
158
|
+
to its primary from its next turn (chain restarted).
|
|
159
|
+
- Session actions on another session need the Mixdog app or daemon to host
|
|
160
|
+
it; a bot's thread reaches only its own bot's sessions. `continue_in_model`
|
|
161
|
+
does not resend the stopped turn: the user resumes it there.
|
|
126
162
|
- A workflow switch reaches a running conversation as a reminder on its next
|
|
127
163
|
turn (the cached prompt is not swapped). A bot definition's instruction,
|
|
128
164
|
persona or name applies when the user presses 적용, with one cache break.
|
|
@@ -138,7 +174,21 @@ key's source.
|
|
|
138
174
|
|
|
139
175
|
- API-key and OAuth providers: `open providers`, then the user completes
|
|
140
176
|
authentication in the visible UI.
|
|
141
|
-
-
|
|
177
|
+
- An SSH server's models run on this PC's logins by default. A server can use
|
|
178
|
+
its own instead (Settings → Connection → the server → Model login → Server
|
|
179
|
+
accounts); its logins are then managed in "Manage server logins" (a
|
|
180
|
+
subscription login opens in this PC's browser; an API key is stored on the
|
|
181
|
+
server, in an owner-only private file where it has no keychain, as on
|
|
182
|
+
Linux). No setup action exists for this. Changing the model login restarts
|
|
183
|
+
the server's Mixdog and stops its running sessions, so say so before the
|
|
184
|
+
user confirms. The login key file (Advanced options of the connect dialog,
|
|
185
|
+
or the server's settings) is also UI-only; it applies to every connection
|
|
186
|
+
to that server. The connect dialog refuses a different key or folder for a
|
|
187
|
+
server that is connected already (disconnect first); the server's own
|
|
188
|
+
settings accept and save a changed key file while connected, and it applies
|
|
189
|
+
from the next connection.
|
|
190
|
+
- Custom providers are registered, edited (non-secret fields too), tested, and
|
|
191
|
+
removed in the Providers UI; no setup action exists yet;
|
|
142
192
|
`status providers` with `detail: true` lists them as API rows with `custom: true`.
|
|
143
193
|
Their model list (Nano-GPT included) loads there with up to a 60 s wait; the
|
|
144
194
|
user can skip it and type model ids by hand.
|
|
@@ -148,9 +198,11 @@ key's source.
|
|
|
148
198
|
and recovery. Its narrow status domain exposes installed models and progress;
|
|
149
199
|
the detail dialog lists installed models rather than the download catalog.
|
|
150
200
|
- Forgetting authentication is destructive and requires explicit approval.
|
|
151
|
-
It removes one OAuth account
|
|
152
|
-
`accountId` from the account list in `status providers` with `detail: true
|
|
153
|
-
|
|
201
|
+
It removes one OAuth account (a provider with several accounts requires
|
|
202
|
+
`accountId` from the account list in `status providers` with `detail: true`)
|
|
203
|
+
or an API-key provider's key (no `accountId`).
|
|
204
|
+
- `set_provider_account` changes the selected account, automatic switching
|
|
205
|
+
when one is exhausted (`auto`), paid-credit use after
|
|
154
206
|
plan limits (`useCredits`), account order (every account id exactly once),
|
|
155
207
|
an account label, or the switching `policy`: `manual` stays on the selected
|
|
156
208
|
account, `limit` switches when it hits a limit, `headroom` starts each new
|
|
@@ -159,7 +211,14 @@ key's source.
|
|
|
159
211
|
happens in the Providers UI.
|
|
160
212
|
- `status developer` lists developer options. An option with a `warning` is
|
|
161
213
|
enabled only after the user explicitly accepts that warning, passed as
|
|
162
|
-
`riskAccepted:true`; never assume acceptance.
|
|
214
|
+
`riskAccepted:true`; never assume acceptance. `allowAllActions` ("Allow all
|
|
215
|
+
actions") can be turned off here, but turning it on is refused even then:
|
|
216
|
+
only the person turns it on, so `open developer`.
|
|
217
|
+
- `set_quota_auto_resume` is read back as `quotaAutoResume` in `status
|
|
218
|
+
providers`; turning it off cancels pending resumes.
|
|
219
|
+
- `set_model_preferences` (`hidden`, `favorite`; omitted = unchanged) matches
|
|
220
|
+
Model management. `list_models` rows show `hidden` / `favorite`; a hidden
|
|
221
|
+
custom-provider model no longer appears in `list_models`.
|
|
163
222
|
|
|
164
223
|
## Profile, session, and Memory
|
|
165
224
|
|
|
@@ -184,7 +243,11 @@ key's source.
|
|
|
184
243
|
window, e.g. DeepSeek 24h; 1h for Codex/ChatGPT logins); unlimited does not
|
|
185
244
|
disable it.
|
|
186
245
|
- Compaction supports `enabled` and a `compaction` object with either
|
|
187
|
-
`mainBufferTokens` or `mainBufferPercent
|
|
246
|
+
`mainBufferTokens` or `mainBufferPercent` (changing representation replaces
|
|
247
|
+
the previous budget), `onModelChange` (compact before switching models) and
|
|
248
|
+
`summaryMode`: `smart`, `maintainer`, or `self` (Conversation model).
|
|
249
|
+
`status compaction` returns them plus `aiSessionTitles`
|
|
250
|
+
(`set_ai_session_titles`).
|
|
188
251
|
- If no supported action exposes a requested Memory interval, report it as
|
|
189
252
|
unavailable rather than editing configuration.
|
|
190
253
|
|
|
@@ -209,8 +272,8 @@ markers are read with `status desktop`.
|
|
|
209
272
|
reasoning effort with a local judge model downloaded in the background.
|
|
210
273
|
Enabling or installing it fails on unsupported machines; `status features`
|
|
211
274
|
reports `supported`, `installing` (judge download running) and `ready`.
|
|
212
|
-
- Visualize
|
|
213
|
-
`install_builtin` does not accept
|
|
275
|
+
- Visualize (on by default) and Media generation are toggle-only through
|
|
276
|
+
`set_builtin_enabled`; `install_builtin` does not accept them.
|
|
214
277
|
- Terminal follows the live Desktop terminal bridge and has no toggle.
|
|
215
278
|
- Environment feature overrides (`MIXDOG_FEATURE_*`) win over these toggles;
|
|
216
279
|
they are diagnostics for headless or benchmark environments, not user
|
|
@@ -237,9 +300,13 @@ markers are read with `status desktop`.
|
|
|
237
300
|
named rule; disabling with `set_hook_rule_enabled` preserves it.
|
|
238
301
|
- Hook rule changes apply to open sessions and their sub-agents on the next
|
|
239
302
|
tool call; no new session or restart is needed.
|
|
240
|
-
- `status media`
|
|
241
|
-
|
|
242
|
-
|
|
303
|
+
- `status media` returns `pinned` and `remembered` ({image, video} each). The
|
|
304
|
+
pin is the Settings "Default generator"; the remembered entry is the last-used
|
|
305
|
+
generator, and the pin wins over it. A generation naming no lane/model uses
|
|
306
|
+
the pin, else the remembered one. `set_media_default` takes
|
|
307
|
+
`{kind, lane, model?, accountId?}` and accepts only a signed-in lane that
|
|
308
|
+
offers the kind (and the model, when given) in the live media catalog; the
|
|
309
|
+
media tool's `list` reads that catalog. `lane: ""` clears the pin (Auto).
|
|
243
310
|
|
|
244
311
|
## Skills, MCP, and plugins
|
|
245
312
|
|
|
@@ -272,10 +339,17 @@ markers are read with `status desktop`.
|
|
|
272
339
|
`declarationErrors` and `warnings`.
|
|
273
340
|
- `connect_connector` is how to connect a catalog service the user asks for
|
|
274
341
|
("Slack 연결해 줘"): it leaves a connect card in the conversation whose
|
|
275
|
-
press runs the
|
|
276
|
-
connects until the user presses it, so tell them to press the card and read
|
|
342
|
+
press runs the service's sign-in, key sheet or (Gmail: app password only)
|
|
343
|
+
dialog in Desktop; nothing connects until the user presses it, so tell them to press the card and read
|
|
277
344
|
`status mcp` afterwards. `add_mcp_server` with the service URL is not the
|
|
278
345
|
sign-in flow; never use it for a catalog service.
|
|
346
|
+
- Agent permissions and connector switches change only toward less: `block`
|
|
347
|
+
or `ask`, a connector off, a tool to `needs_approval`/`disabled`. Anything
|
|
348
|
+
that lets an agent do more without asking (`allow`, a connector back on, a
|
|
349
|
+
tool to `auto`) is refused ("make it on the desktop"); `open agents` and let
|
|
350
|
+
the person do it. Payments and permanent deletes always ask regardless.
|
|
351
|
+
Connector ids are MCP server names from `read_agent_settings`; a bot's
|
|
352
|
+
thread changes only its own bot.
|
|
279
353
|
- `enable_plugin_mcp` turns every server the plugin declares back on and
|
|
280
354
|
reconnects them; a disabled plugin stays disabled, and it fails for a plugin
|
|
281
355
|
that declares no MCP servers.
|
|
@@ -285,7 +359,9 @@ markers are read with `status desktop`.
|
|
|
285
359
|
- `status capabilities` lists supported actions and deliberate handoffs.
|
|
286
360
|
- Desktop-only operations require the owning conversation visible in the local
|
|
287
361
|
Desktop app. Never claim a persisted change from merely delivering a request.
|
|
288
|
-
- A display-language change returns `requiresReload
|
|
362
|
+
- A display-language change returns `requiresReload`; so does a changed
|
|
363
|
+
`timeFormat` (already-shown times update after the window reloads, which is
|
|
364
|
+
never automatic).
|
|
289
365
|
- `set_appearance` also takes `uiFont` / `codeFont` (a family name, `""` =
|
|
290
366
|
built-in; text it lacks falls back to the built-in fonts), skin transparency
|
|
291
367
|
(0–100, defaults outer 20 / main 40; higher shows more of the skin picture):
|
|
@@ -293,12 +369,25 @@ markers are read with `status desktop`.
|
|
|
293
369
|
`skinMainTransparency` (conversation area and its cards), or `skinTransparency`
|
|
294
370
|
to set both; and `colorTheme`
|
|
295
371
|
(an imported theme id from `status appearance` `colorThemes`, or `"builtin"`).
|
|
296
|
-
|
|
297
|
-
|
|
372
|
+
Also `timeFormat` (system|12h|24h), `sidePanelPosition` (right|bottom|auto),
|
|
373
|
+
`uiScale` (0.85–1.2, step 0.05), `codeSize` (10–20), `codeLigatures`
|
|
374
|
+
(bool) and `chatTextSize` (small|default|large|extra-large). The UI label
|
|
375
|
+
"Light" is `theme: "white"`.
|
|
376
|
+
Importing, exporting or removing a theme file and choosing a skin picture
|
|
377
|
+
or its plate/accent/photo stay in the UI.
|
|
378
|
+
- `set_desktop_settings` `desktop.botOverlay` takes `enabled`, `position`
|
|
379
|
+
(`pinned` above the message box, `pinnedHere`, `free` in the app window,
|
|
380
|
+
`onScreen` free on screen), `keepAbove`, `collapsed`, `autoAdvance`,
|
|
381
|
+
`autoClose` and `scale` (50–200, step 10). Enabling needs the
|
|
382
|
+
representative bot; `status desktop` returns `botOverlay`. Reset position
|
|
383
|
+
stays in the UI.
|
|
298
384
|
- A Project removal unregisters it only.
|
|
299
385
|
- Inspect schedules/webhooks before editing. `overwrite:true` updates an
|
|
300
386
|
existing named entry and preserves omitted fields; a new schedule needs
|
|
301
387
|
instructions and exactly one of cron `time` or one-shot `at`.
|
|
388
|
+
- Routine instructions say what to check and report; add a reply format only
|
|
389
|
+
when the user asks. Never add a "nothing new" line ("say 변동 없음"): a run
|
|
390
|
+
with nothing to tell stays silent on its own.
|
|
302
391
|
- Attachment contents and webhook signing secrets are not returned by setup.
|
|
303
392
|
Omitted attachments and existing webhook secrets are preserved. A saved
|
|
304
393
|
secret is never shown again: tell the user to open the Webhooks panel, edit
|