mixdog 1.1.0 → 1.1.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.
Files changed (141) hide show
  1. package/README.md +13 -6
  2. package/package.json +1 -1
  3. package/scripts/latest-guard.mjs +63 -0
  4. package/scripts/lib/run-node-tests.mjs +103 -27
  5. package/scripts/lib/test-failure-summary.mjs +7 -2
  6. package/scripts/merge-mac-update-feed.mjs +107 -0
  7. package/scripts/mobile-release.mjs +210 -0
  8. package/scripts/post-release-check.mjs +353 -0
  9. package/scripts/publish-asset-release.mjs +43 -0
  10. package/scripts/release-guard.mjs +63 -0
  11. package/scripts/test.mjs +29 -7
  12. package/src/defaults/shipped-history.json +2 -0
  13. package/src/defaults/skills/computer-use/SKILL.md +1 -1
  14. package/src/defaults/skills/setup/references/actions.md +1 -0
  15. package/src/lib/keychain-cjs.cjs +582 -17
  16. package/src/runtime/agent/orchestrator/config-storage.mjs +32 -4
  17. package/src/runtime/agent/orchestrator/config.mjs +18 -0
  18. package/src/runtime/agent/orchestrator/context/instruction-files.mjs +130 -0
  19. package/src/runtime/agent/orchestrator/context/role-instructions.mjs +4 -0
  20. package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +11 -0
  21. package/src/runtime/agent/orchestrator/providers/lib/open-login-url.mjs +9 -0
  22. package/src/runtime/agent/orchestrator/providers/mimo-oauth-login.mjs +254 -0
  23. package/src/runtime/agent/orchestrator/providers/mimo-oauth-profile.mjs +218 -0
  24. package/src/runtime/agent/orchestrator/providers/mimo-oauth-tokens.mjs +239 -0
  25. package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +233 -0
  26. package/src/runtime/agent/orchestrator/providers/muse-code-oauth-login.mjs +247 -0
  27. package/src/runtime/agent/orchestrator/providers/muse-code-oauth-tokens.mjs +225 -0
  28. package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +542 -0
  29. package/src/runtime/agent/orchestrator/providers/oauth-credential-probes.mjs +25 -0
  30. package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +4 -1
  31. package/src/runtime/agent/orchestrator/providers/openai-codex-model.mjs +13 -0
  32. package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +14 -6
  33. package/src/runtime/agent/orchestrator/providers/openai-oauth-catalog-store.mjs +99 -0
  34. package/src/runtime/agent/orchestrator/providers/openai-oauth-catalog.mjs +4 -8
  35. package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +2 -7
  36. package/src/runtime/agent/orchestrator/providers/openai-responses-payload.mjs +8 -0
  37. package/src/runtime/agent/orchestrator/providers/registry.mjs +4 -0
  38. package/src/runtime/agent/orchestrator/runtime-core/effort.mjs +2 -0
  39. package/src/runtime/agent/orchestrator/runtime-core/goal-tool-defs.mjs +15 -1
  40. package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +11 -1
  41. package/src/runtime/agent/orchestrator/session/loop/tool-call-ids.mjs +90 -0
  42. package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +19 -11
  43. package/src/runtime/agent/orchestrator/session/loop/tool-phase.mjs +1 -0
  44. package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +28 -0
  45. package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +8 -0
  46. package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +3 -0
  47. package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +3 -0
  48. package/src/runtime/agent/orchestrator/session/tool-batch/finalize.mjs +2 -0
  49. package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +2 -0
  50. package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-status.mjs +23 -0
  51. package/src/runtime/agent/orchestrator/session/turn-effort.mjs +18 -0
  52. package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +11 -8
  53. package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +9 -4
  54. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/bashism-rewrite.mjs +245 -0
  55. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/command-preflight.mjs +13 -1
  56. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +3 -1
  57. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/invocation-plan.mjs +2 -2
  58. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/result-format.mjs +49 -0
  59. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +3 -3
  60. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +9 -7
  61. package/src/runtime/agent/orchestrator/tools/builtin/external-tool-adapters.mjs +61 -8
  62. package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +28 -3
  63. package/src/runtime/agent/orchestrator/tools/builtin/path-utils.mjs +73 -1
  64. package/src/runtime/agent/orchestrator/tools/builtin/read-single-guards.mjs +2 -2
  65. package/src/runtime/agent/orchestrator/tools/builtin/read-tool.mjs +3 -1
  66. package/src/runtime/agent/orchestrator/tools/builtin/search-grep-tool.mjs +17 -6
  67. package/src/runtime/agent/orchestrator/tools/builtin/search-path-diagnostics.mjs +23 -5
  68. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +93 -43
  69. package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +32 -6
  70. package/src/runtime/agent/orchestrator/tools/builtin.mjs +9 -2
  71. package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.mjs +3 -1
  72. package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +12 -15
  73. package/src/runtime/agent/orchestrator/tools/lib/shell-run-background.mjs +2 -2
  74. package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +4 -2
  75. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +124 -81
  76. package/src/runtime/agent/orchestrator/tools/shell-exec-policy.mjs +19 -4
  77. package/src/runtime/computer-bridge/client.mjs +25 -1
  78. package/src/runtime/computer-bridge/linux-action-capabilities.mjs +84 -0
  79. package/src/runtime/computer-bridge/linux-readiness.d.mts +52 -0
  80. package/src/runtime/computer-bridge/linux-readiness.mjs +411 -0
  81. package/src/runtime/computer-bridge/test-linux-display.mjs +5 -0
  82. package/src/runtime/effort-judge/compact-tokenizer.mjs +13 -8
  83. package/src/runtime/effort-judge/judge-input.mjs +5 -2
  84. package/src/runtime/effort-judge/model-install.mjs +9 -3
  85. package/src/runtime/effort-judge/model-manifest.json +7 -7
  86. package/src/runtime/memory/lib/embedding-worker.mjs +9 -3
  87. package/src/runtime/memory/lib/pg/supervisor.mjs +3 -0
  88. package/src/runtime/shared/config.mjs +50 -2
  89. package/src/runtime/shared/developer-options.mjs +7 -0
  90. package/src/runtime/shared/instruction-files-mode.mjs +9 -0
  91. package/src/runtime/shared/llm/model-catalog.mjs +2 -1
  92. package/src/runtime/shared/llm/openai-daybreak.mjs +79 -0
  93. package/src/runtime/shared/pristine-execution-contract.json +9 -0
  94. package/src/runtime/shared/pristine-execution.mjs +1 -1
  95. package/src/runtime/shared/provider-accounts.mjs +2 -0
  96. package/src/runtime/shared/resource-admission.mjs +10 -3
  97. package/src/runtime/shared/schedule-model-ref.mjs +11 -0
  98. package/src/runtime/shared/session-approval-wait.mjs +35 -0
  99. package/src/runtime/shared/shell-display.mjs +4 -2
  100. package/src/runtime/shared/turn-worktree-snapshot.mjs +11 -10
  101. package/src/session-runtime/boot/apis.mjs +5 -0
  102. package/src/session-runtime/model-recency.mjs +3 -0
  103. package/src/session-runtime/provider-auth/login.mjs +10 -10
  104. package/src/session-runtime/provider-auth/setup.mjs +22 -2
  105. package/src/session-runtime/provider-models/row-hydration.mjs +12 -4
  106. package/src/session-runtime/provider-readiness.mjs +4 -0
  107. package/src/session-runtime/runtime-facade.mjs +5 -0
  108. package/src/session-runtime/schedule-session-run.mjs +3 -1
  109. package/src/session-runtime/services/agent-tool/index-write-queue.mjs +55 -14
  110. package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +15 -3
  111. package/src/session-runtime/services/agent-tool/job-views/session-progress.mjs +2 -0
  112. package/src/session-runtime/services/agent-tool/worker-index/approval-wait.mjs +97 -0
  113. package/src/session-runtime/services/agent-tool/worker-index/mutation-batch.mjs +4 -2
  114. package/src/session-runtime/services/agent-tool/worker-index/row-liveness.mjs +8 -2
  115. package/src/session-runtime/services/agent-tool/worker-index/row-shape.mjs +3 -0
  116. package/src/session-runtime/services/agent-tool/worker-index/row-store.mjs +58 -2
  117. package/src/session-runtime/services/agent-tool/worker-index.mjs +69 -15
  118. package/src/session-runtime/services/agent-tool/worker-rows.mjs +2 -0
  119. package/src/session-runtime/services/channel-admin.mjs +4 -2
  120. package/src/session-runtime/services/provider-admin.mjs +80 -17
  121. package/src/session-runtime/services/seeds.mjs +7 -10
  122. package/src/session-runtime/services/usage-dashboard-model.mjs +6 -0
  123. package/src/session-runtime/settings-builtin-tools-api.mjs +15 -0
  124. package/src/session-runtime/setup-tool/executor.mjs +5 -0
  125. package/src/session-runtime/setup-tool/tool-defs.mjs +8 -0
  126. package/src/session-runtime/tool-policy-refresh.mjs +3 -0
  127. package/src/session-runtime/webhook-session-run.mjs +3 -1
  128. package/src/standalone/session-protocol.mjs +1 -0
  129. package/src/tui/app/model-options.mjs +13 -1
  130. package/src/tui/app/model-picker/route-selection/fast-parameters.mjs +10 -4
  131. package/src/tui/app/provider-setup/oauth-actions.mjs +5 -0
  132. package/src/tui/dist/index.mjs +84 -34
  133. package/src/tui/session/context-state.mjs +2 -0
  134. package/src/tui/session/live-share/owner.mjs +17 -0
  135. package/src/tui/session/oauth-flows.mjs +2 -0
  136. package/src/tui/session/session-api/integrations.mjs +8 -8
  137. package/src/tui/session/session-api/routes.mjs +2 -2
  138. package/src/tui/session/session-api/settings.mjs +1 -0
  139. package/src/tui/session/tool-card-results/grouped-result.mjs +11 -2
  140. package/src/tui/session/transcript-spill/spill-dir.mjs +22 -6
  141. package/src/tui/spinner-meta.mjs +26 -10
package/scripts/test.mjs CHANGED
@@ -21,7 +21,7 @@
21
21
  import { glob } from 'node:fs/promises';
22
22
  import { resolve } from 'node:path';
23
23
  import { fileURLToPath } from 'node:url';
24
- import { runNodeTests } from './lib/run-node-tests.mjs';
24
+ import { DEFAULT_TEST_TIMEOUT_MS, LONG_TEST_TIMEOUT_MS, runNodeTests } from './lib/run-node-tests.mjs';
25
25
 
26
26
  const FILE_LANES = ['fast', 'slow', 'live', 'electron'];
27
27
  const LANES = [...FILE_LANES, 'all'];
@@ -40,11 +40,14 @@ export const USAGE = `Usage: node scripts/test.mjs [--lane ${LANES.join('|')}] [
40
40
  --exclude-lane drop one lane from the selection, repeatable. Electron and
41
41
  window-capture tests cannot run twice at once, so a second
42
42
  concurrent run uses --exclude-lane electron.
43
- --rerun-failed <n> re-run the failed files up to n times (default 0 = off).
44
- A test that passes on a re-run is reported as flaky and,
45
- because the flag was passed, does NOT fail the run; a test
46
- that fails every re-run still exits 1. Without the flag every
47
- failure fails the run, as before.
43
+ --rerun-failed <n> re-run the failed files up to n times. Default: 1 for a
44
+ local run, 0 (off) when CI is set; MIXDOG_TEST_RERUN_FAILED
45
+ overrides the default. A test that passes on a re-run is
46
+ reported as flaky and does NOT fail the run; a test that
47
+ fails every re-run still exits 1. With 0 every failure fails
48
+ the run.
49
+ Per-file timeout: --test-timeout (default 120000 ms for the fast lane, 600000
50
+ ms otherwise); MIXDOG_TEST_TIMEOUT_MS overrides, 0 disables.
48
51
  --import forwarded to node (desktop passes its test-env and tsx loaders).
49
52
  --test-* forwarded to node --test (e.g. --test-name-pattern, --test-only).
50
53
  --coverage collect V8 coverage (NODE_V8_COVERAGE, no dependency) and fold
@@ -80,6 +83,17 @@ function rerunCount(value) {
80
83
  return Number(value);
81
84
  }
82
85
 
86
+ // Files run in parallel on every core, which exposes timing-sensitive tests
87
+ // that pass alone. A local run therefore re-runs failed files once and reports
88
+ // a pass on the re-run as flaky (named in the failure summary). CI keeps the
89
+ // strict policy unless it opts in with --rerun-failed or MIXDOG_TEST_RERUN_FAILED;
90
+ // MIXDOG_TEST_RERUN_FAILED=0 turns the local default off.
91
+ export function defaultRerunFailed(env = process.env) {
92
+ if (/^\d+$/.test(String(env.MIXDOG_TEST_RERUN_FAILED ?? ''))) return Number(env.MIXDOG_TEST_RERUN_FAILED);
93
+ const ci = String(env.CI ?? '').toLowerCase();
94
+ return ci && ci !== '0' && ci !== 'false' ? 0 : 1;
95
+ }
96
+
83
97
  export function parseArgs(argv) {
84
98
  const options = { lane: 'fast', list: false, nodeArgs: [], filters: [] };
85
99
  for (let index = 0; index < argv.length; index++) {
@@ -102,6 +116,10 @@ export function parseArgs(argv) {
102
116
  const spec = argv[++index];
103
117
  if (spec === undefined) throw new Error('--import requires a value');
104
118
  options.nodeArgs.push(arg, spec);
119
+ } else if (arg === '--test-timeout' || arg === '--test-concurrency') {
120
+ const value = argv[++index];
121
+ if (value === undefined) throw new Error(`${arg} requires a value`);
122
+ options.nodeArgs.push(`${arg}=${value}`);
105
123
  } else if (arg.startsWith('--import=') || arg.startsWith('--test-')) options.nodeArgs.push(arg);
106
124
  else options.filters.push(arg.replaceAll('\\', '/'));
107
125
  }
@@ -198,7 +216,11 @@ async function main() {
198
216
  '--test-force-exit',
199
217
  ],
200
218
  files,
201
- { coverage: options.coverage === true, rerunFailed: options.rerunFailed ?? 0 }
219
+ {
220
+ coverage: options.coverage === true,
221
+ rerunFailed: options.rerunFailed ?? defaultRerunFailed(),
222
+ testTimeoutMs: options.lane === 'fast' ? DEFAULT_TEST_TIMEOUT_MS : LONG_TEST_TIMEOUT_MS,
223
+ }
202
224
  );
203
225
  }
204
226
 
@@ -197,6 +197,7 @@
197
197
  "733d30c3ca6745c96a69f7e237f3d8c0",
198
198
  "7b9ce58540ed4609f290dc981a7e1719",
199
199
  "8236330f56f27dd283bda6da1239285d",
200
+ "8bc93c9320b83de81baa8cf242af5c0b",
200
201
  "8fe64c8f6d81bee2120134adf0d6a471",
201
202
  "9e7a48df5065f5073bbab6f9db3e4061",
202
203
  "b46617cc619e09c35b6bad8f6177e722",
@@ -326,6 +327,7 @@
326
327
  "6101786127a1e68778eafcd2bf2c9ce0",
327
328
  "6711dbc9d84023b8eabfa928b8d33d18",
328
329
  "6f9e9338f560fa9acd839a67b5e2d1cc",
330
+ "70c54f802c77b630863b9e17a16d8224",
329
331
  "81e979463e0066e7a45cf511a31c5d68",
330
332
  "8476c811b2f02da3a434bcb23a1c3d12",
331
333
  "9f90d3872b1ecd312977ce661b770b31",
@@ -20,7 +20,7 @@ Platform notes: on macOS, `cmd` is the Command key and Mixdog needs the
20
20
  Accessibility and Screen Recording permissions. On Linux Wayland there is no
21
21
  background pixel input, pointer and keys need write access to `/dev/uinput`,
22
22
  and window control needs a compositor that exposes it (sway, Hyprland, or
23
- GNOME with the Window Calls extension); prefer accessibility refs there.
23
+ GNOME with Mixdog's own shell extension, which the app sets up); prefer accessibility refs there.
24
24
 
25
25
  > Method and pointers only. The tool description and input schema are the
26
26
  > authority for every field; when this file and the schema disagree, the
@@ -27,6 +27,7 @@ Read this when choosing a `setup` mutation.
27
27
  | Memory capability | `set_memory_enabled` |
28
28
  | Background memory cycles | `set_recap_enabled` |
29
29
  | Web Search tool exposure | `set_web_search_enabled` |
30
+ | Which user instruction files (AGENTS.md / CLAUDE.md) new sessions load: all, agents, claude, or off | `set_instruction_files` |
30
31
  | Git, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, or voice enabled state | `set_builtin_enabled` |
31
32
  | Git, Memory, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, or voice preparation | `install_builtin` |
32
33
  | Managed local model installation | `install_local_model` |