mixdog 0.9.151 → 0.9.153
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/browser-import-NOTICE.txt +11 -0
- package/NOTICE.md +11 -0
- package/README.md +108 -68
- package/package.json +17 -4
- package/scripts/computer-task-cost-report.mjs +144 -0
- package/scripts/run-office-live-tests.mjs +32 -0
- package/scripts/tool-stress.mjs +0 -2
- package/src/agents/front-worker/AGENT.md +13 -0
- package/src/agents/front-worker/agent.json +6 -0
- package/src/agents/heavy-worker/AGENT.md +10 -11
- package/src/agents/heavy-worker/agent.json +1 -1
- package/src/agents/maintainer/AGENT.md +0 -2
- package/src/agents/reviewer/AGENT.md +9 -13
- package/src/agents/reviewer/agent.json +1 -1
- package/src/agents/security/AGENT.md +14 -0
- package/src/agents/security/agent.json +6 -0
- package/src/agents/worker/AGENT.md +8 -8
- package/src/agents/worker/agent.json +1 -1
- package/src/agents/writer/AGENT.md +14 -0
- package/src/agents/writer/agent.json +6 -0
- package/src/defaults/skills/setup/SKILL.md +18 -27
- package/src/headless-exec.mjs +3 -10
- package/src/headless-exec.test.mjs +2 -7
- package/src/rules/agent/00-common.md +4 -7
- package/src/rules/lead/01-general.md +0 -3
- package/src/rules/shared/10-tool-workflow.md +10 -2
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +183 -26
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.test.mjs +378 -0
- package/src/runtime/agent/orchestrator/agent-runtime/session-builder.mjs +4 -0
- package/src/runtime/agent/orchestrator/cache-break-trace.mjs +109 -0
- package/src/runtime/agent/orchestrator/cache-break-trace.test.mjs +115 -0
- package/src/runtime/agent/orchestrator/config.mjs +13 -68
- package/src/runtime/agent/orchestrator/context/collect-skills.test.mjs +153 -0
- package/src/runtime/agent/orchestrator/context/collect.mjs +49 -45
- package/src/runtime/agent/orchestrator/mcp/client.mjs +242 -15
- package/src/runtime/agent/orchestrator/mcp/features.test.mjs +66 -0
- package/src/runtime/agent/orchestrator/mcp/security.test.mjs +36 -20
- package/src/runtime/agent/orchestrator/providers/admission-scheduler-metrics.test.mjs +47 -0
- package/src/runtime/agent/orchestrator/providers/admission-scheduler.mjs +16 -3
- package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +54 -33
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth.mjs +7 -0
- package/src/runtime/agent/orchestrator/providers/gemini-schema.mjs +7 -0
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +3 -8
- package/src/runtime/agent/orchestrator/providers/gemini.mjs +7 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +19 -3
- package/src/runtime/agent/orchestrator/providers/lib/provider-replay.mjs +50 -0
- package/src/runtime/agent/orchestrator/providers/lib/sse-framing.mjs +93 -0
- package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +30 -9
- package/src/runtime/agent/orchestrator/providers/media-parity.test.mjs +59 -0
- package/src/runtime/agent/orchestrator/providers/model-list-sanitize.mjs +3 -3
- package/src/runtime/agent/orchestrator/providers/openai-codex-identity.test.mjs +71 -0
- package/src/runtime/agent/orchestrator/providers/openai-codex-metadata.mjs +18 -26
- package/src/runtime/agent/orchestrator/providers/openai-compat-presets.mjs +8 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +7 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +25 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat.mjs +35 -4
- package/src/runtime/agent/orchestrator/providers/openai-oauth-http-sse.mjs +47 -2
- package/src/runtime/agent/orchestrator/providers/openai-oauth-ws.mjs +103 -12
- package/src/runtime/agent/orchestrator/providers/openai-responses-payload.mjs +13 -0
- package/src/runtime/agent/orchestrator/providers/openai-turn-state.mjs +68 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-delta-parity.test.mjs +122 -6
- package/src/runtime/agent/orchestrator/providers/openai-ws-delta.mjs +36 -11
- package/src/runtime/agent/orchestrator/providers/openai-ws-pool.mjs +144 -93
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream.mjs +18 -13
- package/src/runtime/agent/orchestrator/providers/provider-replay.test.mjs +288 -0
- package/src/runtime/agent/orchestrator/providers/sse-framing.test.mjs +719 -0
- package/src/runtime/agent/orchestrator/providers/stream-json-pool.mjs +399 -39
- package/src/runtime/agent/orchestrator/providers/stream-json-worker.mjs +26 -0
- package/src/runtime/agent/orchestrator/session/agent-loop.mjs +86 -7
- package/src/runtime/agent/orchestrator/session/agent-loop.test.mjs +222 -0
- package/src/runtime/agent/orchestrator/session/browser-snapshot-supersession.mjs +61 -0
- package/src/runtime/agent/orchestrator/session/browser-snapshot-supersession.test.mjs +83 -0
- package/src/runtime/agent/orchestrator/session/cache/read-cache.mjs +13 -0
- package/src/runtime/agent/orchestrator/session/compact/runner.mjs +26 -2
- package/src/runtime/agent/orchestrator/session/compact-policy.test.mjs +112 -0
- package/src/runtime/agent/orchestrator/session/compaction-read-reset.test.mjs +192 -0
- package/src/runtime/agent/orchestrator/session/context-usage-restart.test.mjs +72 -0
- package/src/runtime/agent/orchestrator/session/context-utils.mjs +100 -15
- package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +17 -1
- package/src/runtime/agent/orchestrator/session/eager-dispatch.test.mjs +74 -0
- package/src/runtime/agent/orchestrator/session/image-strip-recovery.mjs +12 -8
- package/src/runtime/agent/orchestrator/session/image-strip-recovery.test.mjs +20 -1
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +110 -2
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +3 -16
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.test.mjs +28 -0
- package/src/runtime/agent/orchestrator/session/loop/recall-fasttrack.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/loop/steering.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +15 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +111 -39
- package/src/runtime/agent/orchestrator/session/manager/ask-session.test.mjs +46 -0
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +30 -6
- package/src/runtime/agent/orchestrator/session/manager/message-sanitize.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +27 -3
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +26 -54
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.test.mjs +63 -1
- package/src/runtime/agent/orchestrator/session/manager/status-telemetry.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +4 -110
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +580 -0
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.test.mjs +593 -0
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +119 -190
- package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +115 -0
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +43 -8
- package/src/runtime/agent/orchestrator/session/provider-prefix-guard.mjs +129 -12
- package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +9 -2
- package/src/runtime/agent/orchestrator/session/store/listing.mjs +8 -1
- package/src/runtime/agent/orchestrator/session/store/save-worker.mjs +15 -1
- package/src/runtime/agent/orchestrator/session/store-live-publication.test.mjs +83 -0
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +36 -2
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +157 -30
- package/src/runtime/agent/orchestrator/session/store-summary-reader.test.mjs +64 -0
- package/src/runtime/agent/orchestrator/session/store-summary-visibility.mjs +57 -0
- package/src/runtime/agent/orchestrator/session/store-summary-visibility.test.mjs +219 -0
- package/src/runtime/agent/orchestrator/session/store.mjs +26 -2
- package/src/runtime/agent/orchestrator/session/tool-batch.mjs +22 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool-cwd-env.test.mjs +14 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +19 -10
- package/src/runtime/agent/orchestrator/tools/builtin/find-search-budget.test.mjs +30 -14
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-policy.mjs +15 -4
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +73 -15
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.test.mjs +76 -2
- package/src/runtime/agent/orchestrator/tools/builtin/list-tool.mjs +24 -683
- package/src/runtime/agent/orchestrator/tools/builtin/native-search-client.mjs +64 -72
- package/src/runtime/agent/orchestrator/tools/builtin/native-search-runner.mjs +2 -5
- package/src/runtime/agent/orchestrator/tools/builtin/native-search-transport.mjs +75 -0
- package/src/runtime/agent/orchestrator/tools/builtin/native-search-transport.test.mjs +24 -0
- package/src/runtime/agent/orchestrator/tools/builtin/read-special-files.mjs +6 -6
- package/src/runtime/agent/orchestrator/tools/code-graph/build.mjs +12 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/constants.mjs +4 -1
- package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.mjs +24 -5
- package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.test.mjs +44 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/graph-binary.mjs +12 -2
- package/src/runtime/agent/orchestrator/tools/code-graph/graph-model.mjs +35 -21
- package/src/runtime/agent/orchestrator/tools/code-graph/memory-cache.mjs +28 -13
- package/src/runtime/agent/orchestrator/tools/code-graph/memory-cache.test.mjs +54 -0
- package/src/runtime/agent/orchestrator/tools/graph-manifest.json +11 -11
- package/src/runtime/agent/orchestrator/tools/patch-manifest.json +11 -11
- package/src/runtime/agent/orchestrator/tools/progress-message.mjs +12 -0
- package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +11 -11
- package/src/runtime/attachments/pdf-extract.mjs +3 -0
- package/src/runtime/attachments/pdfjs-runtime.mjs +13 -0
- package/src/runtime/bridge-clients.test.mjs +827 -0
- package/src/runtime/browser-bridge/action-schema.mjs +251 -0
- package/src/runtime/browser-bridge/client.mjs +152 -0
- package/src/runtime/browser-bridge/tool-defs.mjs +159 -0
- package/src/runtime/computer-bridge/action-schema.mjs +653 -0
- package/src/runtime/computer-bridge/client.mjs +231 -0
- package/src/runtime/computer-bridge/tool-defs.mjs +33 -0
- package/src/runtime/media/store.mjs +18 -8
- package/src/runtime/media/store.test.mjs +14 -0
- package/src/runtime/memory/index.mjs +1 -1
- package/src/runtime/memory/lib/transcript-ingest.mjs +8 -6
- package/src/runtime/memory/lib/transcript-ingest.test.mjs +52 -0
- package/src/runtime/office/assurance-benchmark.mjs +358 -0
- package/src/runtime/office/assurance.mjs +833 -0
- package/src/runtime/office/benchmark.mjs +496 -0
- package/src/runtime/office/capabilities.mjs +551 -0
- package/src/runtime/office/com-adapter.mjs +283 -0
- package/src/runtime/office/content-model.mjs +183 -0
- package/src/runtime/office/contract-benchmark.mjs +105 -0
- package/src/runtime/office/design-library.mjs +1562 -0
- package/src/runtime/office/design-system.mjs +1966 -0
- package/src/runtime/office/index.mjs +2413 -0
- package/src/runtime/office/journal.mjs +82 -0
- package/src/runtime/office/office-assurance.test.mjs +371 -0
- package/src/runtime/office/office-com-host.ps1 +3781 -0
- package/src/runtime/office/office-com-session-host.ps1 +855 -0
- package/src/runtime/office/office-live-runtime.test.mjs +819 -0
- package/src/runtime/office/office-runtime.test.mjs +2070 -0
- package/src/runtime/office/ooxml-validator.mjs +271 -0
- package/src/runtime/office/pagination.mjs +132 -0
- package/src/runtime/office/pdf-adapter.mjs +591 -0
- package/src/runtime/office/pdf-analysis.mjs +372 -0
- package/src/runtime/office/pdf-render.mjs +167 -0
- package/src/runtime/office/pdf-security.mjs +63 -0
- package/src/runtime/office/polish-benchmark.mjs +190 -0
- package/src/runtime/office/portable-ooxml.mjs +1867 -0
- package/src/runtime/office/quality-live-benchmark.mjs +486 -0
- package/src/runtime/office/quality-pipeline.mjs +136 -0
- package/src/runtime/office/tabular.mjs +302 -0
- package/src/runtime/office/templates/mixdog-executive.pptx +0 -0
- package/src/runtime/office/templates/mixdog-executive.pptx.mixdog.json +190 -0
- package/src/runtime/office/tool-defs.mjs +113 -0
- package/src/runtime/office/visual-diff.mjs +89 -0
- package/src/runtime/office/xlsx-assertions.mjs +172 -0
- package/src/runtime/office/xlsx-contract.mjs +147 -0
- package/src/runtime/shared/agent-route-config.mjs +9 -0
- package/src/runtime/shared/child-spawn-gate.mjs +17 -0
- package/src/runtime/shared/child-spawn-remote.mjs +69 -7
- package/src/runtime/shared/child-spawn-remote.test.mjs +124 -0
- package/src/runtime/shared/pristine-execution-contract.json +2 -1
- package/src/runtime/shared/provider-api-key.mjs +1 -0
- package/src/runtime/shared/session-runtime-health.mjs +91 -0
- package/src/runtime/shared/session-runtime-health.test.mjs +53 -0
- package/src/runtime/shared/skill-document.mjs +86 -0
- package/src/runtime/shared/skill-document.test.mjs +81 -0
- package/src/runtime/shared/tool-execution-contract.mjs +16 -0
- package/src/runtime/shared/tool-surface.mjs +27 -0
- package/src/runtime/shared/turn-snapshot-store.mjs +1 -0
- package/src/runtime/shared/turn-snapshot.mjs +32 -9
- package/src/runtime/shared/user-cwd.mjs +33 -14
- package/src/runtime/shared/user-cwd.test.mjs +43 -0
- package/src/session-runtime/agent-disable.test.mjs +20 -1
- package/src/session-runtime/context-status.mjs +9 -3
- package/src/session-runtime/cwd-plugins.mjs +26 -26
- package/src/session-runtime/cwd-plugins.test.mjs +75 -0
- package/src/session-runtime/cwd-tool-routing.test.mjs +5 -0
- package/src/session-runtime/deferred-tool-delta.mjs +104 -0
- package/src/session-runtime/deferred-tool-delta.test.mjs +40 -0
- package/src/session-runtime/global-extensions.mjs +26 -0
- package/src/session-runtime/global-extensions.test.mjs +28 -0
- package/src/session-runtime/global-settings-session-identity.test.mjs +76 -0
- package/src/session-runtime/goal-runtime.mjs +1141 -0
- package/src/session-runtime/goal-runtime.test.mjs +645 -0
- package/src/session-runtime/lifecycle-api.mjs +58 -11
- package/src/session-runtime/lifecycle-api.test.mjs +183 -0
- package/src/session-runtime/mcp-glue.mjs +49 -47
- package/src/session-runtime/plugin-mcp-standard.test.mjs +177 -0
- package/src/session-runtime/plugin-mcp.mjs +96 -22
- package/src/session-runtime/prewarm.mjs +1 -10
- package/src/session-runtime/provider-request-snapshot.mjs +33 -9
- package/src/session-runtime/provider-request-snapshot.test.mjs +27 -5
- package/src/session-runtime/resource-api-global.test.mjs +109 -0
- package/src/session-runtime/resource-api.mjs +168 -116
- package/src/session-runtime/runtime-core.mjs +208 -29
- package/src/session-runtime/runtime-tunables.mjs +6 -8
- package/src/session-runtime/session-lifecycle.mjs +34 -12
- package/src/session-runtime/session-title.mjs +2 -2
- package/src/session-runtime/session-turn-api.mjs +37 -25
- package/src/session-runtime/skills-api.mjs +79 -25
- package/src/session-runtime/skills-api.test.mjs +99 -0
- package/src/session-runtime/tool-catalog-data.mjs +1 -1
- package/src/session-runtime/tool-catalog-schema.mjs +0 -5
- package/src/session-runtime/tool-catalog.mjs +42 -112
- package/src/session-runtime/tool-defs.mjs +6 -1
- package/src/session-runtime/tool-policy-surface.test.mjs +93 -17
- package/src/session-runtime/tool-surface.mjs +30 -8
- package/src/session-runtime/workflow-agents-api.mjs +8 -25
- package/src/session-runtime/workflow.mjs +8 -6
- package/src/standalone/agent-dispatch-broker.mjs +5 -9
- package/src/standalone/agent-tool/helpers.mjs +2 -2
- package/src/standalone/agent-tool/job-views.mjs +3 -1
- package/src/standalone/agent-tool/notify.mjs +11 -9
- package/src/standalone/agent-tool/notify.test.mjs +37 -0
- package/src/standalone/agent-tool/render.mjs +3 -0
- package/src/standalone/agent-tool/spawn-flow.mjs +61 -16
- package/src/standalone/agent-tool/spawn-flow.test.mjs +41 -0
- package/src/standalone/agent-tool/tool-def.mjs +1 -1
- package/src/standalone/agent-tool/worker-index.mjs +123 -0
- package/src/standalone/agent-tool/worker-index.test.mjs +132 -0
- package/src/standalone/agent-tool/worker-rows.mjs +2 -1
- package/src/standalone/agent-tool.mjs +57 -10
- package/src/standalone/daemon.mjs +113 -15
- package/src/standalone/hook-bus/config.mjs +1 -0
- package/src/standalone/plugin-admin.mjs +17 -0
- package/src/standalone/plugin-admin.test.mjs +7 -0
- package/src/standalone/provider-admin.mjs +1 -0
- package/src/standalone/session-protocol.mjs +5 -0
- package/src/standalone/session-runtime-agent-control-client.mjs +133 -0
- package/src/standalone/session-runtime-agent-control-client.test.mjs +71 -0
- package/src/standalone/session-runtime-dispatch-cancel.test.mjs +139 -0
- package/src/standalone/session-runtime-host-factory.mjs +17 -0
- package/src/standalone/session-runtime-host-factory.test.mjs +31 -0
- package/src/standalone/session-runtime-host-health.test.mjs +5 -0
- package/src/standalone/session-runtime-host.mjs +709 -58
- package/src/standalone/session-runtime-inline-host.mjs +258 -0
- package/src/standalone/session-runtime-inline-host.test.mjs +385 -0
- package/src/standalone/session-runtime-provider-cooldown.mjs +78 -0
- package/src/standalone/session-runtime-provider-cooldown.test.mjs +80 -0
- package/src/standalone/session-runtime-shard-host.test.mjs +642 -0
- package/src/standalone/session-runtime-shard-router.mjs +149 -0
- package/src/standalone/session-runtime-shard-router.test.mjs +101 -0
- package/src/standalone/session-runtime-worker.mjs +302 -26
- package/src/standalone/session-service-agent-tree.test.mjs +984 -0
- package/src/standalone/session-service-goal-recovery.test.mjs +177 -0
- package/src/standalone/session-service.mjs +711 -11
- package/src/tui/app/app-view.jsx +1 -0
- package/src/tui/app/core-memory-picker.mjs +2 -0
- package/src/tui/app/extension-pickers.mjs +1 -1
- package/src/tui/app/maintenance-pickers.mjs +3 -3
- package/src/tui/app/model-options.mjs +2 -0
- package/src/tui/app/model-picker.mjs +14 -4
- package/src/tui/app/panel-handoff.test.mjs +311 -0
- package/src/tui/app/project-picker.mjs +1 -0
- package/src/tui/app/route-pickers.mjs +21 -6
- package/src/tui/app/settings-picker.mjs +26 -3
- package/src/tui/app/slash-commands.mjs +1 -0
- package/src/tui/app/slash-dispatch.mjs +73 -22
- package/src/tui/app/theme-effort-pickers.mjs +7 -2
- package/src/tui/components/Picker.jsx +10 -1
- package/src/tui/dist/index.mjs +187 -45
- package/src/tui/lib/voice-setup.mjs +4 -1
- package/src/tui/session/agent-message-source.test.mjs +37 -0
- package/src/tui/session/completion-card-restore.test.mjs +50 -0
- package/src/tui/session/context-state.mjs +3 -13
- package/src/tui/session/goal-continuation.mjs +141 -0
- package/src/tui/session/goal-continuation.test.mjs +203 -0
- package/src/tui/session/queue-helpers.mjs +5 -2
- package/src/tui/session/session-action-surface.test.mjs +190 -0
- package/src/tui/session/session-api-ext.mjs +48 -8
- package/src/tui/session/session-api.mjs +73 -1
- package/src/tui/session/session-flow.mjs +31 -1
- package/src/tui/session/turn.mjs +88 -15
- package/src/tui/session-local.mjs +39 -3
- package/src/vendor/statusline/src/gateway/route-meta.mjs +31 -0
- package/src/runtime/agent/orchestrator/tools/builtin/fuzzy-match.mjs +0 -301
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Chrome password import sidecar
|
|
2
|
+
|
|
3
|
+
The Windows password importer packaged beside Mixdog is a separate
|
|
4
|
+
GPL-3.0-only process derived from:
|
|
5
|
+
|
|
6
|
+
https://github.com/bitwarden/clients
|
|
7
|
+
commit 6e2c2151f215df69b7cf75b43f189b2cba8b6b5e
|
|
8
|
+
|
|
9
|
+
Mixdog's wrapper and reproducible build instructions are available under
|
|
10
|
+
native/mixdog-browser-import/. The packaged native-tools directory also carries
|
|
11
|
+
the complete LICENSE_GPL.txt copied from that pinned source.
|
package/NOTICE.md
CHANGED
|
@@ -15,6 +15,8 @@ Full license texts live in `LICENSES/`:
|
|
|
15
15
|
compiled into the native binaries.
|
|
16
16
|
- `LICENSES/editor-assets-NOTICE.txt` — the editor icon and language-data
|
|
17
17
|
notice referenced by the generated files.
|
|
18
|
+
- `LICENSES/browser-import-NOTICE.txt` — source and license boundary for the
|
|
19
|
+
optional GPL Chrome password import sidecar.
|
|
18
20
|
|
|
19
21
|
## MIT
|
|
20
22
|
|
|
@@ -105,3 +107,12 @@ upstream NOTICE file is preserved as `LICENSES/codex-NOTICE.txt`.
|
|
|
105
107
|
The Apache-2.0 terms require this notice to travel with any redistribution of
|
|
106
108
|
the derived files. Full license text: `LICENSES/Apache-2.0.txt`
|
|
107
109
|
(<https://www.apache.org/licenses/LICENSE-2.0>).
|
|
110
|
+
|
|
111
|
+
## GPL-3.0-only
|
|
112
|
+
|
|
113
|
+
### Chrome password import sidecar
|
|
114
|
+
|
|
115
|
+
The Windows password importer is a separate process built from the
|
|
116
|
+
pinned source and Mixdog wrapper recorded in
|
|
117
|
+
`LICENSES/browser-import-NOTICE.txt`. It is not linked into the MIT desktop
|
|
118
|
+
application. Its complete GPL text ships beside the two native executables.
|
package/README.md
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Mixdog
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/mixdog)
|
|
4
4
|

|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
## Better results. Less cost. More work.
|
|
8
|
+
|
|
9
|
+
Mixdog is an efficiency-first AI coding harness designed to deliver equal or
|
|
10
|
+
better performance with less context, time, and cost—so you can complete more
|
|
11
|
+
work within the same API budget or subscription quota.
|
|
12
|
+
|
|
13
|
+
With simple setup and an intuitive UX, Mixdog makes powerful orchestration,
|
|
14
|
+
parallel tasks, and seamless work across terminal, desktop, and web accessible
|
|
15
|
+
to everyone—from beginners to experts.
|
|
16
|
+
|
|
17
|
+
**The easiest way to get more out of every coding model.**
|
|
9
18
|
|
|
10
19
|
## Get started
|
|
11
20
|
|
|
12
|
-
###
|
|
21
|
+
### Desktop
|
|
13
22
|
|
|
14
|
-
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="https://github.com/tribgames/mixdog/releases/latest/download/mixdog-desktop-win-x64.exe">
|
|
25
|
+
<img src="https://img.shields.io/badge/Download_for_Windows_x64-0078D4?style=for-the-badge&logo=windows11&logoColor=white" alt="Download Mixdog for Windows x64" height="56">
|
|
26
|
+
</a>
|
|
27
|
+
</p>
|
|
15
28
|
|
|
16
|
-
The
|
|
17
|
-
security warning
|
|
29
|
+
The Windows installer is currently unsigned, so Windows SmartScreen may show a
|
|
30
|
+
security warning.
|
|
18
31
|
|
|
19
32
|
### CLI
|
|
20
33
|
|
|
@@ -28,28 +41,68 @@ mixdog
|
|
|
28
41
|
First run guides you through provider authentication, model selection, and
|
|
29
42
|
workflow setup.
|
|
30
43
|
|
|
44
|
+
## Benchmarks
|
|
45
|
+
|
|
46
|
+
Terminal-Bench 2.1 — same model, same 89 tasks, same official verifier, with
|
|
47
|
+
only the harness changed. Against the native CLI of each model family, Mixdog
|
|
48
|
+
scores higher while spending less to get there.
|
|
49
|
+
|
|
50
|
+
### GPT-5.6 Sol xhigh — Mixdog vs Codex CLI
|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
|
|
54
|
+
- **86.5%** (385/445) vs Codex CLI's **84.3%** (75/89)
|
|
55
|
+
- **42%** lower priced cost — $0.641 vs $1.096 per trial
|
|
56
|
+
- **45%** smaller median final context — 18.5k vs 33.5k tokens
|
|
57
|
+
- **1.11×** faster — 339s vs 378s per trial
|
|
58
|
+
|
|
59
|
+
### Claude Opus 5 — Mixdog vs Claude Code
|
|
60
|
+
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
- **79/89** vs Claude Code's **77/89**
|
|
64
|
+
- **19%** lower priced cost — $104.29 vs $129.21 per run
|
|
65
|
+
- **28%** smaller median final context — 27.6k vs 38.2k tokens
|
|
66
|
+
- **1.15×** faster
|
|
67
|
+
|
|
68
|
+
Every run uses the official Harbor verifier, fast mode off, a 272k context
|
|
69
|
+
window, and zero retries. The Mixdog Sol run follows the protocol the official
|
|
70
|
+
Terminal-Bench leaderboard requires — all 89 tasks repeated five times (`k=5`,
|
|
71
|
+
445 trials); the Codex CLI baseline and both Opus-side runs are single passes
|
|
72
|
+
(`k=1`, 89 trials each).
|
|
73
|
+
|
|
74
|
+
The leaderboard is not accepting community submissions, so every run here ships
|
|
75
|
+
its raw artifacts instead — Harbor verdicts, official verifier output, pinned
|
|
76
|
+
task checksums, and the usage snapshots behind every cost figure — alongside
|
|
77
|
+
the harness, presets, and metric scripts that recompute each number above:
|
|
78
|
+
[`benchmarks/terminal-bench-2.1/`](benchmarks/terminal-bench-2.1/).
|
|
79
|
+
|
|
31
80
|
## Highlights
|
|
32
81
|
|
|
33
82
|
- **Multi-provider routing** — assign different providers and models by role.
|
|
83
|
+
- **Shared live sessions** — move between the TUI, desktop windows, and paired
|
|
84
|
+
browsers without starting a second copy of the session.
|
|
34
85
|
- **Efficient context** — cache-aware prompts, compaction, resumable sessions,
|
|
35
86
|
and focused repo-native tools.
|
|
36
87
|
- **Complete coding surface** — read, search, edit, test, review, web search,
|
|
37
88
|
MCP, skills, hooks, and plugins.
|
|
38
89
|
- **Local memory** — semantic and lexical recall with project-scoped context
|
|
39
90
|
and multilingual retrieval.
|
|
40
|
-
- **
|
|
41
|
-
|
|
42
|
-
- **
|
|
43
|
-
explorer, Studio, automation, and settings in one
|
|
91
|
+
- **Encrypted remote access** — pair the installable web app with Desktop and
|
|
92
|
+
use Mixdog from a browser or phone over authenticated E2EE.
|
|
93
|
+
- **Desktop coding app** — agent panes, Monaco editor, Git, terminals, file
|
|
94
|
+
explorer, Studio, automation, voice input, and settings in one app.
|
|
44
95
|
|
|
45
96
|
## Providers
|
|
46
97
|
|
|
47
98
|
Mixdog supports subscription OAuth and API-key routes, including:
|
|
48
99
|
|
|
49
|
-
- Anthropic and Claude
|
|
50
|
-
- OpenAI and ChatGPT/Codex
|
|
51
|
-
- Google Gemini
|
|
52
|
-
- xAI Grok
|
|
100
|
+
- Anthropic API keys and Claude account OAuth
|
|
101
|
+
- OpenAI API keys and ChatGPT/Codex account OAuth
|
|
102
|
+
- Google Gemini and Antigravity OAuth
|
|
103
|
+
- xAI API keys and Grok account OAuth
|
|
104
|
+
- OpenRouter API keys and its unified model catalog
|
|
105
|
+
- Experimental Cursor account OAuth
|
|
53
106
|
- DeepSeek and OpenCode Go
|
|
54
107
|
- OpenAI-compatible APIs
|
|
55
108
|
- Ollama and LM Studio
|
|
@@ -107,40 +160,57 @@ stdout; diagnostics remain on stderr.
|
|
|
107
160
|
## TUI commands
|
|
108
161
|
|
|
109
162
|
```text
|
|
110
|
-
/
|
|
111
|
-
/
|
|
112
|
-
/
|
|
113
|
-
/
|
|
114
|
-
/
|
|
115
|
-
/
|
|
116
|
-
/
|
|
117
|
-
/
|
|
118
|
-
/
|
|
119
|
-
/
|
|
120
|
-
/
|
|
121
|
-
/
|
|
122
|
-
/
|
|
123
|
-
/
|
|
163
|
+
/clear start a fresh chat
|
|
164
|
+
/project switch the current project
|
|
165
|
+
/resume resume a saved chat
|
|
166
|
+
/compact compact older conversation context
|
|
167
|
+
/autoclear manage idle-time context clearing
|
|
168
|
+
/context inspect the current context surface
|
|
169
|
+
/usage show provider quota and balance
|
|
170
|
+
/providers configure authentication and local endpoints
|
|
171
|
+
/model choose the main provider and model
|
|
172
|
+
/websearch choose the web search route
|
|
173
|
+
/workflow choose the active workflow
|
|
174
|
+
/agents inspect agents and model overrides
|
|
175
|
+
/effort set reasoning effort
|
|
176
|
+
/fast toggle supported model fast mode
|
|
177
|
+
/OutputStyle choose the Lead response style
|
|
178
|
+
/theme change the TUI color theme
|
|
179
|
+
/memory inspect and edit core memory
|
|
180
|
+
/mcp manage MCP servers and tools
|
|
181
|
+
/skills choose a skill for the next request
|
|
182
|
+
/plugins manage local plugin integrations
|
|
183
|
+
/hooks manage before-tool hooks and events
|
|
184
|
+
/setting open runtime settings
|
|
185
|
+
/profile set your title and response language
|
|
186
|
+
/update check for updates
|
|
187
|
+
/doctor diagnose installation health
|
|
188
|
+
/quit quit the TUI
|
|
124
189
|
```
|
|
125
190
|
|
|
126
191
|
Workflows and agents are Markdown definition packs (`WORKFLOW.md`, `AGENT.md`).
|
|
127
192
|
Built-in packs ship with Mixdog; custom packs live under the Mixdog data
|
|
128
193
|
directory.
|
|
129
194
|
|
|
130
|
-
##
|
|
195
|
+
## Desktop app
|
|
131
196
|
|
|
132
|
-
Mixdog Desktop runs the same agent runtime as the CLI
|
|
133
|
-
workbench:
|
|
197
|
+
Mixdog Desktop runs the same agent runtime as the CLI:
|
|
134
198
|
|
|
135
199
|
- Split panes for parallel, independently routed agent sessions
|
|
200
|
+
- Live session handoff between the TUI, desktop windows, and paired browsers
|
|
136
201
|
- Monaco editor, LSP integration, diffs, and turn-by-turn edit review
|
|
137
202
|
- Git staging, commits, branches, and generated commit messages
|
|
138
|
-
-
|
|
139
|
-
- Integrated
|
|
203
|
+
- File explorer with previews, thumbnails, search, and drag-and-drop
|
|
204
|
+
- Integrated terminal tabs using the local system shell
|
|
140
205
|
- Image and video generation Studio with a persistent local gallery
|
|
141
|
-
- Visual workflow, agent, and
|
|
206
|
+
- Visual workflow, agent, schedule, and webhook editors
|
|
207
|
+
- Voice dictation with an optional local transcription runtime
|
|
142
208
|
- Provider setup, usage, git identity, and remote pairing settings
|
|
143
209
|
|
|
210
|
+
The paired remote web app is installable on desktop and mobile browsers. It
|
|
211
|
+
uses an authenticated end-to-end encrypted connection before session state,
|
|
212
|
+
terminal data, files, or operation requests cross the relay.
|
|
213
|
+
|
|
144
214
|
For desktop development:
|
|
145
215
|
|
|
146
216
|
```bash
|
|
@@ -148,37 +218,6 @@ cd apps/desktop
|
|
|
148
218
|
npm run dev
|
|
149
219
|
```
|
|
150
220
|
|
|
151
|
-
## Terminal-Bench 2.1
|
|
152
|
-
|
|
153
|
-
Head-to-head runs against other agent CLIs on the same 89 tasks, holding the
|
|
154
|
-
model fixed and changing only the harness. Every run uses the official Harbor
|
|
155
|
-
verifier, fast mode off, a 272k context window, and zero retries.
|
|
156
|
-
|
|
157
|
-
**GPT-5.6 Sol xhigh — Mixdog vs Codex CLI**
|
|
158
|
-
|
|
159
|
-
- Score: **86.5%** (385/445) vs Codex CLI's **84.3%** (75/89)
|
|
160
|
-
- **1.11×** faster per trial (339s vs 378s)
|
|
161
|
-
- **42%** lower priced cost ($0.641 vs $1.096 per trial)
|
|
162
|
-
- **45%** smaller median final context (18.5k vs 33.5k tokens)
|
|
163
|
-
|
|
164
|
-
**Claude Opus 5 — Mixdog vs Claude Code**
|
|
165
|
-
|
|
166
|
-
- Score: **79/89** vs Claude Code's **77/89**
|
|
167
|
-
- **1.15×** faster and **19%** lower priced cost ($104.29 vs $129.21 per run)
|
|
168
|
-
- **28%** smaller median final context (27.6k vs 38.2k tokens)
|
|
169
|
-
|
|
170
|
-
Measurement: the Mixdog Sol run follows the same protocol the official
|
|
171
|
-
Terminal-Bench leaderboard requires — all 89 tasks repeated five times
|
|
172
|
-
(`k=5`, 445 trials), scored by the official Harbor verifier. The Codex CLI
|
|
173
|
-
baseline and both Opus-side runs are single passes (`k=1`, 89 trials each).
|
|
174
|
-
|
|
175
|
-
The official leaderboard is not accepting community submissions, so every run
|
|
176
|
-
here ships its raw artifacts instead — Harbor verdicts, official verifier
|
|
177
|
-
output, pinned task checksums, and the usage snapshots behind every cost
|
|
178
|
-
figure — alongside the harness, presets, and metric scripts that recompute
|
|
179
|
-
each number above:
|
|
180
|
-
[`benchmarks/terminal-bench-2.1/`](benchmarks/terminal-bench-2.1/).
|
|
181
|
-
|
|
182
221
|
## Data and configuration
|
|
183
222
|
|
|
184
223
|
Mixdog uses `~/.mixdog` as its home root and `~/.mixdog/data` for runtime data
|
|
@@ -213,10 +252,11 @@ Main directories:
|
|
|
213
252
|
|
|
214
253
|
```text
|
|
215
254
|
src/ CLI, TUI, runtime, workflows, agents, and rules
|
|
216
|
-
apps/desktop/
|
|
217
|
-
apps/relay/ remote web relay
|
|
255
|
+
apps/desktop/ cross-platform desktop app
|
|
256
|
+
apps/relay/ remote web app and relay
|
|
218
257
|
native/ native process, search, patch, and support binaries
|
|
219
258
|
scripts/ tests, diagnostics, benchmarks, and build scripts
|
|
259
|
+
benchmarks/ reproducible benchmark harnesses, results, and raw artifacts
|
|
220
260
|
vendor/ vendored runtime components
|
|
221
261
|
```
|
|
222
262
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mixdog",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.153",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Standalone mixdog coding-agent CLI/TUI workspace.",
|
|
@@ -66,11 +66,17 @@
|
|
|
66
66
|
"test:native-edit-wire": "node scripts/native-edit-wire-test.mjs",
|
|
67
67
|
"test:release-critical": "npm run test:release-assets && npm run smoke:patch && npm run test:providers",
|
|
68
68
|
"test:spec-advisory": "node scripts/advisory-spec-test.mjs && npm run test:spec-advisory --prefix apps/desktop",
|
|
69
|
-
"test:session-transport": "node --test scripts/session-transport-test.mjs scripts/daemon-bootstrap-test.mjs",
|
|
70
|
-
"test:session": "node --test scripts/runtime-turn-contract-test.mjs scripts/session-save-fault-store-test.mjs scripts/turn-review-revert-test.mjs src/runtime/shared/tool-surface.test.mjs",
|
|
69
|
+
"test:session-transport": "node --test scripts/session-transport-test.mjs scripts/daemon-bootstrap-test.mjs src/runtime/shared/child-spawn-remote.test.mjs src/standalone/session-runtime-agent-control-client.test.mjs src/standalone/session-runtime-dispatch-cancel.test.mjs src/standalone/session-runtime-host-factory.test.mjs src/standalone/session-runtime-inline-host.test.mjs src/standalone/session-runtime-provider-cooldown.test.mjs src/standalone/session-runtime-shard-host.test.mjs src/standalone/session-runtime-shard-router.test.mjs",
|
|
70
|
+
"test:session": "node --test scripts/runtime-turn-contract-test.mjs scripts/session-save-fault-store-test.mjs scripts/turn-review-revert-test.mjs src/runtime/shared/tool-surface.test.mjs src/runtime/bridge-clients.test.mjs",
|
|
71
|
+
"test:office": "node --test src/runtime/office/office-runtime.test.mjs src/runtime/office/office-assurance.test.mjs && npm run test:office-approval --prefix apps/desktop",
|
|
72
|
+
"test:office:live": "node scripts/run-office-live-tests.mjs",
|
|
71
73
|
"test:media": "node --test src/runtime/media/store.test.mjs src/runtime/media/renditions.test.mjs src/runtime/media/adapters/codex-image.test.mjs",
|
|
72
74
|
"failures": "node scripts/tool-failures.mjs",
|
|
73
75
|
"trace:llm": "node scripts/llm-trace-summary.mjs",
|
|
76
|
+
"bench:office": "node src/runtime/office/benchmark.mjs",
|
|
77
|
+
"bench:office:contract": "node src/runtime/office/contract-benchmark.mjs",
|
|
78
|
+
"bench:office:assurance": "node src/runtime/office/assurance-benchmark.mjs",
|
|
79
|
+
"bench:office:quality:live": "node src/runtime/office/quality-live-benchmark.mjs",
|
|
74
80
|
"diag:sessions": "node scripts/session-diag.mjs",
|
|
75
81
|
"diag:tools": "node scripts/tool-efficiency-diag.mjs",
|
|
76
82
|
"diag:sweep": "node scripts/session-sweep.mjs",
|
|
@@ -118,27 +124,34 @@
|
|
|
118
124
|
"@huggingface/transformers": "^3.8.1",
|
|
119
125
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
120
126
|
"@mozilla/readability": "^0.6.0",
|
|
127
|
+
"@napi-rs/canvas": "^1.0.8",
|
|
128
|
+
"@pdf-lib/fontkit": "^1.1.1",
|
|
121
129
|
"chalk": "^5.6.2",
|
|
122
130
|
"cli-highlight": "^2.1.11",
|
|
123
131
|
"diff": "^9.0.0",
|
|
124
132
|
"ink": "^7.1.0",
|
|
125
133
|
"jsdom": "^27.0.0",
|
|
134
|
+
"jszip": "^3.10.1",
|
|
126
135
|
"kiwi-nlp": "^0.21.0",
|
|
127
136
|
"marked": "^14.1.4",
|
|
128
137
|
"node-cron": "^4.5.0",
|
|
129
138
|
"onnxruntime-node": "1.23.2",
|
|
130
139
|
"openai": "^6.44.0",
|
|
140
|
+
"pdf-lib": "^1.17.1",
|
|
141
|
+
"pdfjs-dist": "^6.2.108",
|
|
131
142
|
"pg": "^8.22.0",
|
|
132
143
|
"puppeteer-core": "^25.2.0",
|
|
133
144
|
"react": "^19.2.7",
|
|
134
145
|
"sharp": "^0.35.3",
|
|
135
146
|
"string-width": "^8.2.1",
|
|
136
147
|
"strip-ansi": "^7.2.0",
|
|
148
|
+
"tesseract.js": "^7.0.0",
|
|
137
149
|
"tiktoken": "^1.0.22",
|
|
138
|
-
"unpdf": "^1.8.0",
|
|
139
150
|
"undici": "^8.5.0",
|
|
151
|
+
"unpdf": "^1.8.0",
|
|
140
152
|
"wrap-ansi": "^10.0.0",
|
|
141
153
|
"ws": "^8.21.0",
|
|
154
|
+
"yaml": "^2.9.0",
|
|
142
155
|
"zod": "^3.25.76"
|
|
143
156
|
},
|
|
144
157
|
"overrides": {
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, resolve } from 'node:path';
|
|
4
|
+
|
|
5
|
+
function arg(name, fallback) {
|
|
6
|
+
const prefix = `--${name}=`;
|
|
7
|
+
const inline = process.argv.find((value) => value.startsWith(prefix));
|
|
8
|
+
if (inline) return inline.slice(prefix.length);
|
|
9
|
+
const index = process.argv.indexOf(`--${name}`);
|
|
10
|
+
return index >= 0 && index + 1 < process.argv.length ? process.argv[index + 1] : fallback;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function load(path) {
|
|
14
|
+
return JSON.parse(readFileSync(resolve(path), 'utf8'));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function percentile(values, fraction) {
|
|
18
|
+
const sorted = values
|
|
19
|
+
.map(Number)
|
|
20
|
+
.filter(Number.isFinite)
|
|
21
|
+
.sort((a, b) => a - b);
|
|
22
|
+
if (sorted.length === 0) return 0;
|
|
23
|
+
return sorted[Math.max(0, Math.ceil(sorted.length * fraction) - 1)];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function fixed(value, digits = 2) {
|
|
27
|
+
return Number(Number(value || 0).toFixed(digits));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function distribution(values) {
|
|
31
|
+
return {
|
|
32
|
+
p50: percentile(values, 0.5),
|
|
33
|
+
p95: percentile(values, 0.95),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const modelPath = arg(
|
|
38
|
+
'model',
|
|
39
|
+
'artifacts/computer-use/computer-schema-sequence-guided-full.json',
|
|
40
|
+
);
|
|
41
|
+
const hostPath = arg(
|
|
42
|
+
'host',
|
|
43
|
+
'apps/desktop/artifacts/computer-use/scenario-repeat-further-optimized-v5.json',
|
|
44
|
+
);
|
|
45
|
+
const sequencePath = arg(
|
|
46
|
+
'sequence',
|
|
47
|
+
'artifacts/computer-use/sequence-performance-final.json',
|
|
48
|
+
);
|
|
49
|
+
const outputPath = resolve(arg(
|
|
50
|
+
'output',
|
|
51
|
+
'artifacts/computer-use/computer-task-cost-final.json',
|
|
52
|
+
));
|
|
53
|
+
|
|
54
|
+
const model = load(modelPath);
|
|
55
|
+
const host = load(hostPath);
|
|
56
|
+
const sequence = load(sequencePath);
|
|
57
|
+
const rows = Array.isArray(model.rows) ? model.rows : [];
|
|
58
|
+
const totalInputTokens = rows.map((row) => row.usage?.inputTokens);
|
|
59
|
+
const mainInputTokens = rows.map((row) => row.usage?.mainInputTokens);
|
|
60
|
+
const warmupInputTokens = rows.map((row) => row.usage?.warmupInputTokens);
|
|
61
|
+
const cachedTokens = rows.map((row) => row.usage?.cachedTokens);
|
|
62
|
+
const uncachedTokens = rows.map((row) => (
|
|
63
|
+
Number(row.usage?.inputTokens || 0) - Number(row.usage?.cachedTokens || 0)
|
|
64
|
+
));
|
|
65
|
+
const outputTokens = rows.map((row) => row.usage?.outputTokens);
|
|
66
|
+
const modelLatency = rows.map((row) => row.duration_ms);
|
|
67
|
+
const totalRuns = Number(host.total_runs || 0);
|
|
68
|
+
const hostSummary = host.summary || {};
|
|
69
|
+
const perToolCallInput = distribution(totalInputTokens);
|
|
70
|
+
const perToolCallLatency = distribution(modelLatency);
|
|
71
|
+
|
|
72
|
+
const taskProfile = (modelCalls) => ({
|
|
73
|
+
model_calls: modelCalls,
|
|
74
|
+
call_equivalent_input_tokens_p50: fixed(perToolCallInput.p50 * modelCalls),
|
|
75
|
+
call_equivalent_input_tokens_p95: fixed(perToolCallInput.p95 * modelCalls),
|
|
76
|
+
model_latency_p50_ms: fixed(perToolCallLatency.p50 * modelCalls),
|
|
77
|
+
note: 'Call-equivalent only; later turns can include fresh-state text or images and prompt-cache behavior.',
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const report = {
|
|
81
|
+
schema_version: 1,
|
|
82
|
+
generated_at: new Date().toISOString(),
|
|
83
|
+
inputs: {
|
|
84
|
+
model: resolve(modelPath),
|
|
85
|
+
host: resolve(hostPath),
|
|
86
|
+
sequence: resolve(sequencePath),
|
|
87
|
+
},
|
|
88
|
+
model_call: {
|
|
89
|
+
samples: rows.length,
|
|
90
|
+
first_call_success_rate: model.summary?.first_call_success_rate ?? null,
|
|
91
|
+
total_input_tokens: perToolCallInput,
|
|
92
|
+
main_input_tokens: distribution(mainInputTokens),
|
|
93
|
+
warmup_input_tokens: distribution(warmupInputTokens),
|
|
94
|
+
cached_tokens: distribution(cachedTokens),
|
|
95
|
+
uncached_tokens: distribution(uncachedTokens),
|
|
96
|
+
output_tokens: distribution(outputTokens),
|
|
97
|
+
latency_ms: perToolCallLatency,
|
|
98
|
+
},
|
|
99
|
+
windows_host_scenario: {
|
|
100
|
+
samples: totalRuns,
|
|
101
|
+
pass_rate: hostSummary.success_rate ?? null,
|
|
102
|
+
model_facing_tool_calls_per_run: fixed(hostSummary.tool_calls / totalRuns, 3),
|
|
103
|
+
observations_per_run: fixed(hostSummary.observations / totalRuns, 3),
|
|
104
|
+
mutations_per_run: fixed(hostSummary.mutations / totalRuns, 3),
|
|
105
|
+
latency_ms: {
|
|
106
|
+
p50: hostSummary.scenario_duration_p50_ms,
|
|
107
|
+
p95: hostSummary.scenario_duration_p95_ms,
|
|
108
|
+
},
|
|
109
|
+
payload_bytes_per_run: {
|
|
110
|
+
request: fixed(hostSummary.request_bytes / totalRuns),
|
|
111
|
+
response_text: fixed(hostSummary.response_text_bytes / totalRuns),
|
|
112
|
+
images: fixed(hostSummary.image_bytes / totalRuns),
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
task_profiles: {
|
|
116
|
+
fresh_observation_action: taskProfile(1),
|
|
117
|
+
observe_then_action: taskProfile(2),
|
|
118
|
+
discover_observe_then_action: taskProfile(3),
|
|
119
|
+
safe_two_action_chain: {
|
|
120
|
+
separate: {
|
|
121
|
+
model_calls_after_observation: 2,
|
|
122
|
+
post_action_captures: sequence.separate?.post_action_captures,
|
|
123
|
+
host_latency_p50_ms: sequence.separate?.p50_ms,
|
|
124
|
+
host_latency_p95_ms: sequence.separate?.p95_ms,
|
|
125
|
+
},
|
|
126
|
+
sequence: {
|
|
127
|
+
model_calls_after_observation: 1,
|
|
128
|
+
post_action_captures: sequence.sequence?.post_action_captures,
|
|
129
|
+
host_latency_p50_ms: sequence.sequence?.p50_ms,
|
|
130
|
+
host_latency_p95_ms: sequence.sequence?.p95_ms,
|
|
131
|
+
},
|
|
132
|
+
reduction: sequence.reduction,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
caveats: [
|
|
136
|
+
'Model token samples are provider-reported single-call usage from 36 representative first-call tasks.',
|
|
137
|
+
'Windows host samples are 230 real native, Electron, Chrome, Korean OCR, stale-state, and recovery runs.',
|
|
138
|
+
'Task profiles are call-equivalent projections, not billing claims; screenshots and growing conversation history can increase later-turn input.',
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
mkdirSync(dirname(outputPath), { recursive: true });
|
|
143
|
+
writeFileSync(outputPath, `${JSON.stringify(report, null, 2)}\n`, 'utf8');
|
|
144
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n${outputPath}\n`);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
|
|
4
|
+
const testPath = fileURLToPath(new URL('../src/runtime/office/office-live-runtime.test.mjs', import.meta.url));
|
|
5
|
+
const child = spawn(process.execPath, ['--test', testPath], {
|
|
6
|
+
cwd: process.cwd(),
|
|
7
|
+
env: {
|
|
8
|
+
...process.env,
|
|
9
|
+
MIXDOG_TEST_LIVE_OFFICE: '1',
|
|
10
|
+
},
|
|
11
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
12
|
+
windowsHide: true,
|
|
13
|
+
});
|
|
14
|
+
let tapFailed = false;
|
|
15
|
+
let tail = '';
|
|
16
|
+
const forward = (stream, target) => {
|
|
17
|
+
stream.on('data', (chunk) => {
|
|
18
|
+
const text = chunk.toString();
|
|
19
|
+
target.write(text);
|
|
20
|
+
tail = `${tail}${text}`.slice(-16_384);
|
|
21
|
+
if (/(?:^|\n)not ok \d+ -/m.test(tail)) tapFailed = true;
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
forward(child.stdout, process.stdout);
|
|
25
|
+
forward(child.stderr, process.stderr);
|
|
26
|
+
child.once('error', (error) => {
|
|
27
|
+
process.stderr.write(`${error?.stack || error}\n`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
});
|
|
30
|
+
child.once('close', (code) => {
|
|
31
|
+
process.exit(tapFailed ? 1 : Number.isInteger(code) ? code : 1);
|
|
32
|
+
});
|
package/scripts/tool-stress.mjs
CHANGED
|
@@ -17,7 +17,6 @@ import { executePatchTool } from '../src/runtime/agent/orchestrator/tools/patch.
|
|
|
17
17
|
import { normalizeToolEnvelope } from '../src/runtime/agent/orchestrator/session/tool-envelope.mjs';
|
|
18
18
|
import { warmNativeSpawnServer } from '../src/runtime/agent/orchestrator/tools/lib/native-spawn-client.mjs';
|
|
19
19
|
import { warmNativeSearchServer } from '../src/runtime/agent/orchestrator/tools/builtin/native-search-client.mjs';
|
|
20
|
-
import { prewarmFindEnumeration } from '../src/runtime/agent/orchestrator/tools/builtin/list-tool.mjs';
|
|
21
20
|
|
|
22
21
|
if (!process.argv.includes('--unsafe-live')) {
|
|
23
22
|
console.error('Refusing high-impact tool stress without --unsafe-live; run `node scripts/tool-search-bench.mjs` for safe exploration diagnostics.');
|
|
@@ -66,7 +65,6 @@ try {
|
|
|
66
65
|
await Promise.all([
|
|
67
66
|
warmNativeSpawnServer(),
|
|
68
67
|
warmNativeSearchServer(),
|
|
69
|
-
prewarmFindEnumeration(root),
|
|
70
68
|
]);
|
|
71
69
|
prewarmMs = Date.now() - prewarmStarted;
|
|
72
70
|
// ── Phase A+C: concurrent multi-session waves (search/read/graph/shell +
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Front Worker
|
|
3
|
+
description: Use for web frontend, GUI, UI, visual presentation, and 2D or 3D asset implementation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Own visual and interface implementation.
|
|
7
|
+
|
|
8
|
+
Implement the requested visual outcome while preserving existing interaction
|
|
9
|
+
behavior and project conventions. Keep changes targeted and maintain hierarchy,
|
|
10
|
+
consistency, responsiveness, and accessibility when relevant. Preserve source
|
|
11
|
+
formats and naming conventions for asset work.
|
|
12
|
+
|
|
13
|
+
Hand off the completed visual outcome and changed files or assets.
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
name: Heavy Worker
|
|
3
|
+
description: Use only for large refactors, cross-cutting architectural changes, difficult root-cause investigations, or implementation beyond the default Worker's normal scope.
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
Own the assigned implementation slice through staged delivery.
|
|
6
|
+
Own high-complexity implementation through staged delivery.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
Map the affected architecture and dependencies, divide the work into coherent
|
|
9
|
+
stages, and execute them in dependency order. Preserve existing behavior unless
|
|
10
|
+
the brief explicitly changes it, and control blast radius across boundaries.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Do not cross that boundary without a new bounded assignment; report blocked
|
|
15
|
-
work with the relevant file:line.
|
|
12
|
+
When a required decision, dependency, or ownership boundary is unresolved,
|
|
13
|
+
stop and report it with the relevant `file:line`.
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
Hand off the completed outcome, material design decisions, and changed
|
|
16
|
+
`file:line`.
|
|
18
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "heavy-worker",
|
|
3
3
|
"name": "Heavy Worker",
|
|
4
|
-
"description": "Use for
|
|
4
|
+
"description": "Use only for large refactors, cross-cutting architectural changes, difficult root-cause investigations, or implementation beyond the default Worker's normal scope.",
|
|
5
5
|
"entry": "AGENT.md"
|
|
6
6
|
}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
name: Reviewer
|
|
3
|
+
description: Use after implementation to independently verify correctness, regressions, risks, and stated acceptance criteria before final reporting.
|
|
3
4
|
---
|
|
4
5
|
|
|
5
|
-
# Reviewer
|
|
6
|
-
|
|
7
6
|
Independent regression/risk review agent.
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
unsupported assumptions, and counterexamples before confirming.
|
|
14
|
-
Report findings first, severity-ordered, with one line per `file:line`. If clean,
|
|
15
|
-
say so in one line and include only material residual risk.
|
|
8
|
+
Inspect the diff, affected boundaries, existing tests, and stated acceptance
|
|
9
|
+
criteria with independent judgment. Run the necessary builds, tests, lint, or
|
|
10
|
+
runtime checks and actively seek regressions, unsupported assumptions, security
|
|
11
|
+
risks, and counterexamples.
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
Do not modify files or reimplement the change. Report actionable findings first,
|
|
14
|
+
severity-ordered, with evidence and one line per `file:line`. If clean, say so
|
|
15
|
+
in one line and include only material residual risk.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "reviewer",
|
|
3
3
|
"name": "Reviewer",
|
|
4
|
-
"description": "Use
|
|
4
|
+
"description": "Use after implementation to independently verify correctness, regressions, risks, and stated acceptance criteria before final reporting.",
|
|
5
5
|
"entry": "AGENT.md"
|
|
6
6
|
}
|