mixdog 1.4.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/scripts/build-shipped-history.mjs +115 -33
- package/scripts/check-voice-runtime-inputs.mjs +25 -0
- package/scripts/gate-local.mjs +183 -63
- package/scripts/latest-guard.mjs +21 -9
- package/scripts/lib/gate-scheduler.mjs +138 -32
- package/scripts/lib/gate-timing-reporter.mjs +16 -0
- package/scripts/lib/isolated-test-env.mjs +10 -5
- package/scripts/lib/run-node-tests.mjs +91 -66
- package/scripts/lib/scoped-temp.d.mts +16 -0
- package/scripts/lib/scoped-temp.mjs +124 -0
- package/scripts/lib/stale-temp.mjs +44 -0
- package/scripts/lib/test-failure-records.mjs +14 -1
- package/scripts/lib/test-failure-summary.mjs +16 -4
- package/scripts/lib/test-spawn-ledger.mjs +12 -3
- package/scripts/post-release-check.mjs +1 -6
- package/scripts/pptx-kit-index.mjs +17 -5
- package/scripts/suite-health.mjs +115 -24
- package/scripts/test-data-dir.mjs +10 -7
- package/scripts/test.mjs +9 -14
- package/src/agents/advisor/AGENT.md +4 -4
- package/src/agents/advisor/agent.json +1 -1
- package/src/agents/explore/AGENT.md +22 -0
- package/src/agents/explore/agent.json +6 -0
- package/src/app.mjs +4 -0
- package/src/cli.mjs +7 -0
- package/src/defaults/agents.json +7 -0
- package/src/defaults/shipped-history.json +23 -2
- package/src/defaults/skills/browser-use/SKILL.md +10 -5
- package/src/defaults/skills/code-tidy/SKILL.md +71 -102
- package/src/defaults/skills/code-tidy/references/agent-cleanup.md +66 -114
- package/src/defaults/skills/code-tidy/references/cleanup-report.md +19 -35
- package/src/defaults/skills/code-tidy/references/dead-code.md +3 -9
- package/src/defaults/skills/code-tidy/references/test-suite-slop.md +16 -27
- package/src/defaults/skills/computer-use/SKILL.md +16 -4
- package/src/defaults/skills/goal-management/SKILL.md +1 -1
- package/src/defaults/skills/setup/references/actions.md +12 -6
- package/src/defaults/skills/setup/references/surfaces.md +2 -2
- package/src/defaults/skills/setup-guide/SKILL.md +5 -2
- package/src/defaults/skills/setup-guide/model-recommendations.json +13 -0
- package/src/defaults/skills/skill-creator/SKILL.md +85 -190
- package/src/defaults/skills/skill-creator/references/design.md +70 -162
- package/src/defaults/skills/skill-creator/references/evaluation.md +33 -92
- package/src/defaults/skills/test-suite/SKILL.md +194 -0
- package/src/defaults/skills/test-suite/references/case-management.md +51 -0
- package/src/defaults/skills/test-suite/references/flaky-policy.md +39 -0
- package/src/defaults/skills/test-suite/references/reliability.md +49 -0
- package/src/defaults/skills/test-suite/references/suite-design.md +78 -0
- package/src/defaults/skills/test-suite/scripts/inventory.mjs +335 -0
- package/src/defaults/skills/visualize/SKILL.md +6 -2
- package/src/lib/rules-builder.cjs +35 -42
- package/src/output-styles/common.md +2 -2
- package/src/output-styles/simple.md +1 -1
- package/src/rules/agent/AGENT.md +5 -4
- package/src/rules/lead/LEAD.md +12 -7
- package/src/rules/shared/10-tool-workflow.md +3 -1
- package/src/rules/shared/20-research.md +3 -6
- package/src/rules/shared/40-editing.md +1 -0
- package/src/rules/shared/45-destructive.md +0 -2
- package/src/rules/shared/50-execution.md +2 -0
- package/src/rules/shared/60-verification.md +10 -9
- package/src/rules/shared/70-delivery.md +8 -9
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/abort-link.mjs +5 -1
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +10 -1
- package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +156 -24
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +13 -0
- package/src/runtime/agent/orchestrator/agent-runtime/maintenance-route.mjs +4 -1
- package/src/runtime/agent/orchestrator/cache-break-trace.mjs +2 -0
- package/src/runtime/agent/orchestrator/config.mjs +12 -7
- package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +8 -8
- package/src/runtime/agent/orchestrator/context/role-instructions.mjs +5 -26
- package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +3 -1
- package/src/runtime/agent/orchestrator/internal-agents.mjs +3 -14
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +122 -12
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +5 -3
- package/src/runtime/agent/orchestrator/mcp/client-config.mjs +13 -2
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +152 -58
- package/src/runtime/agent/orchestrator/mcp/client.mjs +51 -18
- package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +88 -54
- package/src/runtime/agent/orchestrator/mcp/oauth.mjs +42 -26
- package/src/runtime/agent/orchestrator/providers/account-pool.mjs +54 -8
- package/src/runtime/agent/orchestrator/providers/anthropic-api-recovery.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +37 -31
- package/src/runtime/agent/orchestrator/providers/anthropic-api-transport.mjs +8 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens-recovery.mjs +6 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +31 -21
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request/initial-status.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +14 -3
- package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +6 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-turn-result.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/command-code-oauth-login.mjs +1 -10
- package/src/runtime/agent/orchestrator/providers/command-code-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/cursor.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +40 -0
- package/src/runtime/agent/orchestrator/providers/custom-provider-keys.mjs +34 -0
- package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/devin-auth.mjs +14 -7
- package/src/runtime/agent/orchestrator/providers/devin-wire-transport.mjs +3 -2
- package/src/runtime/agent/orchestrator/providers/devin.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +248 -41
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-prefix-trace.mjs +76 -11
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +45 -6
- package/src/runtime/agent/orchestrator/providers/lib/first-output-window.mjs +58 -0
- package/src/runtime/agent/orchestrator/providers/lib/listen-on.mjs +14 -0
- package/src/runtime/agent/orchestrator/providers/lib/oauth-page.mjs +0 -18
- package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +138 -6
- package/src/runtime/agent/orchestrator/providers/mimo-oauth-login.mjs +1 -10
- package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/model-cache.mjs +100 -33
- package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/oauth-secret-fields.fixtures.mjs +45 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/chunk-events.mjs +9 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +7 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +14 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-events.mjs +4 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream-common.mjs +5 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +16 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai-send.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events/output-items.mjs +5 -2
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events.mjs +13 -3
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state.mjs +13 -2
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-watchdogs.mjs +81 -42
- package/src/runtime/agent/orchestrator/providers/openai-oauth-http-sse.mjs +8 -0
- package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +160 -31
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream/event-switch.mjs +22 -12
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream.mjs +7 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws-watchdogs.mjs +49 -22
- package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/registry.mjs +45 -2
- package/src/runtime/agent/orchestrator/providers/vertex-ai-auth.mjs +622 -0
- package/src/runtime/agent/orchestrator/providers/vertex-ai-maas.mjs +185 -0
- package/src/runtime/agent/orchestrator/providers/vertex-ai-models.mjs +445 -0
- package/src/runtime/agent/orchestrator/providers/vertex-ai.mjs +567 -0
- package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +41 -13
- package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +2 -0
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +8 -6
- package/src/runtime/agent/orchestrator/runtime-core/session-text.mjs +7 -3
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +3 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +6 -1
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +14 -5
- package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +1 -0
- package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +5 -2
- package/src/runtime/agent/orchestrator/session/agent-room.d.mts +30 -5
- package/src/runtime/agent/orchestrator/session/agent-room.mjs +171 -37
- package/src/runtime/agent/orchestrator/session/cache/scoped-cache.mjs +1 -3
- package/src/runtime/agent/orchestrator/session/cache-warm.mjs +102 -12
- package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +1 -8
- package/src/runtime/agent/orchestrator/session/compact/messages.mjs +23 -0
- package/src/runtime/agent/orchestrator/session/compact/observation-supersession.mjs +103 -23
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +160 -36
- package/src/runtime/agent/orchestrator/session/context-utils.mjs +13 -1
- package/src/runtime/agent/orchestrator/session/conversation-import/claude.mjs +164 -23
- package/src/runtime/agent/orchestrator/session/conversation-import/codex.mjs +139 -19
- package/src/runtime/agent/orchestrator/session/conversation-import/convert.mjs +38 -7
- package/src/runtime/agent/orchestrator/session/conversation-import/imported-session.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/conversation-import/turns.mjs +100 -22
- package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +4 -3
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +36 -6
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +33 -3
- package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +9 -2
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/provider-tool-exclusions.mjs +13 -5
- package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +14 -0
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +13 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +23 -4
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +23 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +39 -21
- package/src/runtime/agent/orchestrator/session/loop/turn-limits.mjs +13 -8
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +50 -28
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/manager/route-fallback-chain.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +30 -13
- package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +63 -6
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +7 -0
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +15 -0
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +35 -13
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +24 -14
- package/src/runtime/agent/orchestrator/session/manager/session-scratch-environment.mjs +70 -0
- package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +0 -3
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +10 -6
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-context.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +56 -29
- package/src/runtime/agent/orchestrator/session/manager/turn-reap.mjs +125 -0
- package/src/runtime/agent/orchestrator/session/mixy-name.mjs +11 -5
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +5 -1
- package/src/runtime/agent/orchestrator/session/prompt-cache-touch-store.mjs +30 -7
- package/src/runtime/agent/orchestrator/session/restart-prefix-parity.fixture.mjs +154 -0
- package/src/runtime/agent/orchestrator/session/store/session-delete.mjs +7 -0
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/store-summary-fields.mjs +15 -0
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +37 -8
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +252 -39
- package/src/runtime/agent/orchestrator/session/store-transcript-cache.mjs +163 -64
- package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +164 -4
- package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +142 -18
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +61 -2
- package/src/runtime/agent/orchestrator/stall-policy.mjs +23 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +6 -2
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/invocation-plan.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/spawn-env.mjs +4 -2
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +6 -1
- package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +46 -20
- package/src/runtime/agent/orchestrator/tools/builtin/cache-layers.mjs +7 -1
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +67 -31
- package/src/runtime/agent/orchestrator/tools/builtin/git-worktree-tool.mjs +25 -13
- package/src/runtime/agent/orchestrator/tools/builtin/lib/scoped-search-flight.mjs +9 -5
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +58 -20
- package/src/runtime/agent/orchestrator/tools/builtin/read-single-stream.mjs +7 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +6 -3
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-dispatch.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-publication.mjs +23 -12
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-snapshot.mjs +6 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool.mjs +1 -8
- package/src/runtime/agent/orchestrator/tools/builtin/runtime-capabilities.mjs +20 -15
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +96 -20
- package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +59 -10
- package/src/runtime/agent/orchestrator/tools/code-graph/dispatch/federation.mjs +3 -1
- package/src/runtime/agent/orchestrator/tools/code-graph-tool-defs.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
- package/src/runtime/agent/orchestrator/tools/lib/isolated-test-env.mjs +4 -3
- package/src/runtime/agent/orchestrator/tools/lib/native-spawn-client.mjs +99 -2
- package/src/runtime/agent/orchestrator/tools/lib/owned-shell-trees.mjs +2 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +103 -13
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +3 -1
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +49 -15
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +45 -27
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +34 -10
- package/src/runtime/agent/orchestrator/tools/lib/shell-warm-standby.mjs +28 -4
- package/src/runtime/agent/orchestrator/tools/lib/wait-until-fixture.mjs +26 -0
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +7 -2
- package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +13 -13
- package/src/runtime/channels/lib/webhook/signature.mjs +4 -1
- package/src/runtime/channels/lib/whisper-port.mjs +29 -11
- package/src/runtime/channels/lib/whisper-server.mjs +10 -1
- package/src/runtime/computer-bridge/action-schema.mjs +2 -2
- package/src/runtime/computer-bridge/core-actions.mjs +2 -2
- package/src/runtime/computer-bridge/error-recovery.mjs +5 -4
- package/src/runtime/computer-bridge/linux-action-capabilities.mjs +24 -5
- package/src/runtime/computer-bridge/linux-readiness.d.mts +7 -2
- package/src/runtime/connectors/connector-accounts-mcp.mjs +236 -103
- package/src/runtime/connectors/gmail-app-password.mjs +3 -3
- package/src/runtime/explore/explorer.mjs +93 -0
- package/src/runtime/explore/tool-defs.mjs +35 -0
- package/src/runtime/explore/tool.mjs +123 -0
- package/src/runtime/local-provider/server-process.mjs +2 -1
- package/src/runtime/media/adapters/gemini-video.mjs +4 -1
- package/src/runtime/media/adapters/xai-media.mjs +2 -1
- package/src/runtime/memory/index.mjs +4 -0
- package/src/runtime/memory/lib/embedding-provider.mjs +4 -1
- package/src/runtime/memory/lib/embedding-worker.mjs +10 -3
- package/src/runtime/memory/lib/memory-action-handlers/cycle-backfill-action.mjs +1 -7
- package/src/runtime/memory/lib/memory-chunk-quality.mjs +1 -6
- package/src/runtime/office/authoring/pdf-author-action.mjs +1 -6
- package/src/runtime/office/design/design-art-direction.mjs +29 -27
- package/src/runtime/office/pdf/pdf-writer.mjs +6 -1
- package/src/runtime/office/portable/portable-snapshot-docx.mjs +7 -1
- package/src/runtime/office/portable/portable-snapshot-shared.mjs +6 -1
- package/src/runtime/office/quality/assurance-rendered.mjs +9 -2
- package/src/runtime/office/quality/assurance-structure-docx.mjs +4 -2
- package/src/runtime/office/quality/design-review.mjs +1 -5
- package/src/runtime/office/quality/document-brief.mjs +1 -5
- package/src/runtime/office/quality/forced-break-pages.mjs +9 -6
- package/src/runtime/office/quality/quality-pipeline.mjs +1 -1
- package/src/runtime/shared/agent-route-config.mjs +17 -2
- package/src/runtime/shared/atomic-file.mjs +103 -2
- package/src/runtime/shared/background-tasks.mjs +15 -6
- package/src/runtime/shared/bot-owned-work.mjs +56 -0
- package/src/runtime/shared/connector-accounts.mjs +5 -5
- package/src/runtime/shared/connector-catalog.d.mts +11 -4
- package/src/runtime/shared/connector-catalog.mjs +60 -52
- package/src/runtime/shared/custom-provider-keys.mjs +20 -0
- package/src/runtime/shared/defaults-separation.mjs +1 -4
- package/src/runtime/shared/fetch-safe-listen.d.mts +16 -0
- package/src/runtime/shared/fetch-safe-listen.mjs +50 -0
- package/src/runtime/shared/file-has-data.mjs +26 -2
- package/src/runtime/shared/file-lock.mjs +13 -15
- package/src/runtime/shared/git-launch.d.mts +9 -0
- package/src/runtime/shared/git-launch.mjs +213 -0
- package/src/runtime/shared/git-runner-worker.mjs +2 -1
- package/src/runtime/shared/handoff-artifacts.d.mts +2 -1
- package/src/runtime/shared/handoff-artifacts.mjs +18 -8
- package/src/runtime/shared/idle-auto-clear-gate.mjs +29 -7
- package/src/runtime/shared/llm/cost.mjs +11 -2
- package/src/runtime/shared/llm/http-agent.mjs +313 -29
- package/src/runtime/shared/llm/model-catalog-projection.mjs +3 -2
- package/src/runtime/shared/llm/model-catalog.mjs +46 -6
- package/src/runtime/shared/llm/provider-catalog-registry.mjs +3 -0
- package/src/runtime/shared/llm/system-proxy.mjs +452 -0
- package/src/runtime/shared/loopback-listener.mjs +25 -2
- package/src/runtime/shared/model-route-chain.d.mts +7 -2
- package/src/runtime/shared/model-route-chain.mjs +22 -4
- package/src/runtime/shared/open-url.mjs +10 -0
- package/src/runtime/shared/provider-accounts.mjs +52 -2
- package/src/runtime/shared/session-activity-signal.mjs +14 -0
- package/src/runtime/shared/session-scratch.mjs +37 -0
- package/src/runtime/shared/staged-install-worker.mjs +5 -0
- package/src/runtime/shared/staged-update.mjs +47 -2
- package/src/runtime/shared/tool-card-model/agent-surface.mjs +1 -3
- package/src/runtime/shared/tool-card-model/card-status.mjs +15 -2
- package/src/runtime/shared/tool-result-summary.mjs +1 -1
- package/src/runtime/shared/tool-surface.mjs +113 -36
- package/src/runtime/shared/tool-work-units.mjs +6 -0
- package/src/runtime/shared/turn-snapshot-store.mjs +13 -6
- package/src/runtime/shared/turn-worktree-snapshot.mjs +414 -54
- package/src/runtime/shared/worktrees/activity-gate.mjs +215 -318
- package/src/runtime/shared/worktrees/activity-ledger-worker.mjs +56 -0
- package/src/runtime/shared/worktrees/activity-ledger.mjs +391 -0
- package/src/runtime/shared/worktrees/branch-management.mjs +9 -3
- package/src/runtime/shared/worktrees/contract.mjs +4 -1
- package/src/runtime/shared/worktrees/git.mjs +72 -0
- package/src/runtime/shared/worktrees/manager.mjs +285 -168
- package/src/runtime/shared/worktrees/test-support.mjs +6 -10
- package/src/runtime/tidy/install.mjs +95 -15
- package/src/runtime/tidy/languages.mjs +17 -15
- package/src/runtime/tidy/process.mjs +7 -4
- package/src/runtime/tidy/resolve.mjs +19 -16
- package/src/runtime/tidy/runners/biome.mjs +3 -3
- package/src/runtime/tidy/tool.mjs +1 -1
- package/src/runtime/tidy/worktree.mjs +10 -6
- package/src/runtime/visualize-bridge/client.mjs +6 -1
- package/src/runtime/visualize-bridge/tool-defs.mjs +7 -2
- package/src/runtime/web-search/index.mjs +1 -1
- package/src/session-runtime/agent-home-delivery.mjs +41 -0
- package/src/session-runtime/agent-task-sessions.mjs +458 -312
- package/src/session-runtime/agent-tool-routing.mjs +8 -41
- package/src/session-runtime/boot/tools.mjs +7 -1
- package/src/session-runtime/bot-status.mjs +107 -101
- package/src/session-runtime/bot-target.mjs +38 -0
- package/src/session-runtime/channel-config-api.mjs +6 -1
- package/src/session-runtime/connector-merge-migration.mjs +18 -15
- package/src/session-runtime/conversation-import/codex-titles.mjs +88 -0
- package/src/session-runtime/conversation-import/discovery.mjs +401 -36
- package/src/session-runtime/conversation-import/service.mjs +35 -8
- package/src/session-runtime/handoff-attachments.mjs +82 -31
- package/src/session-runtime/held-requests.mjs +3 -1
- package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +12 -13
- package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +1 -0
- package/src/session-runtime/internal-tool-executor/feature-tools.mjs +2 -0
- package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +8 -0
- package/src/session-runtime/internal-tool-executor/reaction-tool.mjs +4 -1
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +145 -112
- package/src/session-runtime/lifecycle/cold-heir.mjs +11 -6
- package/src/session-runtime/lifecycle/session-catalog.mjs +9 -1
- package/src/session-runtime/lifecycle/teardown/session-close.mjs +6 -1
- package/src/session-runtime/lifecycle/teardown.mjs +1 -1
- package/src/session-runtime/mcp-glue/server-catalog.mjs +16 -10
- package/src/session-runtime/mcp-glue/server-input.mjs +4 -1
- package/src/session-runtime/mixy-heartbeat.mjs +1 -1
- package/src/session-runtime/model-route/set-route.mjs +11 -2
- package/src/session-runtime/provider-auth/login.mjs +2 -2
- package/src/session-runtime/provider-catalog-cache.mjs +82 -36
- package/src/session-runtime/provider-models/catalog-load.mjs +23 -6
- package/src/session-runtime/provider-models.mjs +4 -2
- package/src/session-runtime/resource-mcp-api.mjs +98 -35
- package/src/session-runtime/resource-mcp-connector-accounts.mjs +44 -31
- package/src/session-runtime/resource-mcp-secrets.mjs +28 -11
- package/src/session-runtime/resource-mcp-servers.mjs +5 -4
- package/src/session-runtime/resource-recall-api.mjs +6 -1
- package/src/session-runtime/runtime-feature-gates.mjs +5 -1
- package/src/session-runtime/services/agent-tool/execute.mjs +14 -9
- package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +20 -4
- package/src/session-runtime/services/agent-tool/model-select.mjs +48 -7
- package/src/session-runtime/services/agent-tool/render.mjs +71 -17
- package/src/session-runtime/services/agent-tool/send-flow.mjs +10 -2
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +8 -3
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +4 -1
- package/src/session-runtime/services/agent-tool/spawn-preset.mjs +6 -2
- package/src/session-runtime/services/agent-tool/tool-def.mjs +9 -9
- package/src/session-runtime/services/agent-watchdog-registry.mjs +32 -4
- package/src/session-runtime/services/channel-worker/daemon-spawn.mjs +2 -0
- package/src/session-runtime/services/daemon-candidate.mjs +4 -1
- package/src/session-runtime/services/memory-runtime-proxy/daemon-spawn.mjs +4 -0
- package/src/session-runtime/services/plugin-admin.mjs +10 -6
- package/src/session-runtime/services/provider-admin.mjs +283 -11
- package/src/session-runtime/session-turn-api.mjs +2 -0
- package/src/session-runtime/settings-builtin-tools-api.mjs +4 -1
- package/src/session-runtime/settings-system-api.mjs +1 -1
- package/src/session-runtime/setup-tool/agent-settings-actions.mjs +13 -3
- package/src/session-runtime/setup-tool/connector-widen-approval.mjs +96 -0
- package/src/session-runtime/setup-tool/executor.mjs +6 -2
- package/src/session-runtime/setup-tool/tool-defs.mjs +2 -1
- package/src/session-runtime/tool-policy/policy-stage.mjs +1 -0
- package/src/session-runtime/turn/agent-ops.mjs +23 -0
- package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +49 -11
- package/src/session-runtime/workflow-agents-api/agent-editor.mjs +5 -1
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +25 -5
- package/src/session-runtime/workflow-agents-api/onboarding.mjs +3 -3
- package/src/session-runtime/workspace/activity-guards.mjs +176 -0
- package/src/session-runtime/workspace/session-view.mjs +149 -0
- package/src/session-runtime/workspace/side-checkouts.mjs +203 -0
- package/src/session-runtime/workspace/transition-runner.mjs +188 -0
- package/src/session-runtime/workspace/transitions.mjs +108 -1041
- package/src/session-runtime/workspace/workspace-merge.mjs +132 -0
- package/src/session-runtime/workspace/worktree-intents.mjs +242 -0
- package/src/session-runtime/workspace/worktree-maintenance.mjs +80 -0
- package/src/session-runtime/workspace/worktree-setup.mjs +85 -0
- package/src/session-runtime/workspace/worktree-tool.mjs +73 -56
- package/src/standalone/daemon-desktop-runtime.mjs +2 -0
- package/src/standalone/daemon-session-control.mjs +169 -138
- package/src/standalone/daemon.mjs +7 -0
- package/src/standalone/desktop-service-registry.mjs +9 -0
- package/src/standalone/local-session-runtime.mjs +5 -1
- package/src/standalone/session-client/daemon-unavailable.mjs +3 -0
- package/src/standalone/session-client.mjs +5 -1
- package/src/standalone/session-frame-stream.mjs +83 -11
- package/src/standalone/session-protocol.mjs +4 -0
- package/src/standalone/session-service/agent-tree/agent-turns.mjs +16 -12
- package/src/standalone/session-service/agent-tree.mjs +45 -9
- package/src/standalone/session-service/projection/transcript-window.mjs +700 -64
- package/src/standalone/session-service/session-calls/session-action.mjs +10 -3
- package/src/standalone/session-service/session-calls/session-views.mjs +160 -104
- package/src/standalone/session-service/stored-reader.mjs +127 -40
- package/src/standalone/session-transport/client-registry/client-grace.mjs +12 -9
- package/src/tui/App.jsx +154 -164
- package/src/tui/app/app-view/floating-panel.jsx +10 -4
- package/src/tui/app/app-view/text-entry-labels.mjs +1 -0
- package/src/tui/app/clipboard.mjs +21 -10
- package/src/tui/app/model-picker/route-selection/fast-parameters.mjs +1 -3
- package/src/tui/app/model-picker/route-selection.mjs +5 -6
- package/src/tui/app/prompt-handlers/use-prompt-history-nav.mjs +1 -1
- package/src/tui/app/prompt-handlers/use-prompt-interrupt.mjs +3 -0
- package/src/tui/app/prompt-submit/provider-prompts.mjs +3 -1
- package/src/tui/app/provider-setup/api-key-actions.mjs +31 -1
- package/src/tui/app/provider-setup/oauth-actions.mjs +58 -21
- package/src/tui/app/provider-setup/provider-items.mjs +8 -2
- package/src/tui/app/provider-setup-picker.mjs +29 -18
- package/src/tui/app/shell-layout/row-budgets.mjs +12 -10
- package/src/tui/app/slash-commands.mjs +1 -0
- package/src/tui/app/slash-dispatch/session-commands.mjs +46 -0
- package/src/tui/app/slash-dispatch.mjs +1 -1
- package/src/tui/app/use-btw-panel.mjs +29 -0
- package/src/tui/app/use-context-panel-refresh.mjs +31 -0
- package/src/tui/app/use-model-catalog-cache.mjs +13 -10
- package/src/tui/app/use-mouse-input.mjs +11 -0
- package/src/tui/app/use-onboarding-start.mjs +8 -3
- package/src/tui/app/use-panel-transition.mjs +10 -1
- package/src/tui/app/use-pasted-buffers.mjs +28 -20
- package/src/tui/app/use-prompt-draft-flow.mjs +7 -0
- package/src/tui/app/use-prompt-layout-rows.mjs +3 -3
- package/src/tui/app/use-prompt-queue-history.mjs +3 -2
- package/src/tui/app/use-selection-focus.mjs +11 -2
- package/src/tui/app/use-selection-geometry.mjs +18 -9
- package/src/tui/app/use-selection-paint.mjs +4 -4
- package/src/tui/app/use-selection-stitch.mjs +3 -3
- package/src/tui/app/use-slash-palette.mjs +62 -0
- package/src/tui/app/use-terminal-chrome.mjs +2 -2
- package/src/tui/app/use-transcript-activity.mjs +47 -32
- package/src/tui/app/use-transcript-follow.mjs +12 -4
- package/src/tui/app/use-transcript-scroll.mjs +46 -17
- package/src/tui/app/use-transcript-swap-reset.mjs +27 -0
- package/src/tui/app/use-transcript-window/geometry.mjs +19 -5
- package/src/tui/app/use-transcript-window/instance-state.mjs +4 -0
- package/src/tui/app/use-transcript-window/selection-shift.mjs +5 -1
- package/src/tui/app/use-transcript-window.mjs +21 -11
- package/src/tui/app/use-tui-ready.mjs +18 -0
- package/src/tui/app/use-welcome-prompt-hint.mjs +5 -0
- package/src/tui/app/use-workflow-tab-cycle.mjs +5 -3
- package/src/tui/components/Picker.jsx +27 -3
- package/src/tui/components/QuestionPanel.jsx +13 -4
- package/src/tui/components/SignInUrl.jsx +68 -0
- package/src/tui/components/TextEntryPanel.jsx +76 -46
- package/src/tui/components/sign-in-url-layout.mjs +24 -0
- package/src/tui/dist/index.mjs +1963 -1361
- package/src/tui/session/goal-turn-state.mjs +6 -2
- package/src/tui/session/session-api/controls.mjs +4 -0
- package/src/tui/session/session-api/extensions.mjs +8 -0
- package/src/tui/session/session-api/intake/abort.mjs +2 -1
- package/src/tui/session/session-api/intake.mjs +2 -0
- package/src/tui/session/session-api/integrations.mjs +2 -2
- package/src/tui/session/session-api/routes-agent-definitions.mjs +1 -0
- package/src/tui/session/session-api/settings.mjs +2 -2
- package/src/tui/session/session-flow/queue/take-entries.mjs +11 -0
- package/src/tui/session/transcript-spill/spill-writer.mjs +15 -0
- package/src/tui/session/transcript-spill.mjs +92 -4
- package/src/tui/session/transcript-store.mjs +2 -0
- package/src/ui/statusline-agents.mjs +1 -3
- package/src/defaults/skills/skill-creator/references/source-review.md +0 -94
|
@@ -1,135 +1,87 @@
|
|
|
1
1
|
# Agent-level cleanup
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
body owns scope, order, approvals, and the list of things that are never
|
|
6
|
-
removed or renamed.
|
|
3
|
+
Owns the deletion ladder, lenses, slop categories, and risk tiers. The skill
|
|
4
|
+
body owns scope, order, approvals, and the never-remove list.
|
|
7
5
|
|
|
8
6
|
## Behavior boundary
|
|
9
7
|
|
|
10
|
-
Classify risk by evidence, not
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
`indexOf` chains, identifier-absence assertions) and record what each pins;
|
|
28
|
-
moving code across such a guard is a contract change, not a tidying.
|
|
29
|
-
|
|
30
|
-
**Dependency arrays.** A hook or watcher dependency array that contradicts its
|
|
31
|
-
own body — the body reads values the array does not key — is a defect
|
|
32
|
-
candidate, not an idiom to preserve and report. Verify reachability at the
|
|
33
|
-
producer: when the key can actually repeat (two publishers stamping
|
|
34
|
-
`Date.now()` in the same millisecond drop the second update), fix it by adding
|
|
35
|
-
the values the body reads while keeping the existing key, with a test that
|
|
36
|
-
fails without the fix, delivered as its own change set under "Bugs found".
|
|
37
|
-
When the producer makes repetition unreachable, leave the array and record that
|
|
38
|
-
evidence as `kept`.
|
|
8
|
+
Classify risk by evidence, not syntax. Equivalence includes observable outputs
|
|
9
|
+
and errors, side effects and module initialization, and any call identity,
|
|
10
|
+
receiver, or ordering consumers rely on. Removing an unused binding can remove
|
|
11
|
+
initialization; inlining a wrapper can change its call contract.
|
|
12
|
+
|
|
13
|
+
Establish equivalence from current callers, contracts, and tests that exercise
|
|
14
|
+
the affected behavior. An intended change to failures, returned values,
|
|
15
|
+
compatibility, or concurrency is RISKY: report it as a separate correction.
|
|
16
|
+
|
|
17
|
+
**Source-text guards.** Some tests assert on source text rather than behavior
|
|
18
|
+
(file reads of source paths, `indexOf` ordering chains, identifier-absence or
|
|
19
|
+
literal-presence assertions), so a move breaks them without changing behavior.
|
|
20
|
+
Search only for guards a proposed move can affect, and record what each pins.
|
|
21
|
+
Moving code across such a guard is a contract change, not a tidying.
|
|
22
|
+
|
|
23
|
+
**Dependency arrays.** A suspected correctness defect is outside cleanup;
|
|
24
|
+
report its evidence without changing behavior.
|
|
39
25
|
|
|
40
26
|
## Deletion ladder
|
|
41
27
|
|
|
42
|
-
Run
|
|
43
|
-
|
|
44
|
-
last rung goes on to the lenses.
|
|
28
|
+
Run on each selected unit before looking for smells; only code that lands on
|
|
29
|
+
the last rung goes on to the lenses.
|
|
45
30
|
|
|
46
|
-
| Rung | Question |
|
|
31
|
+
| Rung | Question | Result |
|
|
47
32
|
|---|---|---|
|
|
48
|
-
| Delete | Is there evidence the behavior is no longer needed
|
|
49
|
-
| Reuse | Does a helper
|
|
50
|
-
| Platform | Does the
|
|
51
|
-
| Simplify | It must exist
|
|
52
|
-
|
|
53
|
-
A unit replaced by one platform call is a larger and safer win than any
|
|
54
|
-
in-place cleanup; take it before analysing the unit's smells.
|
|
33
|
+
| Delete | Is there evidence the behavior is no longer needed (callers, requirements, flags, compatibility)? | remove the verified obsolete unit |
|
|
34
|
+
| Reuse | Does a repo helper already do it? | replaced by a call |
|
|
35
|
+
| Platform | Does the runtime, stdlib, or an installed dependency do it? | hand-rolled code replaced |
|
|
36
|
+
| Simplify | It must exist; make it smaller | proceeds to the lenses |
|
|
55
37
|
|
|
56
38
|
## Lenses
|
|
57
39
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
**Reuse** — new code
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
slop patterns from the table below.
|
|
77
|
-
|
|
78
|
-
**Efficiency** — redundant computation, repeated file reads, duplicate API
|
|
79
|
-
calls, N+1 access; independent operations run sequentially; heavy work on
|
|
80
|
-
startup or per-request paths; existence pre-checks instead of doing the
|
|
81
|
-
operation and handling the error; unbounded growth, missing cleanup,
|
|
82
|
-
listener/handle leaks; closures capturing a whole scope for long-lived
|
|
83
|
-
objects; whole-file reads where a slice would do. Only apply an efficiency
|
|
84
|
-
change whose behavioral equivalence is obvious; never restructure an
|
|
85
|
-
algorithm with subtle correctness implications without a test that pins it.
|
|
86
|
-
|
|
87
|
-
**Altitude** — a fix applied too shallowly: a caller-specific branch added to
|
|
88
|
-
a generic path (`if (caller === X)`, a magic-value escape hatch); a symptom
|
|
89
|
-
patched at one call site while siblings keep the same flaw; a workaround
|
|
90
|
-
stacked on a workaround; a wrapper added to avoid touching the thing that
|
|
91
|
-
needs changing; a flag introduced to route around a broken default. Name
|
|
92
|
-
the mechanism the change is dodging and the deeper fix. When the deeper fix
|
|
93
|
-
is larger than the cleanup, report it as its own task instead of doing it
|
|
94
|
-
here.
|
|
40
|
+
Use the lenses to identify supported improvements within scope; stop
|
|
41
|
+
investigating a candidate when its disposition is established. Each lens may
|
|
42
|
+
search the whole repository for evidence; a finding without a path+symbol
|
|
43
|
+
pointer is dropped. Judge units in full context, not only recently edited
|
|
44
|
+
lines, and never widen the edit scope to consumers. Skip lenses the user's
|
|
45
|
+
focus excludes.
|
|
46
|
+
|
|
47
|
+
- **Reuse** — new code duplicating an existing utility, constant, guard, or
|
|
48
|
+
installed library. Name the existing thing.
|
|
49
|
+
- **Quality** — redundant or derivable state, parameter sprawl (a boolean
|
|
50
|
+
selecting between behaviors), copy-paste-with-variation, leaky abstractions,
|
|
51
|
+
stringly-typed code where a constant or registry exists, slop below.
|
|
52
|
+
- **Efficiency** — redundant work, repeated reads, N+1 access, needless
|
|
53
|
+
sequencing, leaks, existence pre-checks instead of handling the error. Apply
|
|
54
|
+
only when equivalence is obvious; otherwise report it.
|
|
55
|
+
- **Altitude** — a fix applied too shallowly: a caller-specific branch in a
|
|
56
|
+
generic path, a symptom patched at one site, a workaround on a workaround.
|
|
57
|
+
Name the deeper fix; when it exceeds the cleanup, report it as its own task.
|
|
95
58
|
|
|
96
59
|
## Slop categories
|
|
97
60
|
|
|
98
61
|
| Category | Flag | Keep | Fix |
|
|
99
62
|
|---|---|---|---|
|
|
100
|
-
|
|
|
101
|
-
| Over-defensive code |
|
|
102
|
-
| Fake resilience | a fallback
|
|
103
|
-
| Excessive complexity | nesting
|
|
104
|
-
| Needless abstraction | pass-through wrappers, single-use helpers, speculative indirection
|
|
105
|
-
| Boundary violations | wrong-layer imports,
|
|
106
|
-
| Dead code | unused imports/locals/private functions, unreachable branches,
|
|
107
|
-
| Duplication | copy-pasted branches
|
|
108
|
-
| Type escapes | `
|
|
109
|
-
| Hardcoded config | environment-specific URLs
|
|
110
|
-
| Placeholder naming |
|
|
111
|
-
| Oversized modules | files past the
|
|
63
|
+
| Comments | restating the code, step narration, history or changelog notes, dividers, commented-out code, a comment the code contradicts, a TODO with no owner or issue | a non-obvious why (external constraint, invariant, tradeoff), directives, public API docs, issue links | delete or correct; a "do not change" comment gets a proposed test or type that enforces it, applied only with approval |
|
|
64
|
+
| Over-defensive code | checks on guaranteed values, try/catch around code that cannot throw, duplicated validation | I/O handling, trust boundaries, a logging top-level catch | remove only when a test proves the guard redundant; changing which errors propagate is RISKY |
|
|
65
|
+
| Fake resilience | a fallback turning missing input or failure into a plausible value; a catch that only rethrows or swallows | a default the contract names, documented retry or degraded mode | remove only proven redundant behavior; changing the error contract is RISKY |
|
|
66
|
+
| Excessive complexity | deep nesting, nested ternaries, long conditions, many params, clever one-liners, hand-rolled loops with an idiom | a deliberately dense hot path | guard clauses, early returns, lookup table, options object, extract by responsibility |
|
|
67
|
+
| Needless abstraction | pass-through wrappers, single-use helpers, speculative indirection | a real seam (tests, multiple implementers, framework boundary) | inline after the behavior boundary check |
|
|
68
|
+
| Boundary violations | wrong-layer imports, cycles, logic in handlers, reading another module's private state | an established pattern | move to the owning layer; flag when unsure |
|
|
69
|
+
| Dead code | unused imports/locals/private functions, unreachable branches, debug leftovers | the never-dead list | follow `dead-code.md` |
|
|
70
|
+
| Duplication | copy-pasted branches, two helpers doing one thing, redeclared types | similarity serving different intents | consolidate only when intents match |
|
|
71
|
+
| Type escapes | `any`, unexplained ignores and suppressions, redundant coercions | an escape whose comment names the upstream bug | narrow with a guard or precise type; fix the warning or record why silenced |
|
|
72
|
+
| Hardcoded config | environment-specific URLs, ids, absolute paths, unnamed thresholds | fixtures, docs, contract-fixed literals | use the project's config accessor; name the literal. A credential in source is a defect: report it |
|
|
73
|
+
| Placeholder naming | `data2`, `tmp`, `handleStuff` on new code | the project's own idioms | rename locals; an exported rename is RISKY |
|
|
74
|
+
| Oversized modules | files past the review threshold mixing responsibilities | a cohesive module | split confirmed independent responsibilities; no `utils`/`common` dumps |
|
|
112
75
|
|
|
113
76
|
## Risk tiers
|
|
114
77
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
|
118
|
-
|
|
119
|
-
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
rewrites of the same region remain, apply the one that touches less code and
|
|
126
|
-
record the alternative; when the principles cannot separate them, apply
|
|
127
|
-
neither and record both.
|
|
128
|
-
|
|
129
|
-
## Small tidyings (CAREFUL tier)
|
|
130
|
-
|
|
131
|
-
Structure-only moves the slop table does not already cover: normalize two
|
|
132
|
-
variants of the same pattern to one form; put coupled functions next to each
|
|
133
|
-
other; declare a variable where it is initialized; blank line between chunks
|
|
134
|
-
that do different things; merge over-fragmented pieces back into one readable
|
|
135
|
-
block before re-splitting. One tidying per change set.
|
|
78
|
+
| Tier | Meaning | Handling |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| SAFE | equivalence established, including initialization | apply as one batch |
|
|
81
|
+
| CAREFUL | same semantics, structure changes (local rename, guard clause, verified inlining, helper extraction, responsibility split, consolidation) | one source unit at a time, including required new modules |
|
|
82
|
+
| RISKY | may change behavior or a contract (public rename, error-handling or concurrency change, shared-infrastructure fix) | report with test coverage status; apply only the items the user approves |
|
|
83
|
+
|
|
84
|
+
When lenses disagree: correctness > the user's focus > readability and reuse >
|
|
85
|
+
micro-performance. Between two defensible rewrites, apply the one touching
|
|
86
|
+
less code and record the alternative; if principles cannot separate them,
|
|
87
|
+
apply neither.
|
|
@@ -1,43 +1,27 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Report
|
|
2
2
|
|
|
3
|
-
Findings and
|
|
4
|
-
|
|
3
|
+
Findings and tiers come from `agent-cleanup.md`. Keep the list in the
|
|
4
|
+
conversation, not a file. Record only findings with a path+symbol, a cost, and
|
|
5
|
+
an action; threshold hits are signals, not findings.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
```text
|
|
11
|
-
[ID] path · symbol → problem → cost → action | tier: SAFE/CAREFUL/RISKY | confidence: high/medium/low | status: completed/kept/unfinished
|
|
12
|
-
```
|
|
13
|
-
|
|
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).
|
|
25
|
-
|
|
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.
|
|
7
|
+
Each entry carries: path · symbol, action or blocker, risk tier, evidence
|
|
8
|
+
(what changed, why kept, or what blocks it). Findings sharing a root cause
|
|
9
|
+
group together. Unresolved intent stays unfinished; approval to apply does not
|
|
10
|
+
authorize guessing.
|
|
29
11
|
|
|
30
12
|
## Final report
|
|
31
13
|
|
|
14
|
+
Include only sections that have content:
|
|
15
|
+
|
|
32
16
|
```text
|
|
33
17
|
Scope: <paths | whole project> · Mode: report|apply · Overall: complete|partial
|
|
34
|
-
Deterministic: engines used/missing · files changed · diagnostics remaining
|
|
35
|
-
Completed
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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>
|
|
18
|
+
Deterministic: engines used/missing · files changed · diagnostics remaining
|
|
19
|
+
Completed / Kept / Unfinished: entries as above
|
|
20
|
+
Noticed, not applied (RISKY or out of scope): entries · test coverage
|
|
21
|
+
Defects found (not fixed here): <issues>
|
|
22
|
+
Verification: checks run and results · failures and established attribution · blocked or unverified checks with reason
|
|
23
|
+
Needs your decision: <RISKY findings, defects, unresolved intent, unfinished items>
|
|
43
24
|
```
|
|
25
|
+
|
|
26
|
+
Complete means every partition was reviewed and the required checks passed or
|
|
27
|
+
are reported blocked; otherwise report partial with the remaining paths.
|
|
@@ -45,8 +45,6 @@ found" and never settle it by installing the package.
|
|
|
45
45
|
effectful initializers, and the last unused import binding can still load a
|
|
46
46
|
module for registration or initialization. Preserve required initialization
|
|
47
47
|
rather than deleting it with the binding.
|
|
48
|
-
5. Record the symbol, kind, classified usage and contract evidence, side-effect
|
|
49
|
-
result, and proposed action in the candidate list.
|
|
50
48
|
|
|
51
49
|
## Never dead
|
|
52
50
|
|
|
@@ -79,7 +77,7 @@ evidence. Apply this procedure before classifying an old path as dead:
|
|
|
79
77
|
4. For a verified obsolete path, inventory its callers, flags/config, tests,
|
|
80
78
|
docs, files, and dependencies. Remove only approved members in the order
|
|
81
79
|
below; request scope expansion before editing related files outside it.
|
|
82
|
-
5.
|
|
80
|
+
5. A still-required path is kept with its contract; an unknown obligation
|
|
83
81
|
leaves the candidate blocked, not assumed obsolete.
|
|
84
82
|
|
|
85
83
|
## Remove in order
|
|
@@ -94,9 +92,5 @@ evidence. Apply this procedure before classifying an old path as dead:
|
|
|
94
92
|
project's own package manager.
|
|
95
93
|
|
|
96
94
|
Group edits by file so one batch never touches a file another batch edits.
|
|
97
|
-
Verification and rollback follow the skill body (section 5).
|
|
98
|
-
|
|
99
|
-
## Report
|
|
100
|
-
|
|
101
|
-
Use the shared candidate list and closing report, with usage and side-effect
|
|
102
|
-
evidence per ID.
|
|
95
|
+
Verification and rollback follow the skill body (section 5). Record usage and
|
|
96
|
+
side-effect evidence in the common report format (`cleanup-report.md`).
|
|
@@ -1,31 +1,20 @@
|
|
|
1
1
|
# Test-suite slop
|
|
2
2
|
|
|
3
|
-
Read this when tests are in scope
|
|
4
|
-
|
|
3
|
+
Read this when tests are in scope. Pruning rules and the test workflow belong
|
|
4
|
+
to the `test-suite` skill (Prune); this file only adds the cleanup gate.
|
|
5
5
|
|
|
6
|
-
First
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
First tell redundant coverage from removing a supported behavior. Keep
|
|
7
|
+
distinct observable success, rejection, error, and compatibility cases. Before
|
|
8
|
+
removing a behavior and its tests, require independent evidence from current
|
|
9
|
+
requirements, real callers, or a specification; a test existing only for that
|
|
10
|
+
branch is neither proof of necessity nor permission to delete it. A closed
|
|
11
|
+
loop (a fallback justified by its test, a test justified by the fallback) is
|
|
12
|
+
no evidence either; unresolved intent blocks deletion.
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
distinct regressions, and a permutation only where it marks a real boundary.
|
|
20
|
-
- **Tautological assertions** — assertions that cannot fail: `assert True`,
|
|
21
|
-
two equal literals compared, a state the fixture itself guarantees, a mock
|
|
22
|
-
verifying the setup that fed it. Delete, or rewrite against the observable
|
|
23
|
-
result.
|
|
24
|
-
- **Verification theater** — checksums, receipts, validators, or
|
|
25
|
-
recomputation where producer and verifier share the same information and
|
|
26
|
-
failure domain. They cannot fail independently; delete.
|
|
27
|
-
- **Closed justification loop** — a fallback exists because a test exercises
|
|
28
|
-
it and the test exists because the fallback was added. Neither is evidence
|
|
29
|
-
for deleting the pair. Apply the independent-evidence gate above first;
|
|
30
|
-
unresolved intent blocks deletion. A distinct externally observable
|
|
31
|
-
rejection, error, or compatibility test is not a loop; preserve its coverage.
|
|
14
|
+
Delete a test only when it is dominated (same branch and result as a stronger
|
|
15
|
+
test), tautological (cannot fail), a permutation crossing no new branch, or
|
|
16
|
+
verification theater (verifier and producer share one failure domain), or it
|
|
17
|
+
asserts a removal, a restated constant or copied production logic, and name
|
|
18
|
+
the test that still owns the contract. Deleting a contract test needs the
|
|
19
|
+
user's approval. Merging into an owner, rewriting source-text assertions, and
|
|
20
|
+
everything else follows `test-suite`.
|
|
@@ -8,6 +8,8 @@ dependencies:
|
|
|
8
8
|
tools:
|
|
9
9
|
- type: tool
|
|
10
10
|
value: computer
|
|
11
|
+
- type: tool
|
|
12
|
+
value: handoff_user
|
|
11
13
|
---
|
|
12
14
|
|
|
13
15
|
# Computer Use
|
|
@@ -180,13 +182,21 @@ GNOME with Mixdog's own shell extension, which the app sets up); prefer accessib
|
|
|
180
182
|
the turn, like any session exit, releases what the session pressed, and a
|
|
181
183
|
failed release is reported rather than assumed.
|
|
182
184
|
Execution stops at the first failure or when the target transitions
|
|
183
|
-
(popup, dialog, window change
|
|
185
|
+
(a popup, dialog, or window change present at the settle check, about
|
|
186
|
+
150 ms after the input) and returns one fresh observation. An act
|
|
184
187
|
whose first action uses a `ref` returns accessibility only (`ax`) unless
|
|
185
188
|
that tree is unusable; pass `observe: "state"` when the next step needs
|
|
186
189
|
pixels, a `frame_id`, or visual confirmation.
|
|
187
190
|
4. Read the returned observation, including any successor target. It replaces
|
|
188
191
|
the pre-action state: continue from it without another capture when usable.
|
|
189
192
|
Recapture only when evidence is missing, failed, expired, or invalidated.
|
|
193
|
+
That observation shows one window, never the others on screen. Windows the
|
|
194
|
+
settle check saw are in `window_transition.opened_windows`; a window that
|
|
195
|
+
opened later is named by the next command's
|
|
196
|
+
`windows_opened_since_last_action` (since, not necessarily caused by, your
|
|
197
|
+
last action). After a click that may open a popup (sign-in, OAuth,
|
|
198
|
+
connect, continue, authorize), run `list` (kind windows, `query` with the
|
|
199
|
+
app or expected title) before concluding nothing opened.
|
|
190
200
|
|
|
191
201
|
Prefer semantic `ref` > SOM/OCR `element` > coordinates. When pixels are
|
|
192
202
|
reported `pixel_unavailable`, coordinate input fails closed but fresh semantic
|
|
@@ -241,9 +251,9 @@ your results and that browser's pixels are withheld until this turn ends
|
|
|
241
251
|
(`ax` reads still work), but a page that redisplays it can expose it, and other
|
|
242
252
|
programs of the same Windows user are outside this protection. A username is
|
|
243
253
|
an identifier and is not hidden. Continue with keys (`act` key Enter). On a
|
|
244
|
-
refusal, hand the secret to the user (`
|
|
254
|
+
refusal, hand the secret to the user (`handoff_user` kind `secret`,
|
|
245
255
|
surface `computer`); one-time codes, passkeys, security keys and app approvals
|
|
246
|
-
are the user's step (`
|
|
256
|
+
are the user's step (`handoff_user` kind `takeover`). Never type a password or
|
|
247
257
|
code with `type`/`set_value`, even one shown on screen.
|
|
248
258
|
|
|
249
259
|
**Keyboard-driven navigation** — `act` with `key` steps such as `ctrl+s`
|
|
@@ -251,7 +261,9 @@ and a trailing short `wait`; verify with `verify` rather than another capture.
|
|
|
251
261
|
`alt+f4` is blocked in every delivery mode. To close a window, obtain the
|
|
252
262
|
user's go-ahead and use `window` with the `close` operation.
|
|
253
263
|
|
|
254
|
-
**Dialog appears mid-sequence** — `act` halts
|
|
264
|
+
**Dialog appears mid-sequence** — `act` halts when the settle check sees it; a
|
|
265
|
+
dialog that opens later arrives in the next command's
|
|
266
|
+
`windows_opened_since_last_action`. Use its successful
|
|
255
267
|
successor observation to handle the dialog; capture only if it is unusable.
|
|
256
268
|
Returning to the original window also requires a fresh observation, whether
|
|
257
269
|
returned by the action or obtained through `capture`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: goal-management
|
|
3
3
|
description: Manage the task list of approved work carried across turns, its progress, approvals, and completion.
|
|
4
|
-
when_to_use: '
|
|
4
|
+
when_to_use: 'Goal requests or approved multi-turn work in progress; not one-turn tasks or recurring schedules.'
|
|
5
5
|
dependencies:
|
|
6
6
|
tools:
|
|
7
7
|
- type: tool
|
|
@@ -52,7 +52,7 @@ Read this when choosing a `setup` mutation.
|
|
|
52
52
|
| Permanently delete confirmed, unchanged, unused model files | `delete_local_model` |
|
|
53
53
|
| TUI system shell | `set_system_shell` |
|
|
54
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) (
|
|
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) (off by default; `status features` reports `heartbeat.enabled` and `heartbeat.intervalMinutes`) | `set_heartbeat_enabled` |
|
|
56
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
57
|
| Bots' emoji reactions on the user's messages (on by default; `status features` reports `reactions.enabled`) | `set_reactions_enabled` |
|
|
58
58
|
| Worktree defaults: new tasks on the current branch or a new worktree, branch prefix, large-repository warning size, automatic cleanup | `set_worktree_settings` |
|
|
@@ -103,7 +103,7 @@ Read this when choosing a `setup` mutation.
|
|
|
103
103
|
| Read a Project's connector switches | `read_project_connectors` |
|
|
104
104
|
| An agent's action permission (block/ask per action kind) | `set_agent_permission` |
|
|
105
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
|
|
106
|
+
| One connector tool of an agent to disabled, needs_approval or auto (a widening asks the user on an approval card) | `set_agent_connector_tool` |
|
|
107
107
|
| Bring back an archived bot or agent (`definitionKind: "agent"`) | `restore_definition` |
|
|
108
108
|
| Bot display order (Bots page, Sessions bot section; `status agents` `botOrder`) | `set_bot_order` |
|
|
109
109
|
|
|
@@ -344,10 +344,16 @@ markers are read with `status desktop`.
|
|
|
344
344
|
`status mcp` afterwards. `add_mcp_server` with the service URL is not the
|
|
345
345
|
sign-in flow; never use it for a catalog service.
|
|
346
346
|
- Agent permissions and connector switches change only toward less: `block`
|
|
347
|
-
or `ask`, a connector off, a tool to `
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
347
|
+
or `ask`, a connector off, a tool to `disabled`. An action permission
|
|
348
|
+
`allow` or a connector back on is refused ("make it on the desktop");
|
|
349
|
+
`open agents` and let the person do it. One connector tool's widening
|
|
350
|
+
(`set_agent_connector_tool` from `disabled` to `needs_approval`/`auto`, or
|
|
351
|
+
`needs_approval` to `auto`) asks the user instead: the call waits on an
|
|
352
|
+
approval card (on the desktop or a paired phone) offering "needs approval",
|
|
353
|
+
"auto" or Deny, whatever level was asked; the result's `permission` and
|
|
354
|
+
`note` say what was applied. Only a press on that card decides it: never
|
|
355
|
+
treat a chat reply as approval, and ask again for each change. Payments and
|
|
356
|
+
permanent deletes always ask regardless.
|
|
351
357
|
Connector ids are MCP server names from `read_agent_settings`; a bot's
|
|
352
358
|
thread changes only its own bot.
|
|
353
359
|
- `enable_plugin_mcp` turns every server the plugin declares back on and
|
|
@@ -134,8 +134,8 @@ The setup tool does not mutate:
|
|
|
134
134
|
browser action confirmations (`MIXDOG_BROWSER_CONFIRM_ACTIONS`,
|
|
135
135
|
`MIXDOG_BROWSER_CONFIRM_SUBMIT`; see the browser-use skill);
|
|
136
136
|
- widening an agent's authority: action permission `allow`, a connector
|
|
137
|
-
switched back on for an agent or Project
|
|
138
|
-
|
|
137
|
+
switched back on for an agent or Project (setup only narrows them; a
|
|
138
|
+
single connector tool's widening asks the user on an approval card);
|
|
139
139
|
- the remote-access switch ("Use this PC from other devices") and this PC's
|
|
140
140
|
name: turning it off from a phone would cut that phone off mid-session;
|
|
141
141
|
- permanently deleting an archived bot (Sessions → Archived → delete);
|
|
@@ -106,6 +106,8 @@ done. Take the first open step, explain it in a sentence or two, ask, then act.
|
|
|
106
106
|
provider. Give the reason in one line: a different model family catches what
|
|
107
107
|
the main one misses. Suggest turning on the Maintainer with
|
|
108
108
|
a cheap model at the lowest effort; it also decides turns in group rooms.
|
|
109
|
+
Offer Explore the same way, from its own picks: a cheap model that
|
|
110
|
+
searches code for the Lead in separate parallel sessions.
|
|
109
111
|
A pick may carry `plans`: when the Lead provider's plan (`plan` in
|
|
110
112
|
`status providers`) is listed there, recommend that model instead. A null or
|
|
111
113
|
unlisted plan keeps the pick as is; never fail on an unknown plan.
|
|
@@ -152,8 +154,9 @@ step; do not insist.
|
|
|
152
154
|
does part of a task. Users add their own on the Workflows page with the
|
|
153
155
|
"에이전트 +" button. Bots are people-facing; agents work behind a task.
|
|
154
156
|
- Default agents (기본 에이전트): built-in helpers listed on Workflows, such as
|
|
155
|
-
Web Search (runs the web search tool)
|
|
156
|
-
session titles). They need a model
|
|
157
|
+
Web Search (runs the web search tool), the Maintainer (memory upkeep and
|
|
158
|
+
session titles) and Explore (code search for the Lead). They need a model
|
|
159
|
+
route to work.
|
|
157
160
|
- Agent mode (에이전트 모드): a coding work session run by Lead and agents.
|
|
158
161
|
A session a bot starts for a job is an agent task session (에이전트 작업
|
|
159
162
|
세션); others are just sessions (세션).
|
|
@@ -328,6 +328,19 @@
|
|
|
328
328
|
"source": "https://www.benchleader.com/best/llm-for-coding"
|
|
329
329
|
}
|
|
330
330
|
]
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"roles": ["Explore"],
|
|
334
|
+
"note": "Measured on Mixdog code searches: Haiku found the key locations; cheaper models tested missed about half on unseen questions. With no qualifying pick, leave Explore off.",
|
|
335
|
+
"picks": [
|
|
336
|
+
{
|
|
337
|
+
"provider": "Anthropic",
|
|
338
|
+
"model": "Claude Haiku 5.5",
|
|
339
|
+
"effort": "low",
|
|
340
|
+
"checkedAt": "2026-10-29",
|
|
341
|
+
"source": "https://benchlm.ai/anthropic/api-pricing"
|
|
342
|
+
}
|
|
343
|
+
]
|
|
331
344
|
}
|
|
332
345
|
]
|
|
333
346
|
}
|