mixdog 1.2.6 → 1.3.1
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/simple-icons-CC0-1.0.txt +30 -0
- package/NOTICE.md +71 -9
- package/package.json +4 -1
- package/scripts/check-model-recommendations.mjs +89 -0
- package/scripts/gate-local.mjs +7 -0
- package/scripts/lib/isolated-test-env.mjs +16 -0
- package/src/agents/reviewer/AGENT.md +4 -2
- package/src/agents/reviewer/agent.json +1 -1
- package/src/defaults/shipped-history.json +10 -0
- package/src/defaults/skills/browser-use/SKILL.md +5 -0
- package/src/defaults/skills/memory-management/SKILL.md +4 -1
- package/src/defaults/skills/setup/references/actions.md +14 -4
- package/src/defaults/skills/setup-guide/SKILL.md +178 -0
- package/src/defaults/skills/setup-guide/model-recommendations.json +333 -0
- package/src/lib/rules-builder.cjs +55 -6
- package/src/output-styles/common.md +13 -8
- package/src/rules/agent/AGENT.md +4 -0
- package/src/rules/agent-mode/AGENT_MODE.md +24 -0
- package/src/rules/agent-mode/MIXY.md +28 -0
- package/src/rules/agent-mode/ROUTINE.md +6 -0
- package/src/rules/lead/LEAD.md +7 -3
- package/src/rules/shared/70-delivery.md +3 -0
- package/src/runtime/agent/orchestrator/agent-runtime/room-supervisor-completion.mjs +86 -0
- package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +77 -14
- package/src/runtime/agent/orchestrator/context/role-instructions.mjs +241 -14
- package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +4 -2
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +216 -0
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +5 -4
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +10 -1
- package/src/runtime/agent/orchestrator/mcp/client.mjs +115 -11
- package/src/runtime/agent/orchestrator/mcp/oauth-account.mjs +97 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-client.mjs +49 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-credentials.mjs +59 -9
- package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +32 -7
- package/src/runtime/agent/orchestrator/mcp/oauth-provider.mjs +45 -6
- package/src/runtime/agent/orchestrator/mcp/oauth.mjs +195 -6
- package/src/runtime/agent/orchestrator/mcp/server-connectors.mjs +17 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-catalog.mjs +7 -2
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +10 -3
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +4 -0
- package/src/runtime/agent/orchestrator/providers/auto-effort.mjs +7 -8
- package/src/runtime/agent/orchestrator/providers/cursor-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/lib/tool-call-wire-ids.mjs +65 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-retry-profile.mjs +8 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +9 -2
- package/src/runtime/agent/orchestrator/providers/openai-error-contract.mjs +17 -12
- package/src/runtime/agent/orchestrator/providers/openai-oauth-tokens.mjs +10 -0
- package/src/runtime/agent/orchestrator/providers/openai-responses-input.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/provider-error-kind.mjs +14 -2
- package/src/runtime/agent/orchestrator/providers/retry-executor.mjs +17 -0
- package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +96 -1
- package/src/runtime/agent/orchestrator/runtime-core/context-status-shape.mjs +4 -0
- package/src/runtime/agent/orchestrator/runtime-core/extension-scopes.mjs +6 -4
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +14 -0
- package/src/runtime/agent/orchestrator/runtime-core/plugin-mcp.mjs +1 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-bridge.mjs +12 -6
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +32 -5
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +21 -5
- package/src/runtime/agent/orchestrator/runtime-core/workflow/agents.mjs +40 -7
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +52 -20
- package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/agent-home.d.mts +4 -0
- package/src/runtime/agent/orchestrator/session/agent-home.mjs +33 -0
- package/src/runtime/agent/orchestrator/session/agent-mode.mjs +62 -0
- package/src/runtime/agent/orchestrator/session/agent-room-supervisor.d.mts +31 -0
- package/src/runtime/agent/orchestrator/session/agent-room-supervisor.mjs +241 -0
- package/src/runtime/agent/orchestrator/session/agent-room.d.mts +166 -0
- package/src/runtime/agent/orchestrator/session/agent-room.mjs +650 -0
- package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +7 -1
- package/src/runtime/agent/orchestrator/session/compact/user-message-kind.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/compaction-archive-capture.mjs +6 -2
- package/src/runtime/agent/orchestrator/session/human-gate/gate.mjs +192 -0
- package/src/runtime/agent/orchestrator/session/human-gate/held-message.mjs +95 -0
- package/src/runtime/agent/orchestrator/session/human-gate/outbound-policy.mjs +221 -0
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +195 -0
- package/src/runtime/agent/orchestrator/session/human-gate/store.mjs +167 -0
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +9 -0
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +10 -0
- package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +108 -6
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +10 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +74 -15
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +9 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +5 -4
- package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +13 -3
- package/src/runtime/agent/orchestrator/session/loop/usage.mjs +49 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-commit.mjs +18 -8
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/manager/pending-lifecycle-epoch.mjs +0 -8
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +44 -16
- package/src/runtime/agent/orchestrator/session/manager/provider-replay.mjs +50 -0
- package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +22 -5
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +39 -4
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +33 -24
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +58 -8
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +16 -0
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +3 -2
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +7 -1
- package/src/runtime/agent/orchestrator/session/manager/usage-metrics.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/workflow-switch-notice.mjs +58 -0
- package/src/runtime/agent/orchestrator/session/mixy-name.mjs +27 -0
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +32 -5
- package/src/runtime/agent/orchestrator/session/routine-result.d.mts +86 -0
- package/src/runtime/agent/orchestrator/session/routine-result.mjs +329 -0
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-row.mjs +8 -0
- package/src/runtime/agent/orchestrator/session/store-record-strict-scan.mjs +28 -9
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +16 -2
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +44 -12
- package/src/runtime/agent/orchestrator/session/store-summary-last-message.mjs +46 -0
- package/src/runtime/agent/orchestrator/session/store-summary-visibility.mjs +0 -4
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +58 -10
- package/src/runtime/agent/orchestrator/session/transcript-restore/user-text.mjs +92 -15
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +12 -0
- package/src/runtime/agent/orchestrator/tools/builtin/native-search-client.mjs +113 -5
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +4 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +25 -1
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +8 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +6 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +3 -0
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +75 -57
- package/src/runtime/attachments/store.mjs +6 -0
- package/src/runtime/browser-bridge/client.mjs +24 -0
- package/src/runtime/channels/lib/scheduler.mjs +40 -12
- package/src/runtime/channels/lib/schedules-db.mjs +71 -12
- package/src/runtime/channels/lib/webhook/session-dispatch.mjs +36 -16
- package/src/runtime/channels/lib/webhook.mjs +0 -1
- package/src/runtime/channels/lib/webhooks-db.mjs +100 -10
- package/src/runtime/channels/lib/worker-main.mjs +17 -20
- package/src/runtime/computer-bridge/client.mjs +28 -1
- package/src/runtime/connectors/gmail-app-password.mjs +690 -0
- package/src/runtime/connectors/google-mcp.mjs +446 -0
- package/src/runtime/effort-judge/judge-client.mjs +1 -1
- package/src/runtime/effort-judge/model-manifest.json +7 -7
- package/src/runtime/memory/lib/core-memory-access.mjs +69 -0
- package/src/runtime/memory/lib/core-memory-file.mjs +16 -8
- package/src/runtime/memory/lib/core-memory-index.mjs +15 -9
- package/src/runtime/memory/lib/core-memory-management.mjs +10 -4
- package/src/runtime/memory/lib/core-memory-store.mjs +53 -30
- package/src/runtime/memory/lib/core-memory-uniqueness.mjs +10 -6
- package/src/runtime/memory/lib/http-router/session-routes.mjs +3 -2
- package/src/runtime/memory/lib/memory-action-handlers/core-actions.mjs +44 -14
- package/src/runtime/memory/lib/memory-schema/core-and-meta.mjs +11 -0
- package/src/runtime/memory/lib/memory.mjs +7 -1
- package/src/runtime/memory/lib/query-core-recall.mjs +9 -1
- package/src/runtime/memory/lib/query-hybrid-search.mjs +2 -0
- package/src/runtime/memory/lib/tool-call-handler.mjs +2 -0
- package/src/runtime/memory/tool-defs.mjs +5 -0
- package/src/runtime/shared/agent-avatar-sprites.mjs +445 -0
- package/src/runtime/shared/agent-avatar.d.mts +64 -0
- package/src/runtime/shared/agent-avatar.mjs +320 -0
- package/src/runtime/shared/agent-kind.mjs +152 -0
- package/src/runtime/shared/agent-route-config.d.mts +4 -0
- package/src/runtime/shared/agent-route-config.mjs +30 -0
- package/src/runtime/shared/agent-store.mjs +132 -0
- package/src/runtime/shared/atomic-file.mjs +14 -1
- package/src/runtime/shared/bot-split-migration.mjs +457 -0
- package/src/runtime/shared/config-patch.mjs +20 -1
- package/src/runtime/shared/config.mjs +8 -1
- package/src/runtime/shared/connector-accounts.mjs +15 -0
- package/src/runtime/shared/connector-catalog.d.mts +51 -0
- package/src/runtime/shared/connector-catalog.mjs +228 -0
- package/src/runtime/shared/connector-triggers.d.mts +3 -0
- package/src/runtime/shared/connector-triggers.mjs +45 -0
- package/src/runtime/shared/err-text.mjs +3 -1
- package/src/runtime/shared/error-presentation.mjs +91 -6
- package/src/runtime/shared/google-oauth-client.mjs +24 -0
- package/src/runtime/shared/handoff-artifacts.d.mts +20 -0
- package/src/runtime/shared/handoff-artifacts.mjs +61 -0
- package/src/runtime/shared/held-request-host.d.mts +12 -0
- package/src/runtime/shared/held-request-host.mjs +71 -0
- package/src/runtime/shared/llm/provider-model-identities.mjs +6 -1
- package/src/runtime/shared/llm/usage-accounting.mjs +7 -1
- package/src/runtime/shared/model-route-fallback.mjs +79 -7
- package/src/runtime/shared/plain-preview.d.mts +1 -0
- package/src/runtime/shared/plain-preview.mjs +33 -0
- package/src/runtime/shared/routine-limits.d.mts +11 -0
- package/src/runtime/shared/routine-limits.mjs +21 -0
- package/src/runtime/shared/routine-trigger.d.mts +10 -0
- package/src/runtime/shared/routine-trigger.mjs +44 -0
- package/src/runtime/shared/schedule-model-ref.mjs +9 -10
- package/src/runtime/shared/sensitive-path-rules.d.mts +15 -0
- package/src/runtime/shared/sensitive-path-rules.mjs +256 -0
- package/src/runtime/shared/slow-span.mjs +4 -12
- package/src/runtime/shared/statusline/statusline-segments.mjs +13 -1
- package/src/runtime/shared/transcript-metadata.mjs +10 -0
- package/src/runtime/shared/turn-changes.mjs +0 -8
- package/src/runtime/shared/usage-readout-totals.mjs +58 -0
- package/src/runtime/shared/user-data-guard.mjs +119 -38
- package/src/session-runtime/agent-home-delivery.mjs +826 -0
- package/src/session-runtime/agent-profile-changes.mjs +21 -0
- package/src/session-runtime/agent-room-delivery.mjs +133 -0
- package/src/session-runtime/agent-task-sessions.mjs +460 -0
- package/src/session-runtime/boot/apis.mjs +63 -18
- package/src/session-runtime/boot/facade.mjs +5 -8
- package/src/session-runtime/boot/infrastructure.mjs +28 -17
- package/src/session-runtime/boot/providers.mjs +14 -4
- package/src/session-runtime/boot/tools.mjs +3 -0
- package/src/session-runtime/channel-config-api.mjs +53 -5
- package/src/session-runtime/config-lifecycle.mjs +43 -2
- package/src/session-runtime/cwd-plugins/core-memory-context.mjs +36 -20
- package/src/session-runtime/cwd-plugins/plugin-status.mjs +6 -1
- package/src/session-runtime/handoff-attachments.mjs +593 -0
- package/src/session-runtime/held-requests.mjs +228 -0
- package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +121 -0
- package/src/session-runtime/internal-tool-executor/feature-tools.mjs +5 -1
- package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +31 -2
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +56 -3
- package/src/session-runtime/internal-tool-executor.mjs +2 -0
- package/src/session-runtime/lifecycle/session-catalog.mjs +9 -0
- package/src/session-runtime/lifecycle/session-switch/resume.mjs +4 -0
- package/src/session-runtime/lifecycle/shared.mjs +6 -0
- package/src/session-runtime/mcp-glue/server-catalog.mjs +8 -0
- package/src/session-runtime/mcp-glue/server-input.mjs +3 -0
- package/src/session-runtime/mcp-oauth-login.mjs +112 -15
- package/src/session-runtime/model-route/route-persist.mjs +2 -2
- package/src/session-runtime/model-route/route-tuning.mjs +7 -1
- package/src/session-runtime/model-route/set-route.mjs +35 -4
- package/src/session-runtime/native-web-search.mjs +2 -2
- package/src/session-runtime/new-session-config.mjs +6 -1
- package/src/session-runtime/owned-automation-run.mjs +229 -0
- package/src/session-runtime/resource-api.mjs +5 -0
- package/src/session-runtime/resource-mcp-api.mjs +107 -13
- package/src/session-runtime/resource-skills-api.mjs +12 -0
- package/src/session-runtime/room-member-gate.mjs +48 -0
- package/src/session-runtime/route-resolution.mjs +5 -11
- package/src/session-runtime/routine-home-turn.mjs +156 -0
- package/src/session-runtime/routine-owner.mjs +48 -0
- package/src/session-runtime/schedule-session-run.mjs +30 -64
- package/src/session-runtime/services/agent-tool/helpers.mjs +30 -1
- package/src/session-runtime/services/agent-tool/send-flow.mjs +11 -3
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-plan.mjs +19 -4
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +2 -0
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +4 -1
- package/src/session-runtime/services/agent-tool/spawn-preset.mjs +5 -8
- package/src/session-runtime/services/agent-tool/tool-def.mjs +7 -0
- package/src/session-runtime/services/channel-admin.mjs +93 -24
- package/src/session-runtime/services/memory-access.mjs +37 -0
- package/src/session-runtime/services/provider-admin.mjs +74 -39
- package/src/session-runtime/services/schedule-access.mjs +91 -0
- package/src/session-runtime/session-create/session-options.mjs +34 -7
- package/src/session-runtime/session-hooks.mjs +16 -8
- package/src/session-runtime/setup-tool/executor.mjs +79 -6
- package/src/session-runtime/setup-tool/extended-actions.mjs +90 -20
- package/src/session-runtime/setup-tool/settings-contract.mjs +14 -6
- package/src/session-runtime/setup-tool/tool-defs.mjs +8 -0
- package/src/session-runtime/skills-api.mjs +16 -1
- package/src/session-runtime/tool-policy-refresh.mjs +249 -29
- package/src/session-runtime/turn/session-ops.mjs +8 -1
- package/src/session-runtime/turn/turn-run/ask-callbacks.mjs +10 -2
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +14 -0
- package/src/session-runtime/webhook-session-run.mjs +49 -67
- package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +239 -0
- package/src/session-runtime/workflow-agents-api/agent-editor.mjs +650 -25
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +67 -7
- package/src/session-runtime/workflow-agents-api/onboarding.mjs +11 -4
- package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +11 -1
- package/src/session-runtime/workflow-agents-api.mjs +4 -1
- package/src/standalone/daemon-agent-control.mjs +1 -8
- package/src/standalone/daemon-session-control.mjs +21 -4
- package/src/standalone/daemon.mjs +31 -5
- package/src/standalone/session-protocol.mjs +27 -0
- package/src/standalone/session-service/agent-tree/agent-turns.mjs +46 -3
- package/src/standalone/session-service/agent-tree.mjs +4 -3
- package/src/standalone/session-service/session-calls/session-turns.mjs +28 -0
- package/src/standalone/session-service.mjs +19 -0
- package/src/tui/app/slash-commands.mjs +20 -0
- package/src/tui/dist/index.mjs +234 -95
- package/src/tui/session/context-state.mjs +6 -1
- package/src/tui/session/notice-surface.mjs +34 -4
- package/src/tui/session/queue-helpers.mjs +2 -1
- package/src/tui/session/session-api/extensions.mjs +4 -0
- package/src/tui/session/session-api/intake/submission.mjs +5 -0
- package/src/tui/session/session-api/integrations.mjs +8 -0
- package/src/tui/session/session-api/lifecycle/session-reset.mjs +13 -3
- package/src/tui/session/session-api/lifecycle.mjs +17 -1
- package/src/tui/session/session-api/routes.mjs +61 -5
- package/src/tui/session/session-flow/drain.mjs +12 -3
- package/src/tui/session/session-flow/queue/entry-shape.mjs +2 -1
- package/src/tui/session/session-flow/queue/take-entries.mjs +3 -2
- package/src/tui/session/session-flow/steering.mjs +58 -24
- package/src/tui/session/tool-approval.mjs +26 -5
- package/src/tui/session/transcript-intake.mjs +8 -2
- package/src/tui/session/transcript-spill.mjs +5 -1
- package/src/tui/session/tui-steering-persist.mjs +65 -42
- package/src/tui/session/turn-live-call.mjs +64 -0
- package/src/tui/session/turn.mjs +34 -8
- package/src/session-runtime/automation-agents.mjs +0 -94
- package/src/session-runtime/automation-workflow.mjs +0 -59
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# CC0 1.0 Universal
|
|
2
|
+
|
|
3
|
+
## Statement of Purpose
|
|
4
|
+
|
|
5
|
+
The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an “owner”) of an original work of authorship and/or a database (each, a “Work”).
|
|
6
|
+
|
|
7
|
+
Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works (“Commons”) that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
|
|
8
|
+
|
|
9
|
+
For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the “Affirmer”), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
|
|
10
|
+
|
|
11
|
+
1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights (“Copyright and Related Rights”). Copyright and Related Rights include, but are not limited to, the following:
|
|
12
|
+
1. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
|
|
13
|
+
2. moral rights retained by the original author(s) and/or performer(s);
|
|
14
|
+
3. publicity and privacy rights pertaining to a person’s image or likeness depicted in a Work;
|
|
15
|
+
4. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(i), below;
|
|
16
|
+
5. rights protecting the extraction, dissemination, use and reuse of data in a Work;
|
|
17
|
+
6. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
|
|
18
|
+
7. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
|
|
19
|
+
|
|
20
|
+
2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer’s Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “Waiver”). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer’s heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer’s express Statement of Purpose.
|
|
21
|
+
|
|
22
|
+
3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer’s express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer’s Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the “License”). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer’s express Statement of Purpose.
|
|
23
|
+
|
|
24
|
+
4. Limitations and Disclaimers.
|
|
25
|
+
1. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
|
|
26
|
+
2. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
|
|
27
|
+
3. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
|
|
28
|
+
4. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
|
|
29
|
+
|
|
30
|
+
For more information, please see <https://creativecommons.org/publicdomain/zero/1.0>.
|
package/NOTICE.md
CHANGED
|
@@ -20,6 +20,8 @@ Full license texts live in `LICENSES/`:
|
|
|
20
20
|
notice referenced by the generated files.
|
|
21
21
|
- `LICENSES/browser-import-NOTICE.txt` — source and license boundary for the
|
|
22
22
|
optional GPL Chrome password import sidecar.
|
|
23
|
+
- `LICENSES/simple-icons-CC0-1.0.txt` — the CC0 1.0 dedication of the Simple
|
|
24
|
+
Icons brand marks used for connectors.
|
|
23
25
|
- Tidy engine license texts listed in the Tidy engines section below.
|
|
24
26
|
|
|
25
27
|
## MIT
|
|
@@ -123,15 +125,75 @@ downloads it from this repository's `effort-judge-v*` GitHub releases, as
|
|
|
123
125
|
listed in `src/runtime/effort-judge/model-manifest.json`.
|
|
124
126
|
|
|
125
127
|
Statement of changes (Apache-2.0 section 4(b)): only the text encoder is kept,
|
|
126
|
-
reduced to
|
|
127
|
-
model is fine-tuned to rate the reasoning effort a request
|
|
128
|
-
are exported to ONNX and quantized to 4 bits. Full license
|
|
129
|
-
`LICENSES/Apache-2.0.txt`.
|
|
130
|
-
|
|
131
|
-
Its training data includes requests from SWE-chat
|
|
132
|
-
(<https://huggingface.co/datasets/
|
|
133
|
-
|
|
134
|
-
|
|
128
|
+
reduced to 18 of its layers; a four-level classification head is added and the
|
|
129
|
+
model is fine-tuned to rate the reasoning effort a request or an agent step
|
|
130
|
+
needs; the weights are exported to ONNX and quantized to 4 bits. Full license
|
|
131
|
+
text: `LICENSES/Apache-2.0.txt`.
|
|
132
|
+
|
|
133
|
+
Its training data includes requests and agent steps from SWE-chat
|
|
134
|
+
(<https://huggingface.co/datasets/SALT-NLP/SWE-chat>, Open Data Commons
|
|
135
|
+
Attribution License 1.0); OpenAssistant oasst2
|
|
136
|
+
(<https://huggingface.co/datasets/OpenAssistant/oasst2>, Apache License 2.0);
|
|
137
|
+
DataClaw exports that their authors published on the Hugging Face Hub under the
|
|
138
|
+
MIT License (<https://huggingface.co/datasets/di-zhang-fdu/ShareDataClaw>);
|
|
139
|
+
DevGPT by Tao Xiao, Christoph Treude, Hideaki Hata and Kenichi Matsumoto
|
|
140
|
+
(<https://doi.org/10.5281/zenodo.16392320>, CC BY 4.0); issue texts from the
|
|
141
|
+
SWE-bench training split (<https://github.com/SWE-bench/SWE-bench>, MIT
|
|
142
|
+
License); and agent steps from NVIDIA's SWE-Hero OpenHands trajectories
|
|
143
|
+
(<https://huggingface.co/datasets/nvidia/SWE-Hero-openhands-trajectories>,
|
|
144
|
+
CC BY 4.0).
|
|
145
|
+
|
|
146
|
+
Contains information from WildChat-4.8M
|
|
147
|
+
(<https://huggingface.co/datasets/allenai/WildChat-4.8M>) which is made
|
|
148
|
+
available under the ODC Attribution License
|
|
149
|
+
(<https://opendatacommons.org/licenses/by/1-0/>).
|
|
150
|
+
|
|
151
|
+
Since `effort-judge-v7` it also includes questions from Stack Exchange sites
|
|
152
|
+
(via <https://huggingface.co/datasets/HuggingFaceTB/stackexchange_2025_md>;
|
|
153
|
+
each post is licensed CC BY-SA 2.5, 3.0 or 4.0 by its author, and its URL and
|
|
154
|
+
author are kept with the training item); GitHub issues and pull requests of
|
|
155
|
+
permissively licensed repositories (via
|
|
156
|
+
<https://huggingface.co/datasets/common-pile/github_archive>, with each item's
|
|
157
|
+
repository, URL, license and authors kept); issues and pull requests from
|
|
158
|
+
Nebius SWE-rebench-V2 (<https://huggingface.co/datasets/nebius/SWE-rebench-V2>,
|
|
159
|
+
<https://huggingface.co/datasets/nebius/SWE-rebench-V2-PRs>, CC BY 4.0,
|
|
160
|
+
permissively licensed repositories only); and agent steps from Nebius
|
|
161
|
+
SWE-agent trajectories
|
|
162
|
+
(<https://huggingface.co/datasets/nebius/SWE-agent-trajectories>, CC BY 4.0),
|
|
163
|
+
Nebius SWE-rebench OpenHands trajectories
|
|
164
|
+
(<https://huggingface.co/datasets/nebius/SWE-rebench-openhands-trajectories>,
|
|
165
|
+
CC BY 4.0), Kwai-Klear SWE-smith mini-swe-agent-plus trajectories
|
|
166
|
+
(<https://huggingface.co/datasets/Kwai-Klear/SWE-smith-mini_swe_agent_plus-trajectories-66k>,
|
|
167
|
+
MIT License), SWE-Factory DeepSWE-Agent Kimi-K2 trajectories
|
|
168
|
+
(<https://huggingface.co/datasets/SWE-Factory/DeepSWE-Agent-Kimi-K2-Trajectories-2.8K>,
|
|
169
|
+
MIT License), SWE-Gym OpenHands SFT trajectories
|
|
170
|
+
(<https://huggingface.co/datasets/SWE-Gym/OpenHands-SFT-Trajectories>, MIT
|
|
171
|
+
License), SWE-ZERO-12M trajectories
|
|
172
|
+
(<https://huggingface.co/datasets/AlienKevin/SWE-ZERO-12M-trajectories>, Apache
|
|
173
|
+
License 2.0), SWE-Lego real and synthetic data
|
|
174
|
+
(<https://huggingface.co/datasets/Lego-X/SWE-Lego-Real-Data>,
|
|
175
|
+
<https://huggingface.co/datasets/Lego-X/SWE-Lego-Synthetic-Data>, Apache
|
|
176
|
+
License 2.0) and TIGER-Lab SWE-Next SFT trajectories
|
|
177
|
+
(<https://huggingface.co/datasets/TIGER-Lab/SWE-Next-SFT-Trajectories>, MIT
|
|
178
|
+
License). Each `effort-judge-v*` release lists its files, hashes and
|
|
179
|
+
attributions.
|
|
180
|
+
|
|
181
|
+
## CC0-1.0
|
|
182
|
+
|
|
183
|
+
### Simple Icons 16.35.0
|
|
184
|
+
|
|
185
|
+
<https://simpleicons.org> · <https://github.com/simple-icons/simple-icons>
|
|
186
|
+
|
|
187
|
+
The connector brand marks in
|
|
188
|
+
`apps/desktop/src/renderer/connectors-brand-icons.ts` carry Simple Icons path
|
|
189
|
+
data and brand colours unmodified (Airtable, Blender, Confluence, Discord,
|
|
190
|
+
Dropbox, Figma, GitHub, Gmail, Google Calendar, Google Drive, Hugging Face,
|
|
191
|
+
Jira, Linear, Notion, PostgreSQL, Sentry, Stripe, Supabase, Telegram, Trello,
|
|
192
|
+
Unity, Vercel); Unity's mark is drawn in black, as its listed colour is white.
|
|
193
|
+
Simple Icons is dedicated to the public domain under CC0 1.0; each
|
|
194
|
+
mark remains the trademark of its owner and is shown only to name that
|
|
195
|
+
service. Slack is not in Simple Icons and its mark is not openly licensed, so
|
|
196
|
+
it is shown as a letter tile. Full text: `LICENSES/simple-icons-CC0-1.0.txt`.
|
|
135
197
|
|
|
136
198
|
## GPL-3.0-only
|
|
137
199
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mixdog",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Open-source coding agent that matches Codex on Terminal-Bench 2.1 with 63% fewer tokens.",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"prepack": "npm run build:shipped-history && npm run build:tui",
|
|
61
61
|
"build:shipped-history": "node scripts/build-shipped-history.mjs",
|
|
62
62
|
"check:shipped-history": "node scripts/build-shipped-history.mjs --check",
|
|
63
|
+
"check:model-recommendations": "node scripts/check-model-recommendations.mjs",
|
|
63
64
|
"prepublishOnly": "node -e \"if(!process.env.CI){console.error('local npm publish is disabled — run npm run release:patch');process.exit(1)}\"",
|
|
64
65
|
"start": "node src/cli.mjs",
|
|
65
66
|
"test": "node scripts/test.mjs",
|
|
@@ -165,11 +166,13 @@
|
|
|
165
166
|
"chalk": "^5.6.2",
|
|
166
167
|
"cli-highlight": "^2.1.11",
|
|
167
168
|
"diff": "^9.0.0",
|
|
169
|
+
"imapflow": "^2.5.7",
|
|
168
170
|
"ink": "https://github.com/tribgames/mixdog/releases/download/ink-runtime-v7.1.0-mixdog.1/ink-7.1.0.tgz",
|
|
169
171
|
"jsdom": "^27.0.0",
|
|
170
172
|
"jszip": "^3.10.1",
|
|
171
173
|
"marked": "^14.1.4",
|
|
172
174
|
"node-cron": "^4.5.0",
|
|
175
|
+
"nodemailer": "^10.1.7",
|
|
173
176
|
"onnxruntime-node": "1.30.0",
|
|
174
177
|
"openai": "^6.44.0",
|
|
175
178
|
"pdf-lib": "^1.17.1",
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Validates the setup-guide model recommendation list and exits non-zero when
|
|
2
|
+
// it is older than its own staleAfterDays.
|
|
3
|
+
//
|
|
4
|
+
// node scripts/check-model-recommendations.mjs
|
|
5
|
+
import { readFileSync } from 'node:fs';
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
|
|
9
|
+
const file = join(
|
|
10
|
+
dirname(fileURLToPath(import.meta.url)),
|
|
11
|
+
'..',
|
|
12
|
+
'src/defaults/skills/setup-guide/model-recommendations.json'
|
|
13
|
+
);
|
|
14
|
+
const data = JSON.parse(readFileSync(file, 'utf8'));
|
|
15
|
+
const DATE = /^\d{4}-\d{2}-\d{2}$/;
|
|
16
|
+
const errors = [];
|
|
17
|
+
const str = (v) => typeof v === 'string' && v.trim() !== '';
|
|
18
|
+
|
|
19
|
+
if (!DATE.test(data.asOf ?? '')) errors.push('asOf must be YYYY-MM-DD');
|
|
20
|
+
if (!Number.isInteger(data.staleAfterDays) || data.staleAfterDays <= 0) {
|
|
21
|
+
errors.push('staleAfterDays must be a positive integer');
|
|
22
|
+
}
|
|
23
|
+
if (!Array.isArray(data.roles) || data.roles.length === 0) errors.push('roles must be a non-empty array');
|
|
24
|
+
for (const [i, entry] of (Array.isArray(data.roles) ? data.roles : []).entries()) {
|
|
25
|
+
const at = `roles[${i}]`;
|
|
26
|
+
if (!Array.isArray(entry.roles) || entry.roles.length === 0 || !entry.roles.every(str)) {
|
|
27
|
+
errors.push(`${at}.roles must be a non-empty string array`);
|
|
28
|
+
}
|
|
29
|
+
if (entry.preferOtherProviderThan !== undefined) {
|
|
30
|
+
const known = new Set(data.roles.flatMap((r) => r.roles ?? []));
|
|
31
|
+
const list = entry.preferOtherProviderThan;
|
|
32
|
+
if (!Array.isArray(list) || !list.length || !list.every((r) => known.has(r))) {
|
|
33
|
+
errors.push(`${at}.preferOtherProviderThan must list existing role names`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (!Array.isArray(entry.picks) || entry.picks.length === 0) errors.push(`${at}.picks must be non-empty`);
|
|
37
|
+
for (const [j, pick] of (Array.isArray(entry.picks) ? entry.picks : []).entries()) {
|
|
38
|
+
for (const key of ['provider', 'model', 'effort', 'source']) {
|
|
39
|
+
if (!str(pick[key])) errors.push(`${at}.picks[${j}].${key} is required`);
|
|
40
|
+
}
|
|
41
|
+
if (!DATE.test(pick.checkedAt ?? '')) errors.push(`${at}.picks[${j}].checkedAt must be YYYY-MM-DD`);
|
|
42
|
+
if (str(pick.source) && !/^https?:\/\//.test(pick.source)) errors.push(`${at}.picks[${j}].source must be a URL`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const MODES = ['none', 'focused', 'balanced', 'swarm'];
|
|
46
|
+
const knownRoles = new Set((Array.isArray(data.roles) ? data.roles : []).flatMap((r) => r.roles ?? []));
|
|
47
|
+
const roleList = (v) => Array.isArray(v) && v.every((r) => knownRoles.has(r));
|
|
48
|
+
const d = data.delegation;
|
|
49
|
+
if (!d || typeof d !== 'object') errors.push('delegation is required');
|
|
50
|
+
else {
|
|
51
|
+
if (!roleList(d.baseRoster) || !d.baseRoster.length) errors.push('delegation.baseRoster must list existing roles');
|
|
52
|
+
const modes = Array.isArray(d.modes) ? d.modes : [];
|
|
53
|
+
if (modes.map((m) => m.mode).join() !== MODES.join())
|
|
54
|
+
errors.push(`delegation.modes must be ${MODES.join(', ')} in order`);
|
|
55
|
+
for (const m of modes) {
|
|
56
|
+
if (!str(m.label) || !roleList(m.agents))
|
|
57
|
+
errors.push(`delegation.modes ${m.mode}: label and existing-role agents required`);
|
|
58
|
+
if (!m.plans || typeof m.plans !== 'object') errors.push(`delegation.modes ${m.mode}: plans required`);
|
|
59
|
+
}
|
|
60
|
+
const lean = d.leanReview;
|
|
61
|
+
if (
|
|
62
|
+
!lean ||
|
|
63
|
+
!roleList(lean.agentsOff) ||
|
|
64
|
+
!roleList(lean.agentsOn) ||
|
|
65
|
+
!lean.fitsModes?.every((x) => MODES.includes(x))
|
|
66
|
+
) {
|
|
67
|
+
errors.push('delegation.leanReview needs valid fitsModes, agentsOff, agentsOn');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const [i, entry] of (Array.isArray(data.roles) ? data.roles : []).entries()) {
|
|
71
|
+
for (const [j, pick] of (Array.isArray(entry.picks) ? entry.picks : []).entries()) {
|
|
72
|
+
if (pick.plans !== undefined && !(pick.plans && Object.values(pick.plans).every(str))) {
|
|
73
|
+
errors.push(`roles[${i}].picks[${j}].plans must map plan to model string`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (errors.length) {
|
|
78
|
+
console.error(`[model-recommendations] invalid:\n- ${errors.join('\n- ')}`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const ageDays = Math.floor((Date.now() - Date.parse(data.asOf)) / 86_400_000);
|
|
83
|
+
if (ageDays > data.staleAfterDays) {
|
|
84
|
+
console.error(
|
|
85
|
+
`[model-recommendations] stale: asOf ${data.asOf} is ${ageDays} days old (limit ${data.staleAfterDays}). Re-check the picks and update the file.`
|
|
86
|
+
);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
console.log(`[model-recommendations] ok (asOf ${data.asOf}, ${ageDays} days old)`);
|
package/scripts/gate-local.mjs
CHANGED
|
@@ -32,6 +32,13 @@ if (failedPreChecks.length) {
|
|
|
32
32
|
process.exit(1);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
// Warning-level: a stale model list never blocks the gate.
|
|
36
|
+
if (
|
|
37
|
+
spawnSync('node scripts/check-model-recommendations.mjs', { cwd: root, stdio: 'inherit', shell: true }).status !== 0
|
|
38
|
+
) {
|
|
39
|
+
console.warn('[gate:local] warning: model recommendations stale or invalid (not blocking)');
|
|
40
|
+
}
|
|
41
|
+
|
|
35
42
|
const build = spawnSync('npm run build:spawn:test', { cwd: root, stdio: 'inherit', shell: true });
|
|
36
43
|
if (build.status !== 0) {
|
|
37
44
|
console.error('[gate:local] build:spawn:test failed');
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Side-effect import for tests that touch Mixdog user data. Import it FIRST (ESM
|
|
2
|
+
// evaluates imports in order) so the data/home dirs resolve to a scratch dir
|
|
3
|
+
// before any module under test reads them, even under plain `node --test` from a
|
|
4
|
+
// shell that exports the signed-in profile's MIXDOG_DATA_DIR.
|
|
5
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
|
|
9
|
+
const root = mkdtempSync(join(tmpdir(), 'mixdog-test-profile-'));
|
|
10
|
+
process.env.MIXDOG_DATA_DIR = join(root, 'data');
|
|
11
|
+
process.env.MIXDOG_HOME = join(root, 'home');
|
|
12
|
+
process.on('exit', () => {
|
|
13
|
+
try {
|
|
14
|
+
rmSync(root, { recursive: true, force: true });
|
|
15
|
+
} catch {}
|
|
16
|
+
});
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Reviewer
|
|
3
|
-
description: Use
|
|
3
|
+
description: Use once at the end, as the single final independent check of non-trivial work, never a second full pass over work already reviewed; otherwise Lead's own review suffices.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Independent final-check review agent.
|
|
7
7
|
|
|
8
8
|
You are called only at the end, after the deliverable is written and the
|
|
9
|
-
Lead's own verification has run, before completion is reported.
|
|
9
|
+
Lead's own verification has run, before completion is reported. You run once.
|
|
10
|
+
When the work was already reviewed scope by scope, check the integrated
|
|
11
|
+
result and its highest-risk changes instead of repeating those reviews.
|
|
10
12
|
|
|
11
13
|
Inspect the diff, affected boundaries, existing tests, and stated acceptance
|
|
12
14
|
criteria with independent judgment. Reuse still-valid passing results; rerun failed or invalidated checks. Actively seek regressions, unsupported assumptions, security
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "reviewer",
|
|
3
3
|
"name": "Reviewer",
|
|
4
|
-
"description": "Use
|
|
4
|
+
"description": "Use once at the end, as the single final independent check of non-trivial work, never a second full pass over work already reviewed; otherwise Lead's own review suffices.",
|
|
5
5
|
"entry": "AGENT.md"
|
|
6
6
|
}
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"07643b62440d3eba29b7360b8a33f09f",
|
|
31
31
|
"0d45f8d9a2a67373462840e8bf930694",
|
|
32
32
|
"1593af04edd24cdd5f05fe89a7386407",
|
|
33
|
+
"1a8115cec6ae4414f8637b1765948cdd",
|
|
33
34
|
"25b44b46269490e26ca31c1852925171",
|
|
34
35
|
"a60ea68f9287d55489e92e5450432f62",
|
|
35
36
|
"a61cb4557def4e7ed647d4bdacbb72e4",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"8d343d0a406fd5817b7fd98a3ac47010",
|
|
116
117
|
"a1b73ce404125d3ce0a5762e4a1e1555",
|
|
117
118
|
"a28fb01bb21ceebbde1bc6c4a02d3db6",
|
|
119
|
+
"c7fdabb946eed7283db656493d95749b",
|
|
118
120
|
"d40c23517c4803afdac3fc056bb65cda",
|
|
119
121
|
"db1af5417849abc2f6bb1d1d2b63939f"
|
|
120
122
|
],
|
|
@@ -175,6 +177,7 @@
|
|
|
175
177
|
"browser-use": [
|
|
176
178
|
"00085086a7649ec6631f5cf0a3bbbf60",
|
|
177
179
|
"08eee52328524eb032fd14f342742c41",
|
|
180
|
+
"25a6744e7591ea5597abbda008d123fe",
|
|
178
181
|
"43eeb0b9c5792f08f2223c76846926cb",
|
|
179
182
|
"4ab5316454013712cedb25d9b75f4e43",
|
|
180
183
|
"646365a3f7041a3da3d7d7d896a0c3b6",
|
|
@@ -280,6 +283,7 @@
|
|
|
280
283
|
"bdf26b0f2ac9f3126bfa74ced15a7d73"
|
|
281
284
|
],
|
|
282
285
|
"memory-management": [
|
|
286
|
+
"1533630b81ebace2bc9ece6fda02bb11",
|
|
283
287
|
"261a34fce0fb0f73abfd1b1e2add3602",
|
|
284
288
|
"356bf57f7087fe2c40c5dcd99622c3e9",
|
|
285
289
|
"a8ffffd02f438cdd6005e09cfe6cf42f",
|
|
@@ -341,6 +345,7 @@
|
|
|
341
345
|
"0d6926aaca2890da9347f15a826546e3",
|
|
342
346
|
"0f14ba0a3d8b3896b717dc144bbe49a4",
|
|
343
347
|
"15d86146cfbd58d85adf0c25cf1d683f",
|
|
348
|
+
"18dc665b96ee0ba5a1645180e173b1af",
|
|
344
349
|
"1c317db86e1ff80a5c4102e09e36f5fb",
|
|
345
350
|
"242f11864abdef90fa0cc9cb4599a579",
|
|
346
351
|
"29a347c4d3a2f773fa92c627260301ba",
|
|
@@ -365,10 +370,15 @@
|
|
|
365
370
|
"e04e6abe9a54e7d07b37f8fc32b5ad30",
|
|
366
371
|
"e38d606df69865a9cf1cc48386535e8b",
|
|
367
372
|
"e5ac8ea16905815e36e88d883195a617",
|
|
373
|
+
"e848b92962dee0d4c3d7e3721d2e3294",
|
|
368
374
|
"e9b89f9193bd9d9c80ba6cf4419e58ff",
|
|
369
375
|
"feabe973080344c4d52787a96043ab68",
|
|
370
376
|
"ff18ac1a9f5961925aec27ffb870bae0"
|
|
371
377
|
],
|
|
378
|
+
"setup-guide": [
|
|
379
|
+
"633e15b84dbe22f2b578b67cc35853d4",
|
|
380
|
+
"920d5b29ccfe6c88f623cf0892b29285"
|
|
381
|
+
],
|
|
372
382
|
"skill-creator": [
|
|
373
383
|
"020817866da73a69544ba35086bdcd5f",
|
|
374
384
|
"2f3f44805618783fbcca9a56652a5e91",
|
|
@@ -316,9 +316,14 @@ in the page instead of retrying the same `navigate`.
|
|
|
316
316
|
- A refused or restricted action stays refused; do not reach the same effect
|
|
317
317
|
through another page, tool, or `evaluate`.
|
|
318
318
|
- Tool-side confirmation does not replace the user's approved scope.
|
|
319
|
+
Submitting a form (`submit`, Enter) or clicking a send/post control asks the
|
|
320
|
+
user once in the desktop app; a denial dispatches nothing.
|
|
319
321
|
`MIXDOG_BROWSER_CONFIRM_ACTIONS` and
|
|
320
322
|
`MIXDOG_BROWSER_DENY_ACTIONS` optionally name comma-separated public actions
|
|
321
323
|
(or `*`) the desktop app confirms once or refuses; denial takes precedence.
|
|
324
|
+
- For a password or token, focus the field and call `ask_user` with
|
|
325
|
+
`handoff: { kind: 'secret', surface: 'browser' }`; for sign-in, CAPTCHA or
|
|
326
|
+
2FA use `kind: 'takeover'` with instructions. Never ask for secrets in chat.
|
|
322
327
|
- Cookie listings never expose values. Registered secret values remain
|
|
323
328
|
redacted across redirects. A blocked result is not success; an inconclusive
|
|
324
329
|
postcondition is not proof.
|
|
@@ -32,7 +32,10 @@ as preferences; automatic history already preserves them.
|
|
|
32
32
|
|
|
33
33
|
Omit `project_id` for the current Project, use `common` for shared memory,
|
|
34
34
|
or an explicit Project slug for another Project. The `*` scope is read-only.
|
|
35
|
-
|
|
35
|
+
`agent_id: "self"` selects your own agent memory instead: only you read it,
|
|
36
|
+
and it is the only pool an unattended run (schedule, webhook, group room,
|
|
37
|
+
delegated agent) may write; common and Project memory change only while the
|
|
38
|
+
user is chatting. Confirm the target before destructive changes.
|
|
36
39
|
|
|
37
40
|
Memory indices start at 1 independently in common memory and each Project.
|
|
38
41
|
Deletion and movement compact the affected scope's indices; new memories
|
|
@@ -52,6 +52,7 @@ Read this when choosing a `setup` mutation.
|
|
|
52
52
|
| Remove stored provider authentication (one OAuth account at a time) | `forget_provider_auth` |
|
|
53
53
|
| Select, rename, or reorder OAuth accounts, set the switching policy, or allow paid credits | `set_provider_account` |
|
|
54
54
|
| Developer options such as risk-gated OAuth providers | `set_developer_option` |
|
|
55
|
+
| Connect a catalog service (Notion, Linear, Gmail, …; not GitHub, which is the GitHub CLI) for the user: shows a one-click connect card | `connect_connector` |
|
|
55
56
|
| Add an MCP server | `add_mcp_server` |
|
|
56
57
|
| Edit or rename an MCP server | `save_mcp_server` |
|
|
57
58
|
| Remove an MCP server | `remove_mcp_server` |
|
|
@@ -71,9 +72,10 @@ Read this when choosing a `setup` mutation.
|
|
|
71
72
|
| Create a workflow, agent, or machine-global user skill | `create_definition` |
|
|
72
73
|
| Partially edit a workflow, agent, or machine-global user skill | `save_definition` |
|
|
73
74
|
| Delete a user workflow/agent definition or override | `delete_definition` |
|
|
74
|
-
| Save a schedule/webhook; explicitly overwrite to edit | `save_automation` |
|
|
75
|
+
| Save a schedule/webhook; explicitly overwrite to edit. A new one belongs to the calling thread's agent (Mixy = `lead`); `entry.owner` moves it to another agent | `save_automation` |
|
|
75
76
|
| Delete an existing schedule/webhook | `delete_automation` |
|
|
76
|
-
| Enable/disable a schedule/webhook | `set_automation_enabled` |
|
|
77
|
+
| Enable/disable (pause/resume) a schedule/webhook | `set_automation_enabled` |
|
|
78
|
+
| Run a schedule once now, or re-run a webhook on its latest received payload; the result posts into the owning agent's thread | `run_automation` |
|
|
77
79
|
| Webhook listener enabled state, port, or domain | `set_webhook_config` |
|
|
78
80
|
| Desktop keep-awake, run in background after window close, turn-completion notifications, notification volume (Windows), usage pin, usage rail short + long bars, or Computer observe-only state | `set_desktop_settings` |
|
|
79
81
|
| Desktop theme, display language, side panels, markdown default view, link previews, or tool activity expansion | `set_appearance` |
|
|
@@ -110,6 +112,9 @@ workflow` before changing the corresponding domain.
|
|
|
110
112
|
`originalName` and `name`. Skill deletion is not exposed; disable it instead.
|
|
111
113
|
Built-in and plugin skills accept only `toolDependencies` edits (`null`
|
|
112
114
|
restores their declared dependencies).
|
|
115
|
+
- A created agent is a bot (`definition.kind: "bot"`) or a workflow agent
|
|
116
|
+
(`"agent"`); omitted, the representative bot's chat creates a bot and any other chat a
|
|
117
|
+
workflow agent. The kind is fixed after creation.
|
|
113
118
|
- Changing orchestration does not rewrite workflow instructions or agents.
|
|
114
119
|
|
|
115
120
|
## Providers and authentication
|
|
@@ -235,6 +240,12 @@ markers are read with `status desktop`.
|
|
|
235
240
|
`add_mcp_server`, `save_mcp_server`, and `remove_mcp_server` refuse plugin
|
|
236
241
|
servers. Declaration problems and naming conflicts are reported as
|
|
237
242
|
`declarationErrors` and `warnings`.
|
|
243
|
+
- `connect_connector` is how to connect a catalog service the user asks for
|
|
244
|
+
("Slack 연결해 줘"): it leaves a connect card in the conversation whose
|
|
245
|
+
press runs the browser sign-in (or the key sheet) in Desktop; nothing
|
|
246
|
+
connects until the user presses it, so tell them to press the card and read
|
|
247
|
+
`status mcp` afterwards. `add_mcp_server` with the service URL is not the
|
|
248
|
+
sign-in flow; never use it for a catalog service.
|
|
238
249
|
- `enable_plugin_mcp` turns every server the plugin declares back on and
|
|
239
250
|
reconnects them; a disabled plugin stays disabled, and it fails for a plugin
|
|
240
251
|
that declares no MCP servers.
|
|
@@ -248,8 +259,7 @@ markers are read with `status desktop`.
|
|
|
248
259
|
- A Project removal unregisters it only.
|
|
249
260
|
- Inspect schedules/webhooks before editing. `overwrite:true` updates an
|
|
250
261
|
existing named entry and preserves omitted fields; a new schedule needs
|
|
251
|
-
instructions
|
|
252
|
-
`time` or one-shot `at`.
|
|
262
|
+
instructions and exactly one of cron `time` or one-shot `at`.
|
|
253
263
|
- Attachment contents and webhook signing secrets are not returned by setup.
|
|
254
264
|
Omitted attachments and existing webhook secrets are preserved. A saved
|
|
255
265
|
secret is never shown again: tell the user to open the Webhooks panel, edit
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup-guide
|
|
3
|
+
description: Guide a new user through first setup and explain Mixdog concepts.
|
|
4
|
+
when_to_use: 'Mixy''s first chat; how to start, what to do first, what a Mixdog term means; not one named setting.'
|
|
5
|
+
dependencies:
|
|
6
|
+
tools:
|
|
7
|
+
- type: tool
|
|
8
|
+
value: setup
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Setup guide
|
|
12
|
+
|
|
13
|
+
Walk a new user through Mixdog's first setup one step at a time, and explain
|
|
14
|
+
Mixdog's concepts in plain words. Changes go through the `setup` tool, never
|
|
15
|
+
through file edits. One named setting the user already chose belongs to `setup`.
|
|
16
|
+
|
|
17
|
+
## Style
|
|
18
|
+
|
|
19
|
+
Reply as in bot mode: one step or one concept per message, short plain
|
|
20
|
+
sentences, no tables or headings, in the user's language. In Korean use the
|
|
21
|
+
formal polite style (~합니다 / ~하세요, never ~해요). Say "봇" for Mixy and
|
|
22
|
+
other contacts, "에이전트" only for workflow agents. Never print ids, file
|
|
23
|
+
names or dotted internal names. End a step with one question, not a list of options.
|
|
24
|
+
|
|
25
|
+
## Mode
|
|
26
|
+
|
|
27
|
+
- Setup walk-through: the user accepted setup help ("기본 설정부터 같이 할까요?"),
|
|
28
|
+
or asks how to start or what to do first.
|
|
29
|
+
- Concept question: answer it from the glossary below, then stop. Go deeper
|
|
30
|
+
only when asked, and offer the matching setup step only if it is not done.
|
|
31
|
+
|
|
32
|
+
## Opening
|
|
33
|
+
|
|
34
|
+
Start in this order, one message each:
|
|
35
|
+
|
|
36
|
+
1. Say you will go through setup one thing at a time.
|
|
37
|
+
2. Check `status features` and `status mcp` first. Offer add-ons tier by tier;
|
|
38
|
+
finish a tier before the next. Never mention a feature that is already on
|
|
39
|
+
or installed, and skip a tier with nothing missing.
|
|
40
|
+
3. Then the connectors, then the steps below.
|
|
41
|
+
|
|
42
|
+
Tier 1, essential: Media generation, Git & GitHub (`git`), Visualize. If any
|
|
43
|
+
is missing or off, say it is essential and ask once for all of them
|
|
44
|
+
("필수 기능인데 설치할까요?").
|
|
45
|
+
|
|
46
|
+
Tier 2, recommended: Memory (`memory`), Computer Use (`computer`), Browser Use
|
|
47
|
+
(`browser`). Offer the missing ones in one short line.
|
|
48
|
+
|
|
49
|
+
Tier 3, optional: Voice transcription (`voice`), Local Provider
|
|
50
|
+
(`localProvider`), Code Tidy (`tidy`). Offer the missing ones in one short line.
|
|
51
|
+
|
|
52
|
+
Install only what the user accepts. How each is done:
|
|
53
|
+
|
|
54
|
+
- `install_builtin` with the name for git, memory, autoEffort, computer,
|
|
55
|
+
browser, voice, localProvider and tidy. Git installs system Git through the
|
|
56
|
+
Desktop when this chat is open there. Auto reasoning can be unsupported on
|
|
57
|
+
a machine: report that instead of retrying. Computer Use and Browser Use
|
|
58
|
+
need the Desktop, and the user approves OS permission dialogs. Local
|
|
59
|
+
Provider only prepares the runtime; models belong to `local-provider`.
|
|
60
|
+
- Memory is install-only; its later on/off is `set_memory_enabled`.
|
|
61
|
+
- Visualize has no install: `set_builtin_enabled` turns it on.
|
|
62
|
+
- Media generation has no setup action: `open plugins` and let the user turn
|
|
63
|
+
it on there, then re-check `status features`.
|
|
64
|
+
|
|
65
|
+
Connectors come after the tiers. First explain in a sentence or two: a
|
|
66
|
+
connector links an outside service so bots and agents can read and act in it,
|
|
67
|
+
and anything that sends or posts asks first through an approval card. Then
|
|
68
|
+
suggest by what the user does, only these: Gmail (with a Google app password;
|
|
69
|
+
it needs 2-Step Verification on the Google account, and the connect window
|
|
70
|
+
opens the app-password page in the browser), Notion, Linear or Jira. GitHub is
|
|
71
|
+
not a connector; it is the signed-in GitHub CLI of Git & GitHub. Do not suggest Google Calendar or Google
|
|
72
|
+
Drive; their Google sign-in is still under review. Connect one with
|
|
73
|
+
`connect_connector`; it only leaves a card, so tell the user to press it and
|
|
74
|
+
confirm with `status mcp`.
|
|
75
|
+
|
|
76
|
+
## Walk-through
|
|
77
|
+
|
|
78
|
+
The steps mirror the desktop starter guide and its checklist; do not keep
|
|
79
|
+
separate progress. Read state first with `setup` `status` (`providers`,
|
|
80
|
+
`onboarding`, `mcp`, `plugins`, `agents`, `connection`) and skip steps already
|
|
81
|
+
done. Take the first open step, explain it in a sentence or two, ask, then act.
|
|
82
|
+
|
|
83
|
+
1. provider: done when a provider is authenticated (`status providers`). Sign-in
|
|
84
|
+
and API keys are entered by the user: `open providers`, never ask for a key
|
|
85
|
+
in chat. Suggest a subscription sign-in (Claude, ChatGPT, Gemini and the
|
|
86
|
+
like) first; an API key only when the user has no subscription or asks.
|
|
87
|
+
2. project: done when a Project exists or `onboarding` lists `project` as
|
|
88
|
+
visited. A folder is optional. Register one with `save_project` for a path
|
|
89
|
+
the user names.
|
|
90
|
+
3. workflow: done when `onboarding` lists `workflow` as visited. Explain
|
|
91
|
+
workflows and agents, `open workflows` so the user can turn agents on and
|
|
92
|
+
pick models (`set_agent_route` once they name a model). Recommend models
|
|
93
|
+
from `${MIXDOG_SKILL_DIR}/model-recommendations.json`, role by role, only
|
|
94
|
+
among providers the user is signed in to (`status providers`) and only a
|
|
95
|
+
model the provider's model list actually offers; picks are an ordered list
|
|
96
|
+
of any length, so recommend the first one that qualifies and otherwise take
|
|
97
|
+
the next. A subscription sign-in always comes first: when the user has one,
|
|
98
|
+
take the first qualifying pick it offers before any pick that would bill an
|
|
99
|
+
API key, and only fall back to API-key providers when no subscription
|
|
100
|
+
offers one. If `asOf` is older than `staleAfterDays`, say the list may be out of
|
|
101
|
+
date. Never print ids or file names. Roles with
|
|
102
|
+
`preferOtherProviderThan` (Reviewer, Advisor) work best with the opposite
|
|
103
|
+
tendency from the model doing the work: pick the first qualifying model whose
|
|
104
|
+
provider differs from the chosen Lead's and Heavy Worker's providers, and
|
|
105
|
+
fall back to the plain first pick only when the user has a single signed-in
|
|
106
|
+
provider. Give the reason in one line: a different model family catches what
|
|
107
|
+
the main one misses. Suggest turning on the Maintainer with
|
|
108
|
+
a cheap model at the lowest effort; it also decides turns in group rooms.
|
|
109
|
+
A pick may carry `plans`: when the Lead provider's plan (`plan` in
|
|
110
|
+
`status providers`) is listed there, recommend that model instead. A null or
|
|
111
|
+
unlisted plan keeps the pick as is; never fail on an unknown plan.
|
|
112
|
+
Delegation and roster come from `delegation` in the data file. First ask
|
|
113
|
+
once how the user likes to work: one agent doing everything, or splitting
|
|
114
|
+
work across agents. Say plainly that Solo is a good choice at any plan: it
|
|
115
|
+
is the most efficient, and with a strong model its quality is often not much
|
|
116
|
+
lower; delegation trades more usage for speed and parallel work. Then suggest
|
|
117
|
+
the mode whose `plans` lists the Lead provider's plan (the default
|
|
118
|
+
suggestion), but the user's preference overrides it. Ask once; set it with
|
|
119
|
+
`set_orchestration_mode`, and say it can be changed later in settings. The
|
|
120
|
+
roster follows the chosen mode: turn on only `baseRoster` plus that mode's
|
|
121
|
+
`agents`, using `set_agent_route` with `route.disabled` set false for what
|
|
122
|
+
the user accepts and true for the rest; do not enable others. Offer
|
|
123
|
+
`leanReview` for Solo or focused as a cost saver: the Lead reviews its own
|
|
124
|
+
work, Reviewer stays off, Advisor is on but used rarely (only when stuck).
|
|
125
|
+
Advisor in balanced or swarm is a light, occasional second opinion from a
|
|
126
|
+
different model family at key decision points, not on every task. Say in
|
|
127
|
+
one line that more agents can be turned on later on the Workflows page.
|
|
128
|
+
Right after the models are picked, explain Auto reasoning: it adjusts
|
|
129
|
+
reasoning depth per message, so hard work may come out slightly lower in
|
|
130
|
+
quality but cost is much lower. Ask whether to turn it on
|
|
131
|
+
(`install_builtin` `autoEffort`). If declined, say in one line that it can
|
|
132
|
+
be turned on later from the model picker.
|
|
133
|
+
4. remote: done when a device is paired (`status connection`) or `remote` is
|
|
134
|
+
visited. Pairing is user-operated: `open connection`.
|
|
135
|
+
5. extensions: done when `extensions` is visited. Explain plugins and skills;
|
|
136
|
+
offer only built-ins not already covered by the tiers above.
|
|
137
|
+
6. mixy: done once Mixy exists, which is already true when this skill runs in
|
|
138
|
+
Mixy's chat. Offer to make another bot when the user wants one.
|
|
139
|
+
|
|
140
|
+
After a change, report it in a sentence and move on. The user may stop at any
|
|
141
|
+
step; do not insist.
|
|
142
|
+
|
|
143
|
+
## Glossary
|
|
144
|
+
|
|
145
|
+
- Bot (봇): a contact you chat with in bot mode (봇 모드). Mixy is the representative
|
|
146
|
+
bot; the user can have it make others, such as a GitHub Watcher.
|
|
147
|
+
- Agent (에이전트): a workflow sub-agent such as Worker or Reviewer that
|
|
148
|
+
does part of a task. Users add their own on the Workflows page with the
|
|
149
|
+
"에이전트 +" button. Bots are people-facing; agents work behind a task.
|
|
150
|
+
- Default agents (기본 에이전트): built-in helpers listed on Workflows, such as
|
|
151
|
+
Web Search (runs the web search tool) and the Maintainer (memory upkeep and
|
|
152
|
+
session titles). They need a model route to work.
|
|
153
|
+
- Agent mode (에이전트 모드): a coding work session run by Lead and agents.
|
|
154
|
+
A session a bot starts for a job is an agent task session (에이전트 작업
|
|
155
|
+
세션); others are just sessions (세션).
|
|
156
|
+
- Sessions and projects: an agent-mode session runs in a Project, a folder whose
|
|
157
|
+
instructions and memories it loads.
|
|
158
|
+
- Workflows and work rules: a workflow sets how a request gets done; work
|
|
159
|
+
rules are the instructions it applies.
|
|
160
|
+
- Connectors and extensions: connectors are MCP services such as Notion or
|
|
161
|
+
Linear (`connect_connector`, the user presses the card); extensions are
|
|
162
|
+
plugins that add tools and skills that teach how to work.
|
|
163
|
+
- Group rooms (그룹 대화방): one chat with several bots. `@name` or "봇 부르기"
|
|
164
|
+
addresses one bot; otherwise the Maintainer decides who answers next.
|
|
165
|
+
- Schedules and webhooks: a timed or incoming-event trigger (`save_automation`).
|
|
166
|
+
Each run is one turn in its bot's own chat, with that bot's persona, rules,
|
|
167
|
+
permissions, memory and model. Without a bot they cannot be used.
|
|
168
|
+
- Approval cards: when a tool needs permission it waits in the chat until the
|
|
169
|
+
user approves or declines.
|
|
170
|
+
- Phone remote access: pair a phone under Settings → Connection to follow and
|
|
171
|
+
steer tasks away from the PC.
|
|
172
|
+
|
|
173
|
+
## Pitfalls
|
|
174
|
+
|
|
175
|
+
- Do not claim a step is done from memory; re-read state after acting.
|
|
176
|
+
- A UI handoff (`open`) is not completion; ask the user to confirm, then
|
|
177
|
+
re-check the status.
|
|
178
|
+
- Do not run several steps in one message or queue the next question early.
|