mixdog 1.3.4 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/LICENSES/oh-my-pi-MIT.txt +23 -0
  2. package/NOTICE.md +17 -2
  3. package/README.md +11 -0
  4. package/package.json +3 -11
  5. package/scripts/daemon-stub.mjs +1 -1
  6. package/scripts/embed-google-oauth-client.mjs +49 -0
  7. package/scripts/gate-local.mjs +4 -2
  8. package/scripts/lib/test-spawn-ledger.mjs +46 -1
  9. package/scripts/native-release-status.mjs +2 -2
  10. package/scripts/recall-history-cases.json +1 -1
  11. package/scripts/suite-health.mjs +10 -1
  12. package/scripts/test.mjs +12 -11
  13. package/src/agents/reviewer/AGENT.md +7 -11
  14. package/src/agents/reviewer/agent.json +1 -1
  15. package/src/defaults/shipped-history.json +25 -1
  16. package/src/defaults/skills/browser-use/SKILL.md +77 -17
  17. package/src/defaults/skills/code-tidy/SKILL.md +142 -270
  18. package/src/defaults/skills/code-tidy/references/agent-cleanup.md +4 -4
  19. package/src/defaults/skills/code-tidy/references/cleanup-report.md +31 -76
  20. package/src/defaults/skills/code-tidy/references/dead-code.md +6 -12
  21. package/src/defaults/skills/computer-use/SKILL.md +33 -9
  22. package/src/defaults/skills/setup/SKILL.md +29 -2
  23. package/src/defaults/skills/setup/references/actions.md +117 -28
  24. package/src/defaults/skills/setup/references/surfaces.md +77 -35
  25. package/src/defaults/skills/setup-guide/SKILL.md +3 -3
  26. package/src/defaults/skills/visualize/SKILL.md +2 -1
  27. package/src/lib/keychain-cjs.cjs +359 -29
  28. package/src/lib/rules-builder.cjs +10 -8
  29. package/src/rules/agent/AGENT.md +6 -6
  30. package/src/rules/agent-mode/AGENT_MODE.md +10 -2
  31. package/src/rules/agent-mode/MIXY.md +12 -0
  32. package/src/rules/lead/LEAD.md +18 -20
  33. package/src/rules/shared/05-tool-calls.md +5 -6
  34. package/src/rules/shared/10-tool-workflow.md +2 -0
  35. package/src/rules/shared/60-verification.md +7 -5
  36. package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +2 -3
  37. package/src/runtime/agent/orchestrator/agent-runtime/heartbeat-completion.mjs +193 -0
  38. package/src/runtime/agent/orchestrator/agent-runtime/title-completion.mjs +3 -1
  39. package/src/runtime/agent/orchestrator/agent-trace-format.mjs +3 -1
  40. package/src/runtime/agent/orchestrator/config.mjs +34 -0
  41. package/src/runtime/agent/orchestrator/context/collect.mjs +3 -0
  42. package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +72 -67
  43. package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +54 -1
  44. package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +3 -3
  45. package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +177 -73
  46. package/src/runtime/agent/orchestrator/mcp/client.mjs +25 -2
  47. package/src/runtime/agent/orchestrator/mcp/oauth-callback.mjs +31 -2
  48. package/src/runtime/agent/orchestrator/mcp/oauth-client.mjs +16 -3
  49. package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +42 -7
  50. package/src/runtime/agent/orchestrator/mcp/oauth-provider.mjs +21 -2
  51. package/src/runtime/agent/orchestrator/mcp/oauth-shared.mjs +23 -0
  52. package/src/runtime/agent/orchestrator/mcp/oauth.mjs +11 -1
  53. package/src/runtime/agent/orchestrator/providers/account-pool.mjs +230 -137
  54. package/src/runtime/agent/orchestrator/providers/admission-scheduler.mjs +64 -7
  55. package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +18 -5
  56. package/src/runtime/agent/orchestrator/providers/anthropic-cache-warm.mjs +165 -0
  57. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
  58. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +4 -1
  59. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request/gzip-post.mjs +14 -14
  60. package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +160 -69
  61. package/src/runtime/agent/orchestrator/providers/anthropic-overload-fallback.mjs +25 -3
  62. package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +64 -33
  63. package/src/runtime/agent/orchestrator/providers/anthropic.mjs +135 -87
  64. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-catalog.mjs +52 -8
  65. package/src/runtime/agent/orchestrator/providers/antigravity-oauth.mjs +10 -1
  66. package/src/runtime/agent/orchestrator/providers/antigravity-request.mjs +22 -6
  67. package/src/runtime/agent/orchestrator/providers/antigravity-response.mjs +15 -4
  68. package/src/runtime/agent/orchestrator/providers/antigravity-stream.mjs +17 -2
  69. package/src/runtime/agent/orchestrator/providers/antigravity-transport.mjs +142 -104
  70. package/src/runtime/agent/orchestrator/providers/cache-warm-admission.mjs +90 -0
  71. package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
  72. package/src/runtime/agent/orchestrator/providers/cursor-wire-normalization.mjs +10 -4
  73. package/src/runtime/agent/orchestrator/providers/cursor-wire-protobuf.mjs +10 -217
  74. package/src/runtime/agent/orchestrator/providers/cursor-wire-transport.mjs +25 -9
  75. package/src/runtime/agent/orchestrator/providers/cursor.mjs +22 -6
  76. package/src/runtime/agent/orchestrator/providers/devin-auth.mjs +409 -0
  77. package/src/runtime/agent/orchestrator/providers/devin-wire-families.mjs +187 -0
  78. package/src/runtime/agent/orchestrator/providers/devin-wire-identity.mjs +342 -0
  79. package/src/runtime/agent/orchestrator/providers/devin-wire-models.mjs +541 -0
  80. package/src/runtime/agent/orchestrator/providers/devin-wire-protobuf.mjs +305 -0
  81. package/src/runtime/agent/orchestrator/providers/devin-wire-request.mjs +558 -0
  82. package/src/runtime/agent/orchestrator/providers/devin-wire-schema.mjs +880 -0
  83. package/src/runtime/agent/orchestrator/providers/devin-wire-session.mjs +190 -0
  84. package/src/runtime/agent/orchestrator/providers/devin-wire-tool-args.mjs +351 -0
  85. package/src/runtime/agent/orchestrator/providers/devin-wire-transport.mjs +560 -0
  86. package/src/runtime/agent/orchestrator/providers/devin.mjs +491 -0
  87. package/src/runtime/agent/orchestrator/providers/effort-configuration.mjs +3 -0
  88. package/src/runtime/agent/orchestrator/providers/gemini-output-limit.mjs +46 -0
  89. package/src/runtime/agent/orchestrator/providers/gemini-reasoning-relay.mjs +30 -0
  90. package/src/runtime/agent/orchestrator/providers/gemini-request-body.mjs +7 -11
  91. package/src/runtime/agent/orchestrator/providers/gemini-retry-policy.mjs +61 -22
  92. package/src/runtime/agent/orchestrator/providers/gemini-sdk-request.mjs +1 -0
  93. package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +71 -4
  94. package/src/runtime/agent/orchestrator/providers/gemini.mjs +25 -2
  95. package/src/runtime/agent/orchestrator/providers/grok-client-version.mjs +1 -1
  96. package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +96 -5
  97. package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +17 -3
  98. package/src/runtime/agent/orchestrator/providers/lib/tail-reminder-split.mjs +23 -5
  99. package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +52 -10
  100. package/src/runtime/agent/orchestrator/providers/model-proxy-channel.d.mts +8 -1
  101. package/src/runtime/agent/orchestrator/providers/model-proxy-channel.mjs +1 -0
  102. package/src/runtime/agent/orchestrator/providers/npm-cli-version.mjs +11 -3
  103. package/src/runtime/agent/orchestrator/providers/oauth-credential-probes.mjs +19 -1
  104. package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +39 -3
  105. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +3 -1
  106. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +2 -0
  107. package/src/runtime/agent/orchestrator/providers/openai-error-contract.mjs +6 -1
  108. package/src/runtime/agent/orchestrator/providers/openai-oauth-tokens.mjs +10 -9
  109. package/src/runtime/agent/orchestrator/providers/openai-ws-send/send-context.mjs +22 -3
  110. package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/attempt-context.mjs +43 -5
  111. package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/handshake-failure.mjs +3 -1
  112. package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/stream-failure.mjs +6 -3
  113. package/src/runtime/agent/orchestrator/providers/opencode-go-gemini.mjs +1 -0
  114. package/src/runtime/agent/orchestrator/providers/provider-availability.mjs +19 -0
  115. package/src/runtime/agent/orchestrator/providers/provider-error-kind.mjs +65 -1
  116. package/src/runtime/agent/orchestrator/providers/quota-reading.mjs +38 -12
  117. package/src/runtime/agent/orchestrator/providers/registry.mjs +43 -3
  118. package/src/runtime/agent/orchestrator/providers/retry-executor.mjs +39 -7
  119. package/src/runtime/agent/orchestrator/providers/statusline-route-meta.mjs +6 -0
  120. package/src/runtime/agent/orchestrator/providers/wire-protobuf-codec.mjs +368 -0
  121. package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +12 -7
  122. package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +2 -0
  123. package/src/runtime/agent/orchestrator/runtime-core/compaction-config-keys.mjs +62 -0
  124. package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +37 -16
  125. package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-delta.mjs +100 -23
  126. package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +1 -1
  127. package/src/runtime/agent/orchestrator/runtime-core/reaction-tool-defs.mjs +133 -0
  128. package/src/runtime/agent/orchestrator/runtime-core/session-text.mjs +2 -0
  129. package/src/runtime/agent/orchestrator/runtime-core/tool-bridge.mjs +19 -4
  130. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +3 -0
  131. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +125 -30
  132. package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +23 -5
  133. package/src/runtime/agent/orchestrator/runtime-core/tool-profile.mjs +35 -10
  134. package/src/runtime/agent/orchestrator/runtime-core/workflow/agents.mjs +57 -10
  135. package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +9 -6
  136. package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +1 -1
  137. package/src/runtime/agent/orchestrator/session/agent-loop.mjs +18 -0
  138. package/src/runtime/agent/orchestrator/session/agent-room.d.mts +0 -3
  139. package/src/runtime/agent/orchestrator/session/agent-room.mjs +10 -4
  140. package/src/runtime/agent/orchestrator/session/cache-warm.mjs +792 -0
  141. package/src/runtime/agent/orchestrator/session/compact/runner.mjs +148 -25
  142. package/src/runtime/agent/orchestrator/session/compaction-archive-capture.mjs +475 -58
  143. package/src/runtime/agent/orchestrator/session/compaction-archive.mjs +42 -17
  144. package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +8 -0
  145. package/src/runtime/agent/orchestrator/session/human-gate/gate.mjs +47 -9
  146. package/src/runtime/agent/orchestrator/session/human-gate/outbound-policy.mjs +6 -2
  147. package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +36 -4
  148. package/src/runtime/agent/orchestrator/session/human-gate/store.mjs +14 -2
  149. package/src/runtime/agent/orchestrator/session/loop/assistant-commit.mjs +8 -0
  150. package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +18 -22
  151. package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +32 -3
  152. package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +11 -2
  153. package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/segments.mjs +4 -1
  154. package/src/runtime/agent/orchestrator/session/loop/no-tool-turn.mjs +51 -3
  155. package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +17 -3
  156. package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +10 -2
  157. package/src/runtime/agent/orchestrator/session/loop/tool-exec/after-hook.mjs +2 -1
  158. package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +14 -4
  159. package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +16 -2
  160. package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +16 -1
  161. package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +10 -0
  162. package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +3 -10
  163. package/src/runtime/agent/orchestrator/session/loop/tool-phase.mjs +23 -5
  164. package/src/runtime/agent/orchestrator/session/loop/turn-limits.mjs +60 -0
  165. package/src/runtime/agent/orchestrator/session/manager/ask-queue.mjs +12 -2
  166. package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +19 -1
  167. package/src/runtime/agent/orchestrator/session/manager/ask-turn-commit.mjs +2 -0
  168. package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +133 -90
  169. package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +14 -0
  170. package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +2 -1
  171. package/src/runtime/agent/orchestrator/session/manager/ask-turn-state.mjs +31 -4
  172. package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +30 -18
  173. package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +23 -13
  174. package/src/runtime/agent/orchestrator/session/manager/pending-message-entry.mjs +11 -2
  175. package/src/runtime/agent/orchestrator/session/manager/provider-replay.mjs +13 -0
  176. package/src/runtime/agent/orchestrator/session/manager/route-fallback-chain.mjs +129 -0
  177. package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +20 -2
  178. package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +2 -0
  179. package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +8 -0
  180. package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +1 -1
  181. package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +13 -0
  182. package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +7 -2
  183. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +102 -15
  184. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +18 -5
  185. package/src/runtime/agent/orchestrator/session/message-ids.mjs +5 -3
  186. package/src/runtime/agent/orchestrator/session/message-reactions.mjs +89 -0
  187. package/src/runtime/agent/orchestrator/session/message-reactions.test-support.mjs +75 -0
  188. package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +19 -8
  189. package/src/runtime/agent/orchestrator/session/prompt-cache-idle-gaps.mjs +113 -0
  190. package/src/runtime/agent/orchestrator/session/prompt-cache-touch-store.mjs +127 -0
  191. package/src/runtime/agent/orchestrator/session/routine-result.d.mts +0 -2
  192. package/src/runtime/agent/orchestrator/session/routine-result.mjs +47 -11
  193. package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +20 -2
  194. package/src/runtime/agent/orchestrator/session/sensitive-projection.mjs +100 -0
  195. package/src/runtime/agent/orchestrator/session/sensitive-values.mjs +257 -0
  196. package/src/runtime/agent/orchestrator/session/side-question-store.mjs +20 -7
  197. package/src/runtime/agent/orchestrator/session/side-question.mjs +18 -0
  198. package/src/runtime/agent/orchestrator/session/skill-update-notice.mjs +60 -0
  199. package/src/runtime/agent/orchestrator/session/store/live-state.mjs +6 -3
  200. package/src/runtime/agent/orchestrator/session/store/save-delta.mjs +9 -5
  201. package/src/runtime/agent/orchestrator/session/store/serialize.mjs +9 -8
  202. package/src/runtime/agent/orchestrator/session/store/session-persistence-events.mjs +29 -0
  203. package/src/runtime/agent/orchestrator/session/store-agent-worker-header-cache.mjs +85 -0
  204. package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +133 -18
  205. package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +12 -2
  206. package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +44 -14
  207. package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +84 -3
  208. package/src/runtime/agent/orchestrator/session/stored-attachment-history.mjs +32 -0
  209. package/src/runtime/agent/orchestrator/session/tail-reminder-rules.mjs +11 -5
  210. package/src/runtime/agent/orchestrator/session/thinking-binding.mjs +108 -0
  211. package/src/runtime/agent/orchestrator/session/tool-batch/pre-dispatch.mjs +2 -2
  212. package/src/runtime/agent/orchestrator/session/tool-batch/record-outcome.mjs +2 -1
  213. package/src/runtime/agent/orchestrator/session/tool-batch/state.mjs +4 -0
  214. package/src/runtime/agent/orchestrator/session/tool-batch.mjs +5 -0
  215. package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +25 -2
  216. package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-status.mjs +9 -7
  217. package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-text.mjs +2 -2
  218. package/src/runtime/agent/orchestrator/session/turn-failure.mjs +5 -1
  219. package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +5 -2
  220. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +12 -1
  221. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/misuse-guard.mjs +240 -0
  222. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/result-format.mjs +1 -1
  223. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/shell-cwd.mjs +38 -0
  224. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +25 -5
  225. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +65 -7
  226. package/src/runtime/agent/orchestrator/tools/builtin/shell-runtime.mjs +7 -1
  227. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +36 -13
  228. package/src/runtime/browser-bridge/action-schema.mjs +13 -2
  229. package/src/runtime/browser-bridge/client.mjs +73 -8
  230. package/src/runtime/browser-bridge/input-fields.mjs +8 -9
  231. package/src/runtime/browser-bridge/mail-links.mjs +107 -0
  232. package/src/runtime/browser-bridge/tool-defs.mjs +1 -1
  233. package/src/runtime/channels/lib/config.mjs +6 -61
  234. package/src/runtime/channels/lib/crash-log.mjs +1 -1
  235. package/src/runtime/channels/lib/event-pipeline.mjs +4 -19
  236. package/src/runtime/channels/lib/event-queue.mjs +3 -18
  237. package/src/runtime/channels/lib/owned-runtime/automation-services.mjs +2 -2
  238. package/src/runtime/channels/lib/owned-runtime/automation-start.mjs +3 -4
  239. package/src/runtime/channels/lib/owned-runtime/config-reload.mjs +4 -59
  240. package/src/runtime/channels/lib/owned-runtime/owned-start.mjs +33 -115
  241. package/src/runtime/channels/lib/owned-runtime/owned-stop.mjs +5 -22
  242. package/src/runtime/channels/lib/owned-runtime/state.mjs +2 -8
  243. package/src/runtime/channels/lib/owned-runtime.mjs +6 -23
  244. package/src/runtime/channels/lib/parent-bridge.mjs +2 -2
  245. package/src/runtime/channels/lib/runtime-paths.mjs +4 -43
  246. package/src/runtime/channels/lib/schedule-errors.mjs +51 -0
  247. package/src/runtime/channels/lib/scheduler.mjs +135 -154
  248. package/src/runtime/channels/lib/schedules-db.mjs +83 -11
  249. package/src/runtime/channels/lib/status-snapshot.mjs +1 -1
  250. package/src/runtime/channels/lib/tool-dispatch.mjs +14 -2
  251. package/src/runtime/channels/lib/webhooks-db.mjs +5 -9
  252. package/src/runtime/channels/lib/worker-bootstrap.mjs +0 -1
  253. package/src/runtime/channels/lib/worker-ipc.mjs +0 -1
  254. package/src/runtime/channels/lib/worker-main.mjs +19 -34
  255. package/src/runtime/computer-bridge/action-schema.mjs +42 -1
  256. package/src/runtime/computer-bridge/actions.mjs +9 -1
  257. package/src/runtime/computer-bridge/client.mjs +180 -8
  258. package/src/runtime/computer-bridge/core-actions.mjs +2 -2
  259. package/src/runtime/computer-bridge/error-recovery.mjs +27 -2
  260. package/src/runtime/computer-bridge/linux-readiness.mjs +65 -23
  261. package/src/runtime/computer-bridge/pending-continuation.mjs +1 -1
  262. package/src/runtime/connectors/connector-accounts-mcp.mjs +230 -0
  263. package/src/runtime/connectors/gmail-app-password.mjs +172 -39
  264. package/src/runtime/connectors/google-mcp.mjs +10 -12
  265. package/src/runtime/memory/lib/pg/adapter.mjs +77 -70
  266. package/src/runtime/memory/lib/pg/supervisor.mjs +24 -12
  267. package/src/runtime/memory/lib/runtime-fetcher.mjs +23 -5
  268. package/src/runtime/office/com/com-adapter.mjs +17 -1
  269. package/src/runtime/office/com/office-com-host.ps1 +51 -1
  270. package/src/runtime/office/pdf/cfb-fixture.mjs +328 -0
  271. package/src/runtime/office/pdf/cfb-protection.mjs +311 -0
  272. package/src/runtime/office/pdf/document-preview.mjs +326 -8
  273. package/src/runtime/office/pdf/ooxml-crypto.mjs +469 -0
  274. package/src/runtime/office/pdf/ooxml-key-worker.mjs +14 -0
  275. package/src/runtime/office/portable/portable-soffice.mjs +45 -5
  276. package/src/runtime/session-search/session-search-db.mjs +73 -9
  277. package/src/runtime/session-search/session-search-ingest.mjs +110 -20
  278. package/src/runtime/shared/abort-race.mjs +89 -0
  279. package/src/runtime/shared/agent-avatar.d.mts +0 -1
  280. package/src/runtime/shared/agent-kind.mjs +4 -3
  281. package/src/runtime/shared/bot-hops.mjs +62 -2
  282. package/src/runtime/shared/bounded-download.mjs +8 -3
  283. package/src/runtime/shared/config.mjs +51 -35
  284. package/src/runtime/shared/connector-accounts.mjs +20 -10
  285. package/src/runtime/shared/connector-catalog.d.mts +33 -2
  286. package/src/runtime/shared/connector-catalog.mjs +166 -8
  287. package/src/runtime/shared/connector-triggers.mjs +22 -19
  288. package/src/runtime/shared/defaults-separation.mjs +2 -14
  289. package/src/runtime/shared/delegated-approval-host.mjs +103 -11
  290. package/src/runtime/shared/developer-options.mjs +32 -1
  291. package/src/runtime/shared/err-text.mjs +24 -15
  292. package/src/runtime/shared/file-permissions.d.mts +0 -8
  293. package/src/runtime/shared/file-permissions.mjs +0 -11
  294. package/src/runtime/shared/git-direct.test-support.mjs +19 -0
  295. package/src/runtime/shared/google-oauth-client.generated.json +4 -0
  296. package/src/runtime/shared/google-oauth-client.mjs +34 -9
  297. package/src/runtime/shared/heartbeat-interval.d.mts +4 -0
  298. package/src/runtime/shared/heartbeat-interval.mjs +19 -0
  299. package/src/runtime/shared/idle-auto-clear-gate.mjs +104 -0
  300. package/src/runtime/shared/llm/anthropic-betas.mjs +7 -0
  301. package/src/runtime/shared/llm/anthropic-thinking-contract.mjs +12 -0
  302. package/src/runtime/shared/llm/provider-catalog-registry.mjs +1 -0
  303. package/src/runtime/shared/llm/usage-rollup.mjs +1 -1
  304. package/src/runtime/shared/llm/well-formed.mjs +66 -0
  305. package/src/runtime/shared/mixy-presence.mjs +22 -0
  306. package/src/runtime/shared/orchestration.d.mts +2 -0
  307. package/src/runtime/shared/pg-schema-db.mjs +27 -16
  308. package/src/runtime/shared/profile-config.cjs +1 -1
  309. package/src/runtime/shared/prompt-origin.d.mts +4 -0
  310. package/src/runtime/shared/prompt-origin.mjs +21 -0
  311. package/src/runtime/shared/provider-accounts.mjs +231 -59
  312. package/src/runtime/shared/provider-api-key.mjs +19 -8
  313. package/src/runtime/shared/provider-display-name.mjs +29 -0
  314. package/src/runtime/shared/provider-timeout-phase.mjs +2 -0
  315. package/src/runtime/shared/routine-trigger.d.mts +2 -0
  316. package/src/runtime/shared/routine-trigger.mjs +52 -0
  317. package/src/runtime/shared/sensitive-path-rules.d.mts +2 -10
  318. package/src/runtime/shared/sensitive-path-rules.mjs +19 -41
  319. package/src/runtime/shared/session-activity-signal.mjs +34 -1
  320. package/src/runtime/shared/session-sidebar-host.d.mts +1 -1
  321. package/src/runtime/shared/session-sidebar-host.mjs +7 -3
  322. package/src/runtime/shared/session-turn-prelude.mjs +18 -0
  323. package/src/runtime/shared/tool-execution-contract.mjs +2 -0
  324. package/src/runtime/shared/tool-result-summary.mjs +1 -14
  325. package/src/runtime/shared/transcript-metadata.mjs +38 -0
  326. package/src/runtime/shared/user-data-guard.mjs +30 -2
  327. package/src/runtime/shared/worktrees/activity-gate.mjs +12 -5
  328. package/src/runtime/shared/worktrees/test-support.mjs +9 -4
  329. package/src/runtime/terminal-bridge/client.mjs +10 -1
  330. package/src/runtime/visualize-bridge/client.mjs +27 -8
  331. package/src/runtime/visualize-bridge/tool-defs.mjs +22 -8
  332. package/src/runtime/visualize-bridge/tool-meta.d.mts +5 -0
  333. package/src/runtime/visualize-bridge/tool-meta.mjs +22 -0
  334. package/src/runtime/web-search/lib/fetch-pipeline.mjs +2 -2
  335. package/src/session-runtime/agent-home-delivery.mjs +486 -179
  336. package/src/session-runtime/agent-room-delivery.mjs +28 -1
  337. package/src/session-runtime/agent-task-sessions.mjs +561 -199
  338. package/src/session-runtime/boot/apis.mjs +9 -0
  339. package/src/session-runtime/boot/begin.mjs +3 -2
  340. package/src/session-runtime/boot/infrastructure.mjs +4 -0
  341. package/src/session-runtime/boot/providers.mjs +3 -0
  342. package/src/session-runtime/boot/tools.mjs +8 -1
  343. package/src/session-runtime/bot-chain.mjs +32 -0
  344. package/src/session-runtime/bot-status.mjs +7 -4
  345. package/src/session-runtime/channel-config-api.mjs +63 -17
  346. package/src/session-runtime/config-lifecycle.mjs +6 -0
  347. package/src/session-runtime/connector-merge-migration.mjs +305 -0
  348. package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +132 -28
  349. package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +2 -0
  350. package/src/session-runtime/internal-tool-executor/reaction-tool.mjs +45 -0
  351. package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +72 -5
  352. package/src/session-runtime/internal-tool-executor.mjs +4 -0
  353. package/src/session-runtime/lifecycle/inheritance.mjs +16 -3
  354. package/src/session-runtime/lifecycle/session-catalog.mjs +3 -1
  355. package/src/session-runtime/lifecycle/teardown/runtime-stops.mjs +50 -4
  356. package/src/session-runtime/lifecycle/teardown.mjs +23 -5
  357. package/src/session-runtime/mcp-glue/server-catalog.mjs +61 -3
  358. package/src/session-runtime/mcp-oauth-login.mjs +5 -3
  359. package/src/session-runtime/mixy-heartbeat.mjs +927 -0
  360. package/src/session-runtime/model-route/route-tuning.mjs +10 -6
  361. package/src/session-runtime/notification-bus.mjs +31 -117
  362. package/src/session-runtime/notification-completion-queue.mjs +54 -0
  363. package/src/session-runtime/notification-listeners.mjs +76 -0
  364. package/src/session-runtime/owned-automation-run.mjs +35 -13
  365. package/src/session-runtime/prewarm/channel-start.mjs +3 -7
  366. package/src/session-runtime/provider-auth/login.mjs +7 -0
  367. package/src/session-runtime/provider-models/row-hydration.mjs +13 -2
  368. package/src/session-runtime/resource-mcp-api.mjs +143 -224
  369. package/src/session-runtime/resource-mcp-connector-accounts.mjs +163 -0
  370. package/src/session-runtime/resource-mcp-oauth-api.mjs +217 -0
  371. package/src/session-runtime/resource-mcp-secrets.mjs +82 -0
  372. package/src/session-runtime/resource-mcp-servers.mjs +78 -0
  373. package/src/session-runtime/resource-mcp-store.mjs +49 -0
  374. package/src/session-runtime/routine-home-turn.mjs +33 -6
  375. package/src/session-runtime/routine-owner.mjs +40 -9
  376. package/src/session-runtime/schedule-session-run.mjs +7 -3
  377. package/src/session-runtime/services/agent-tool/close-flow.mjs +3 -0
  378. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-plan.mjs +8 -12
  379. package/src/session-runtime/services/agent-tool/spawn-preset.mjs +7 -2
  380. package/src/session-runtime/services/agent-tool/tag-registry.mjs +1 -0
  381. package/src/session-runtime/services/agent-tool/worker-index/awaiting-user-sync.mjs +51 -0
  382. package/src/session-runtime/services/agent-tool/worker-index/disposal.mjs +55 -0
  383. package/src/session-runtime/services/agent-tool/worker-index/released-store.mjs +123 -0
  384. package/src/session-runtime/services/agent-tool/worker-index/restart-settlement.mjs +112 -0
  385. package/src/session-runtime/services/agent-tool/worker-index/row-reads.mjs +36 -0
  386. package/src/session-runtime/services/agent-tool/worker-index/row-shape.mjs +2 -0
  387. package/src/session-runtime/services/agent-tool/worker-index/row-store.mjs +17 -4
  388. package/src/session-runtime/services/agent-tool/worker-index/row-writes.mjs +58 -0
  389. package/src/session-runtime/services/agent-tool/worker-index.mjs +41 -241
  390. package/src/session-runtime/services/agent-tool/worker-rows.mjs +3 -0
  391. package/src/session-runtime/services/channel-admin.mjs +73 -31
  392. package/src/session-runtime/services/channel-session-router.mjs +4 -2
  393. package/src/session-runtime/services/channel-worker.mjs +1 -1
  394. package/src/session-runtime/services/provider-admin.mjs +128 -25
  395. package/src/session-runtime/services/schedule-access.mjs +14 -0
  396. package/src/session-runtime/services/seeds.mjs +0 -28
  397. package/src/session-runtime/services/usage-dashboard-model.mjs +1 -0
  398. package/src/session-runtime/session-compaction-sync.mjs +27 -0
  399. package/src/session-runtime/session-create/session-options.mjs +8 -4
  400. package/src/session-runtime/settings-builtin-tools-api.mjs +11 -0
  401. package/src/session-runtime/settings-compaction-api.mjs +2 -40
  402. package/src/session-runtime/settings-system-api.mjs +28 -1
  403. package/src/session-runtime/setup-tool/agent-settings-actions.mjs +65 -0
  404. package/src/session-runtime/setup-tool/executor.mjs +187 -29
  405. package/src/session-runtime/setup-tool/extended-actions.mjs +33 -2
  406. package/src/session-runtime/setup-tool/session-route-actions.mjs +152 -0
  407. package/src/session-runtime/setup-tool/settings-contract.mjs +68 -6
  408. package/src/session-runtime/setup-tool/tool-defs.mjs +92 -6
  409. package/src/session-runtime/task-session-route.mjs +99 -0
  410. package/src/session-runtime/tool-policy/agent-profile-fold.mjs +17 -13
  411. package/src/session-runtime/tool-policy/policy-stage.mjs +21 -4
  412. package/src/session-runtime/tool-policy/surface-helpers.mjs +2 -3
  413. package/src/session-runtime/tool-surface.mjs +4 -0
  414. package/src/session-runtime/turn/turn-run/ask-callbacks.mjs +1 -0
  415. package/src/session-runtime/workflow-agents-api/agent-editor.mjs +98 -21
  416. package/src/session-runtime/workflow-agents-api/style-and-mode.mjs +4 -0
  417. package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +6 -1
  418. package/src/session-runtime/workspace/transitions.mjs +10 -2
  419. package/src/standalone/channel-transport/client-registry/client-records.mjs +65 -0
  420. package/src/standalone/channel-transport/client-registry/client-registration.mjs +118 -0
  421. package/src/standalone/channel-transport/client-registry.mjs +24 -163
  422. package/src/standalone/channel-transport.mjs +1 -1
  423. package/src/standalone/daemon-channels-loader.mjs +10 -8
  424. package/src/standalone/daemon-session-control/list-page.mjs +72 -0
  425. package/src/standalone/daemon-session-control/request.mjs +51 -0
  426. package/src/standalone/daemon-session-control/room-host.mjs +57 -0
  427. package/src/standalone/daemon-session-control/route-control.mjs +48 -0
  428. package/src/standalone/daemon-session-control/send-turn.mjs +60 -0
  429. package/src/standalone/daemon-session-control/worktree-control.mjs +40 -0
  430. package/src/standalone/daemon-session-control.mjs +161 -157
  431. package/src/standalone/daemon.mjs +33 -2
  432. package/src/standalone/session-client.mjs +7 -3
  433. package/src/standalone/session-protocol.mjs +10 -0
  434. package/src/standalone/session-service/agent-tree/agent-cancel.mjs +6 -2
  435. package/src/standalone/session-service/agent-tree/agent-child.mjs +1 -0
  436. package/src/standalone/session-service/quota-resume.mjs +3 -0
  437. package/src/standalone/session-service/retention/busy.mjs +65 -1
  438. package/src/standalone/session-service/session-calls/session-action.mjs +23 -2
  439. package/src/standalone/session-service/session-calls/session-turns.mjs +6 -0
  440. package/src/standalone/session-service/session-calls/session-views.mjs +8 -0
  441. package/src/standalone/session-service.mjs +13 -0
  442. package/src/standalone/session-tool-output.mjs +21 -10
  443. package/src/tui/app/model-options.mjs +4 -27
  444. package/src/tui/dist/index.mjs +81 -65
  445. package/src/tui/session/agent-job-feed/model-notification.mjs +3 -0
  446. package/src/tui/session/initial-state.mjs +3 -0
  447. package/src/tui/session/notice-surface.mjs +23 -1
  448. package/src/tui/session/queue-helpers.mjs +3 -42
  449. package/src/tui/session/session-api/integrations.mjs +1 -0
  450. package/src/tui/session/session-api/lifecycle.mjs +8 -0
  451. package/src/tui/session/session-api/routes-agent-definitions.mjs +14 -2
  452. package/src/tui/session/session-api/routes-write.mjs +5 -1
  453. package/src/tui/session/session-api/routes.mjs +1 -0
  454. package/src/tui/session/session-api/settings.mjs +30 -2
  455. package/src/tui/session/session-flow/auto-clear.mjs +4 -33
  456. package/src/tui/session/session-flow/drain-closed-queue.mjs +38 -0
  457. package/src/tui/session/session-flow/drain-enqueue.mjs +86 -0
  458. package/src/tui/session/session-flow/drain-retry.mjs +35 -0
  459. package/src/tui/session/session-flow/drain.mjs +118 -149
  460. package/src/tui/session/session-flow/queue/entry-shape.mjs +5 -0
  461. package/src/tui/session/session-flow/queue/take-entries.mjs +5 -2
  462. package/src/tui/session/tool-approval-delegation.mjs +64 -0
  463. package/src/tui/session/tool-approval-request.mjs +39 -0
  464. package/src/tui/session/tool-approval-settle.mjs +62 -0
  465. package/src/tui/session/tool-approval.mjs +69 -115
  466. package/src/tui/session/tui-steering-persist.mjs +8 -1
  467. package/src/tui/session/turn-stream.mjs +36 -3
  468. package/src/tui/session/turn.mjs +23 -2
  469. package/src/vendor/statusline/bin/statusline-route.mjs +1 -219
  470. package/src/vendor/statusline/src/gateway/route-meta.mjs +35 -13
  471. package/scripts/code-graph-description-contract.mjs +0 -188
  472. package/src/runtime/channels/lib/owned-runtime/ownership-refresh.mjs +0 -36
@@ -0,0 +1,23 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Mario Zechner
4
+ Copyright (c) 2025-2026 Can Bölük
5
+ Copyright (c) 2026 Stencil Labs, Inc.
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
package/NOTICE.md CHANGED
@@ -186,9 +186,9 @@ attributions.
186
186
 
187
187
  The connector brand marks in
188
188
  `apps/desktop/src/renderer/connectors-brand-icons.ts` carry Simple Icons path
189
- data and brand colours unmodified (Airtable, Blender, Confluence, Discord,
189
+ data and brand colours unmodified (Airtable, Blender, Confluence,
190
190
  Dropbox, Figma, GitHub, Gmail, Google Calendar, Google Drive, Hugging Face,
191
- Jira, Linear, Notion, PostgreSQL, Sentry, Stripe, Supabase, Telegram, Trello,
191
+ Jira, Linear, Notion, PostgreSQL, Sentry, Stripe, Supabase, Trello,
192
192
  Unity, Vercel); Unity's mark is drawn in black, as its listed colour is white.
193
193
  Simple Icons is dedicated to the public domain under CC0 1.0; each
194
194
  mark remains the trademark of its owner and is shown only to name that
@@ -284,3 +284,18 @@ Full license text: `LICENSES/mago-MIT.txt`
284
284
  <https://github.com/posit-dev/air>
285
285
 
286
286
  Full license text: `LICENSES/air-MIT.txt`
287
+
288
+ ### oh-my-pi — MIT
289
+
290
+ <https://github.com/can1357/oh-my-pi>
291
+
292
+ The Devin provider follows its Devin integration. The model-family table in
293
+ `src/runtime/agent/orchestrator/providers/devin-wire-families.mjs` is data
294
+ taken from its model-collapse rules, and these files contain code derived from
295
+ it: `devin-wire-models.mjs` (catalog discovery and family collapsing),
296
+ `devin-wire-session.mjs` (client identity values), `devin-wire-identity.mjs`
297
+ (model classification and thinking rendering), `devin-wire-schema.mjs` (tool
298
+ schema normalization) and `devin-wire-tool-args.mjs` (tool-argument repair),
299
+ all under `src/runtime/agent/orchestrator/providers/`.
300
+
301
+ Full license text: `LICENSES/oh-my-pi-MIT.txt`
package/README.md CHANGED
@@ -26,6 +26,7 @@ https://github.com/user-attachments/assets/af515dc9-b0fb-4b6a-aaa1-1d82db792ed0
26
26
  <a href="https://github.com/tribgames/mixdog/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/tribgames/mixdog?style=flat-square"></a>
27
27
  <a href="https://www.npmjs.com/package/mixdog"><img alt="npm" src="https://img.shields.io/npm/v/mixdog?style=flat-square"></a>
28
28
  <a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square"></a>
29
+ <a href="https://github.com/sponsors/JYP8877"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/JYP8877?style=flat-square&logo=githubsponsors&label=Sponsors"></a>
29
30
  </p>
30
31
 
31
32
  <p align="center">
@@ -174,6 +175,16 @@ Found a bug or missing a feature?
174
175
  [Open an issue](https://github.com/tribgames/mixdog/issues). If Mixdog saves
175
176
  you tokens, a star helps others find it.
176
177
 
178
+ ## Sponsor
179
+
180
+ Mixdog is free and open source. Sponsorship pays for development time and the
181
+ model tokens used for testing:
182
+ [github.com/sponsors/JYP8877](https://github.com/sponsors/JYP8877).
183
+
184
+ ### Supporters
185
+
186
+ Your name here — [become a sponsor](https://github.com/sponsors/JYP8877).
187
+
177
188
  ## License
178
189
 
179
190
  Mixdog is licensed under [Apache-2.0](LICENSE). Third-party components retain
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mixdog",
3
- "version": "1.3.4",
3
+ "version": "1.4.0",
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.",
@@ -71,8 +71,6 @@
71
71
  "smoke:all": "npm run smoke && npm run smoke:boot && npm run smoke:patch && npm run smoke:compact",
72
72
  "smoke:boot": "node scripts/boot-smoke.mjs",
73
73
  "smoke:compact": "node scripts/compact-smoke.mjs",
74
- "test:compact": "node scripts/test-direct.mjs scripts/suite-compact-test.mjs src/runtime/agent/orchestrator/session/compact-fresh-context.test.mjs src/runtime/agent/orchestrator/session/compaction-read-reset.test.mjs src/runtime/agent/orchestrator/session/token-estimate.test.mjs",
75
- "test:markdown": "node scripts/test-direct.mjs scripts/markdown-surface-test.mjs",
76
74
  "smoke:loop": "node scripts/smoke-loop.mjs",
77
75
  "smoke:loop:final": "node scripts/smoke-loop-report.mjs --require-complete --min-elapsed 5h --min-iterations 400 --max-gap 60s --max-smoke-ms 10000 --max-avg-smoke-ms 8500 --max-step-ms smoke.mjs=4000 --max-step-ms boot-smoke.mjs=8000 --max-rss-mb 140 --max-rss-growth-mb 50",
78
76
  "smoke:loop:report": "node scripts/smoke-loop-report.mjs",
@@ -87,18 +85,12 @@
87
85
  "test:release-critical": "npm run test:release-assets && npm run smoke:patch && npm run test:providers",
88
86
  "test:spec-advisory": "node scripts/run-advisory-spec.mjs && npm run test:spec-advisory --prefix apps/desktop",
89
87
  "test:session-transport": "node scripts/test-direct.mjs \"scripts/session-transport/*.test.mjs\" scripts/daemon-bootstrap-test.mjs src/standalone/session-runtime-inline-host.test.mjs",
90
- "test:session": "node scripts/test-direct.mjs scripts/runtime-turn-contract-test.mjs scripts/session-save-fault-store.slow.test.mjs scripts/turn-review-revert.slow.test.mjs src/runtime/shared/tool-surface.test.mjs src/runtime/bridge-clients.test.mjs src/runtime/browser-bridge/action-schema.test.mjs src/runtime/computer-bridge/client-semantic-error.test.mjs src/runtime/agent/orchestrator/session/tool-envelope.test.mjs src/runtime/agent/orchestrator/session/eager-dispatch.test.mjs",
91
- "test:quick": "npm run test:session && npm run test:session-transport && npm run test:desktop-main --prefix apps/desktop",
92
88
  "test:office": "node scripts/test-direct.mjs scripts/run-office-live-tests.test.mjs src/runtime/office/office-runtime-contract.test.mjs src/runtime/office/office-runtime-com.test.mjs src/runtime/office/office-runtime-portable.slow.test.mjs src/runtime/office/xlsx-formula-audit.test.mjs src/runtime/office/xlsx-portable-snapshot.test.mjs src/runtime/office/office-runtime-pdf.slow.test.mjs src/runtime/office/office-runtime-design.test.mjs src/runtime/office/office-assurance.slow.test.mjs src/runtime/office/office-design-aesthetics.test.mjs src/runtime/office/portable-authoring.slow.test.mjs src/runtime/office/slide-quality.test.mjs src/runtime/office/authoring/pptx-brief.test.mjs src/runtime/office/authoring/pptx-receipt.test.mjs src/runtime/office/quality/render-air.test.mjs src/runtime/office/quality/pptx-deck-rubric.test.mjs && npm run test:office-approval --prefix apps/desktop",
93
89
  "test:office:live": "node scripts/run-office-live-tests.mjs",
94
- "test:office:preview": "node scripts/test-direct.mjs src/runtime/office/office-render-preview.test.mjs",
95
- "test:office:review": "node scripts/test-direct.mjs src/runtime/office/pptx-independent-review.test.mjs src/runtime/office/pptx-chart-styling.test.mjs",
96
- "test:office:cleanup": "node scripts/test-direct.mjs src/runtime/office/com/office-cleanup.test.mjs src/runtime/office/office-runtime-com.test.mjs",
97
90
  "test:office:compat": "node scripts/run-office-live-tests.mjs compat",
98
91
  "test:office:live:all": "node scripts/run-office-live-tests.mjs all",
99
92
  "test:office:render": "node scripts/test-direct.mjs src/runtime/office/pptx-skill-kit.slow.test.mjs",
100
93
  "office:icons": "node scripts/office/build-pptx-icons.mjs",
101
- "test:media": "node scripts/test-direct.mjs src/runtime/media/catalog.test.mjs src/runtime/media/lanes.test.mjs src/runtime/media/tool.test.mjs src/runtime/media/defaults.test.mjs src/runtime/media/store.test.mjs src/runtime/media/renditions.test.mjs src/runtime/media/adapters/codex-image.test.mjs src/runtime/media/adapters/gemini-image.test.mjs src/runtime/media/adapters/image-api.test.mjs src/tui/session/session-api/media-lanes.test.mjs",
102
94
  "failures": "node scripts/tool-failures.mjs",
103
95
  "trace:llm": "node scripts/llm-trace-summary.mjs",
104
96
  "bench:office": "node src/runtime/office/bench/benchmark.mjs",
@@ -117,8 +109,6 @@
117
109
  "bench:run": "node scripts/bench-run.mjs",
118
110
  "bench:recall": "node scripts/recall-bench.mjs",
119
111
  "bench:recall:strict": "node scripts/recall-bench.mjs --strict",
120
- "test:recall-validator": "node scripts/test-direct.mjs scripts/recall-bench-test.mjs",
121
- "test:suite-health": "node scripts/test-direct.mjs scripts/suite-health.test.mjs",
122
112
  "bench:tui-load": "node scripts/tui-runtime-load-bench.mjs",
123
113
  "bench:output-style": "node scripts/output-style-bench.mjs",
124
114
  "bench:session-context": "node scripts/session-context-bench.mjs",
@@ -181,10 +171,12 @@
181
171
  "pptxgenjs": "^4.0.1",
182
172
  "puppeteer-core": "^25.2.0",
183
173
  "react": "^19.2.7",
174
+ "saxes": "^6.0.0",
184
175
  "sharp": "^0.35.5",
185
176
  "string-width": "^8.2.1",
186
177
  "strip-ansi": "^7.2.0",
187
178
  "tesseract.js": "^7.0.0",
179
+ "tldts": "^7.4.18",
188
180
  "undici": "^8.10.2",
189
181
  "unpdf": "^1.8.0",
190
182
  "wrap-ansi": "^10.0.0",
@@ -1,7 +1,7 @@
1
1
  // Stub channel service for the flip smoke: same lifecycle contract as
2
2
  // src/standalone/daemon.mjs (pid-verified singleton claim, HTTP+SSE
3
3
  // transport, discovery file, ready handshake, client-grace self-shutdown) but
4
- // with a STUB runtime instead of worker-main — no Discord token needed. The
4
+ // with a STUB runtime instead of worker-main. The
5
5
  // real channel-worker.mjs spawn-or-attach path forks THIS via
6
6
  // MIXDOG_DAEMON_ENTRY, so the flip is exercised end to end.
7
7
  process.env.MIXDOG_WORKER_MODE = process.env.MIXDOG_WORKER_MODE || '1';
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Release packaging step: write Mixdog's Google OAuth "Desktop app" client from
4
+ // MIXDOG_GOOGLE_OAUTH_CLIENT_ID / MIXDOG_GOOGLE_OAUTH_CLIENT_SECRET (repository
5
+ // secrets) into the generated, gitignored file that googleOAuthClient() reads.
6
+ // Run it before `npm pack` and before apps/desktop `prepare:runtime`, so the
7
+ // npm package and every runtime.asar include the file.
8
+ //
9
+ // --require fail when either value is missing (release and publish jobs).
10
+ // Without it a missing value is skipped, so PR, fork and local
11
+ // builds go on without a built-in Google sign-in.
12
+ //
13
+ // The values are never printed.
14
+
15
+ import { writeFileSync } from 'node:fs';
16
+ import { pathToFileURL } from 'node:url';
17
+
18
+ import { GOOGLE_OAUTH_CLIENT_FILE } from '../src/runtime/shared/google-oauth-client.mjs';
19
+
20
+ const text = (value) => String(value || '').trim();
21
+
22
+ /** Write the client file; returns false when skipped for missing values. */
23
+ export function embedGoogleOAuthClient({ env = process.env, file = GOOGLE_OAUTH_CLIENT_FILE, required = false } = {}) {
24
+ const clientId = text(env.MIXDOG_GOOGLE_OAUTH_CLIENT_ID);
25
+ const clientSecret = text(env.MIXDOG_GOOGLE_OAUTH_CLIENT_SECRET);
26
+ if (!clientId || !clientSecret) {
27
+ if (!required) return false;
28
+ throw new Error(
29
+ 'MIXDOG_GOOGLE_OAUTH_CLIENT_ID and MIXDOG_GOOGLE_OAUTH_CLIENT_SECRET must both be set: ' +
30
+ 'a release without them ships no built-in Google sign-in. Add them as repository secrets.'
31
+ );
32
+ }
33
+ writeFileSync(file, `${JSON.stringify({ clientId, clientSecret }, null, 2)}\n`);
34
+ return true;
35
+ }
36
+
37
+ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
38
+ try {
39
+ const embedded = embedGoogleOAuthClient({ required: process.argv.includes('--require') });
40
+ console.log(
41
+ embedded
42
+ ? 'Embedded the Google OAuth client for this build.'
43
+ : 'No Google OAuth client configured; this build has no built-in Google sign-in.'
44
+ );
45
+ } catch (error) {
46
+ console.error(`::error title=Google OAuth client missing::${error.message}`);
47
+ process.exitCode = 1;
48
+ }
49
+ }
@@ -10,7 +10,9 @@
10
10
  // Not covered locally: runtime-macos, computer-backend (cargo + Linux X11),
11
11
  // desktop-tests `computer` lane (windows-latest, src/main/computer/ only),
12
12
  // relay (apps/relay tests), graph (cargo test), patch (cargo test of the
13
- // checked-out engine), mobile-scripts (Python unittest). The gate's path
13
+ // checked-out engine), browser-import (windows-latest cargo test of the Chrome
14
+ // importer against a fetched upstream checkout), mobile-scripts (Python
15
+ // unittest). The gate's path
14
16
  // filtering is not applied: every check and leg always runs. Run `npm ci`
15
17
  // (root and apps/desktop) first.
16
18
  import { spawn, spawnSync } from 'node:child_process';
@@ -112,7 +114,7 @@ for (const leg of legs) {
112
114
  }
113
115
  }
114
116
  console.log(
115
- 'Not covered locally: runtime-macos, computer-backend, desktop-tests computer lane (Windows-only), relay, graph, patch, mobile-scripts'
117
+ 'Not covered locally: runtime-macos, computer-backend, desktop-tests computer lane (Windows-only), relay, graph, patch, browser-import, mobile-scripts'
116
118
  );
117
119
  console.log(`Total: ${((Date.now() - started) / 1000).toFixed(1)}s`);
118
120
  process.exit(legs.every((l) => l.ok) ? 0 : 1);
@@ -4,9 +4,54 @@
4
4
  // (scripts/lib/run-node-tests.mjs). Without the runner's environment it does
5
5
  // nothing.
6
6
  import { ChildProcess } from 'node:child_process';
7
- import { appendFileSync } from 'node:fs';
7
+ import { appendFileSync, readFileSync } from 'node:fs';
8
+ import { dirname, join } from 'node:path';
9
+ import { pathToFileURL } from 'node:url';
8
10
  import { FAILURE_RECORDS_ENV, spawnLedgerPath } from './test-failure-records.mjs';
9
11
 
12
+ // --test-force-exit ends a test file's process once every test registered so
13
+ // far has finished. A test registered after a top-level await that is still
14
+ // pending by then (e.g. `await import()` between tests) is never run, and the
15
+ // file would exit 0 with those tests unreported. The entry module is already
16
+ // being evaluated by the time this runs, so importing it again only observes
17
+ // it: if the process exits before its top-level evaluation completed, fail the
18
+ // file instead. Stricter on purpose: an entry whose top-level evaluation never
19
+ // completes under force-exit (e.g. an intentionally never-resolving await after
20
+ // its last test) cannot be told apart from dropped tests, so it fails too.
21
+ // Only ESM entries are observed: importing a CommonJS entry would run it a
22
+ // second time and change `require.main === module`.
23
+ const isEsmEntry = (file) => {
24
+ if (/\.(mjs|mts)$/.test(file)) return true;
25
+ if (/\.(cjs|cts)$/.test(file)) return false;
26
+ for (let dir = dirname(file); ; dir = dirname(dir)) {
27
+ try {
28
+ return JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8')).type === 'module';
29
+ } catch {
30
+ // no readable package.json here: keep walking up
31
+ }
32
+ if (dirname(dir) === dir) return false;
33
+ }
34
+ };
35
+ if (
36
+ process.env.NODE_TEST_CONTEXT === 'child-v8' &&
37
+ process.execArgv.includes('--test-force-exit') &&
38
+ isEsmEntry(process.argv[1])
39
+ ) {
40
+ let settled = false;
41
+ const settle = () => {
42
+ settled = true;
43
+ };
44
+ import(pathToFileURL(process.argv[1]).href).then(settle, settle);
45
+ process.on('exit', (code) => {
46
+ if (settled) return;
47
+ console.error(
48
+ `${process.argv[1]}: the process was force-exited before the file's top-level evaluation completed (a top-level await was still pending); tests registered after it never ran, and an await that never settles is treated the same way`
49
+ );
50
+ // Never replace a failure code the file already set.
51
+ if (!code) process.exitCode = 1;
52
+ });
53
+ }
54
+
10
55
  const ledger = spawnLedgerPath(process.env[FAILURE_RECORDS_ENV]);
11
56
  if (ledger) {
12
57
  // spawn, exec, execFile and fork all start their process here.
@@ -15,8 +15,8 @@
15
15
  // node scripts/native-release-status.mjs --check exit 1 when a tool is unreleased
16
16
  // node scripts/native-release-status.mjs --warn-dev warnings for a dev build, exit 0
17
17
  //
18
- // native/mixdog-computer, native/mixdog-browser-import and native/gnome-extension
19
- // have no release/manifest: the desktop package builds them from source, keyed
18
+ // native/mixdog-computer, native/mixdog-browser-import, native/mixdog-secure-desktop
19
+ // and native/gnome-extension have no release/manifest: the desktop package builds them from source, keyed
20
20
  // on a hash of that source (desktop-package.yml), so they cannot go stale.
21
21
  import { spawn, spawnSync } from 'node:child_process';
22
22
  import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
@@ -289,7 +289,7 @@
289
289
  "id": "history-network-3",
290
290
  "label": "network interruption natural paraphrase 3",
291
291
  "args": {
292
- "query": "Discord 게이트웨이 재연결 때문에 실패 화면이 나온 사건 결론은?",
292
+ "query": "웹소켓 게이트웨이 재연결 때문에 실패 화면이 나온 사건 결론은?",
293
293
  "period": "2026-08-02 17:35~18:15",
294
294
  "projectScope": "mixdog",
295
295
  "limit": 10
@@ -15,6 +15,8 @@ export const WORKSPACES = [
15
15
  test: 'the release gate runtime job runs the default lane on every gated push',
16
16
  'test:slow': 'the release gate runtime-slow job runs it on every gated push',
17
17
  'smoke:all': 'aggregate; its components run individually',
18
+ 'test:release-critical':
19
+ 'aggregate of test:release-assets, smoke:patch and test:providers, each swept on its own',
18
20
  'smoke:loop': 'long-running local endurance harness',
19
21
  'smoke:loop:final': 'endurance-harness gate, needs hours of loop data',
20
22
  'smoke:loop:report': 'report reader, not a suite',
@@ -28,12 +30,19 @@ export const WORKSPACES = [
28
30
  exclusions: {
29
31
  test: 'the release gate desktop-tests fast leg runs it on every gated push',
30
32
  'test:slow': 'the release gate desktop-tests slow leg runs it on every gated push',
31
- 'test:all': 'aggregate of the fast, slow, and live lanes',
33
+ 'test:all': 'aggregate of the fast, slow, live, and electron lanes',
34
+ 'test:electron': 'needs a real Electron window and graphics device, which the Linux sweep runner lacks',
32
35
  'test:live': 'needs built artifacts; the packaging workflow owns it',
33
36
  'test:daemon:e2e': 'needs the built daemon; the release gate desktop job owns it',
34
37
  'test:spec-advisory': 'advisory by design (MIXDOG_TEST_ADVISORY)',
35
38
  'test:browser-host:integration': 'live desktop integration harness',
39
+ 'test:browser-login-persistence:integration':
40
+ 'live desktop integration harness; launches real Electron, which needs a display the Linux sweep runner lacks',
41
+ 'test:browser-login-popup:integration':
42
+ 'live desktop integration harness; launches real Electron, which needs a display the Linux sweep runner lacks',
36
43
  'test:browser-profile-import:integration': 'live desktop integration harness',
44
+ 'test:remote-webrtc-sender:integration':
45
+ 'live desktop integration harness; launches real Electron, which needs a display the Linux sweep runner lacks',
37
46
  'test:computer-host:integration': 'live desktop integration harness',
38
47
  'test:computer-host:scenarios': 'live desktop scenario harness',
39
48
  'test:computer-host:repeats': 'live desktop scenario harness',
package/scripts/test.mjs CHANGED
@@ -8,9 +8,9 @@
8
8
  // *.electron.test.mjs electron need a real Electron or window-capture
9
9
  // surface, so two runs of them cannot overlap
10
10
  //
11
- // The electron lane rides the default lane (a plain run still covers it) and
12
- // `--exclude-lane electron` is the explicit opt-out that lets a second run
13
- // proceed concurrently; `--lane electron` runs those files alone.
11
+ // The electron lane is not part of the default lane: `--lane electron` runs
12
+ // those files alone, and `--lane all` includes them unless `--exclude-lane
13
+ // electron` lets a second run proceed concurrently.
14
14
  //
15
15
  // Usage — see USAGE below (`node scripts/test.mjs --help`).
16
16
  //
@@ -35,11 +35,11 @@ export const USAGE = `Usage: node scripts/test.mjs [--lane ${LANES.join('|')}] [
35
35
  that differs from HEAD (edits and untracked files). A changed
36
36
  file no test references (a path joined at run time) is listed,
37
37
  so a path filter can add its tests.
38
- --lane fast (default) also covers the electron lane, so a plain run
39
- keeps testing it; --lane electron runs those files alone.
38
+ --lane fast is the default; electron needs a real desktop and only
39
+ runs with --lane electron or --lane all.
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
- concurrent run uses --exclude-lane electron.
42
+ concurrent --lane all run uses --exclude-lane electron.
43
43
  --rerun-failed <n> re-run the failed files up to n times. Default: 1 for a
44
44
  local run, 0 (off) when CI is set; MIXDOG_TEST_RERUN_FAILED
45
45
  overrides the default. A test that passes on a re-run is
@@ -56,6 +56,11 @@ export const USAGE = `Usage: node scripts/test.mjs [--lane ${LANES.join('|')}] [
56
56
  Selection, lanes, reporting and exit codes are untouched.
57
57
  --list print the selected files with their lane, run nothing.
58
58
 
59
+ Test-file rule: files run with --test-force-exit, so a file's top-level
60
+ evaluation (including any top-level await) must finish before its registered
61
+ tests do. A file that is force-exited first fails — tests registered after the
62
+ await would never run, and an await that never settles cannot be told apart.
63
+
59
64
  Every run ends with a "[failure-summary]" block, printed after all other
60
65
  output, naming each failed and flaky test by file and test name; every line of
61
66
  it carries that tag, so it survives line filtering.`;
@@ -149,12 +154,8 @@ export async function discoverTestFiles(cwd = process.cwd()) {
149
154
  return [...files].sort();
150
155
  }
151
156
 
152
- // The electron lane rides the default lane so a plain `npm test` keeps
153
- // covering an Electron/window-capture surface that no other lane owns;
154
- // `--exclude-lane electron` is the explicit way to drop it.
155
157
  export function laneSelected(lane, fileLane) {
156
- if (lane === 'all' || lane === fileLane) return true;
157
- return lane === 'fast' && fileLane === 'electron';
158
+ return lane === 'all' || lane === fileLane;
158
159
  }
159
160
 
160
161
  export function selectTestFiles(files, { lane, filters, excludeLanes = [] }) {
@@ -1,16 +1,12 @@
1
1
  ---
2
2
  name: Reviewer
3
- description: Use one per worker scope, after that worker reports, reviewing only its diff; edits the Lead made itself need only Lead's review.
3
+ description: One fresh Reviewer per non-trivial feature after its last worker reports, any author; not for docs/copy/style or one-line changes.
4
4
  ---
5
5
 
6
- Independent per-scope review agent.
6
+ Independent feature reviewer.
7
7
 
8
- You review one scope's diff once, after its implementer reports; the Lead
9
- owns cross-scope checks.
10
-
11
- Inspect the diff, affected boundaries, existing tests, and stated acceptance
12
- criteria with independent judgment. Reuse still-valid passing results; rerun only failed or invalidated checks. Actively seek regressions, unsupported assumptions, security
13
- risks, and counterexamples.
14
-
15
- Do not modify files or reimplement the change. Result lists actionable
16
- findings first, severity-ordered, one line each; if clean, say so in one line.
8
+ Probe what the worker's checks missed: edge cases, error paths, contracts;
9
+ do not rerun valid passing checks. Report only defects this change provably
10
+ introduces, severity-ordered with path/symbol evidence, ending PASS or FAIL
11
+ with one probe you ran. After a fix, recheck only the fix. Do not modify
12
+ files. Lead owns cross-feature checks.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "reviewer",
3
3
  "name": "Reviewer",
4
- "description": "Use one per worker scope, after that worker reports, reviewing only its diff; edits the Lead made itself need only Lead's review.",
4
+ "description": "One fresh Reviewer per non-trivial feature after its last worker reports, any author; not for docs/copy/style or one-line changes.",
5
5
  "entry": "AGENT.md"
6
6
  }
@@ -33,6 +33,7 @@
33
33
  "1a8115cec6ae4414f8637b1765948cdd",
34
34
  "25b44b46269490e26ca31c1852925171",
35
35
  "43d2ad531c7b821fa1f24b4f83c12e6f",
36
+ "60ef154c1d6c9fb936fd7a3167f41203",
36
37
  "a60ea68f9287d55489e92e5450432f62",
37
38
  "a61cb4557def4e7ed647d4bdacbb72e4",
38
39
  "de860d4111b61985f3b59eb1011fa421"
@@ -181,15 +182,23 @@
181
182
  "25a6744e7591ea5597abbda008d123fe",
182
183
  "43eeb0b9c5792f08f2223c76846926cb",
183
184
  "4ab5316454013712cedb25d9b75f4e43",
185
+ "4f042de090d853ed38aaa82b88d301ac",
184
186
  "646365a3f7041a3da3d7d7d896a0c3b6",
185
187
  "662f730d603b1e583dc777a1984b9134",
188
+ "814b0820a05119a049cf4262dc35301b",
189
+ "85876f6f5aa4f9253d0f5f3f1836dd1a",
190
+ "8691fb728207188e5277611ab8ee739f",
186
191
  "8766650e61891e910b44bb2591c88f48",
187
192
  "87c15aa8b84c6924598926295b3f7829",
188
193
  "949c457b38fa2c9b7d9e684bf67e1470",
189
194
  "a2538714c422b39a32d0eb9f27893b32",
190
195
  "af1d1b975fc4b6a50f3a1775d890582f",
196
+ "afbbddfab9fdddb5437c045ec23dcad4",
191
197
  "d46676d3d80327445c36e70bb291ae52",
192
198
  "dc812114c135d1d2716b219e1009e670",
199
+ "eb1bf3ae8e0bca2647ac2a10ab8ad40c",
200
+ "ecbaff5fb04bdf95cc2eeb27c14bda8c",
201
+ "f70b87761ac6a7c6f0ef39b65b1592b3",
193
202
  "ff5607144eaf51be56217319431cb90e"
194
203
  ],
195
204
  "code-tidy": [
@@ -201,6 +210,7 @@
201
210
  "65fc2984f2a7ead790d527f8e9940aee",
202
211
  "74a70988e5ee5704f85fd1250b7d0bb6",
203
212
  "7c3ce81e504b46e01a9256576f3b4dca",
213
+ "8a5a68ec13a7414b35e7f3b0089e2208",
204
214
  "9728f28dc5b23eb1bb1924213d3ffddd",
205
215
  "9a8789b3b4f5f6b3ba02f407cdfb92f7",
206
216
  "b50e9c0ba5e8228583eab4f0e0573838",
@@ -230,7 +240,9 @@
230
240
  "cb3b95673998c6f44ae68533a49fd891",
231
241
  "d086c0ddd6ab4cdfd6a93221b93596b3",
232
242
  "e10367dd4291a0b3d8ee8e8dd60eae36",
233
- "e1f2526aaf123fb77072aa8975f890de"
243
+ "e1f2526aaf123fb77072aa8975f890de",
244
+ "e67f30ec5bbdd36d7feaabd35b7504b3",
245
+ "f0798c546c172a742e3384d82322ede4"
234
246
  ],
235
247
  "docx": [
236
248
  "25180dffff54178bcc336250f58ba7db",
@@ -355,27 +367,37 @@
355
367
  "242f11864abdef90fa0cc9cb4599a579",
356
368
  "29a347c4d3a2f773fa92c627260301ba",
357
369
  "336ced846a9e4f774cbb109417856c3b",
370
+ "3716b2d2c2d973ae022694ed5cb756ad",
371
+ "3dc990c29cdce1aca4b112d735ad5917",
358
372
  "3f72247651ad9d777b6754bfd46732aa",
359
373
  "50bdf35d06913236855080fdea6b50dc",
374
+ "5a77e4fafded94d6bf6fa949796570fe",
360
375
  "5b4586a44104b26ae7dd45da101079bf",
361
376
  "6101786127a1e68778eafcd2bf2c9ce0",
362
377
  "64a85678fbe08d4653ab78c55ee22c7c",
363
378
  "6711dbc9d84023b8eabfa928b8d33d18",
364
379
  "6f9e9338f560fa9acd839a67b5e2d1cc",
365
380
  "70c54f802c77b630863b9e17a16d8224",
381
+ "7254f153fd7e492e205834bc2f2781ab",
382
+ "7c55bebd9e28dc2e03794861dde3f775",
366
383
  "81e979463e0066e7a45cf511a31c5d68",
367
384
  "8476c811b2f02da3a434bcb23a1c3d12",
368
385
  "8af2b614e2a07b58dad6c0f1318d22e2",
386
+ "99d76213e70c6900d6af48ffa4045886",
369
387
  "9f90d3872b1ecd312977ce661b770b31",
370
388
  "ade615dd0f6ae6ed1601023e5b9cb692",
389
+ "b21681ecfeb523c0d7dd89a299ec05a9",
371
390
  "b4f9c79dcb08151e6275b5ee35c2bca4",
391
+ "bca9732a1cecd2ce3a26e905b57d3b25",
372
392
  "c6db973f51166fc42814808ae0001797",
393
+ "c82197acd9111f4a6dcda24baccffb86",
373
394
  "c8826387a65631b63e8023f55ef807a3",
374
395
  "cb6f66d14ba75b11e7470eb3fd5ec94c",
375
396
  "de9727a48e52673258bf5f9670564d56",
376
397
  "e04e6abe9a54e7d07b37f8fc32b5ad30",
377
398
  "e38d606df69865a9cf1cc48386535e8b",
378
399
  "e5ac8ea16905815e36e88d883195a617",
400
+ "e7957096bcf6cb5c5833f4e98e1f7110",
379
401
  "e848b92962dee0d4c3d7e3721d2e3294",
380
402
  "e9b89f9193bd9d9c80ba6cf4419e58ff",
381
403
  "feabe973080344c4d52787a96043ab68",
@@ -383,6 +405,7 @@
383
405
  ],
384
406
  "setup-guide": [
385
407
  "633e15b84dbe22f2b578b67cc35853d4",
408
+ "72e474711ecd18cfcae6c8365e08286e",
386
409
  "920d5b29ccfe6c88f623cf0892b29285",
387
410
  "ec88a82ab5e511c0afb1738162150648"
388
411
  ],
@@ -408,6 +431,7 @@
408
431
  "8320fedd9dd745a332621c325a8bf355",
409
432
  "9c9fba19647b67d75a600137e38c02b8",
410
433
  "aa3531bfc4fd6ec3820493d0c190cc75",
434
+ "f24ff77670e5aa43ce901dec1e0055ac",
411
435
  "f65924f0691284ad31000469a9855b62"
412
436
  ],
413
437
  "xlsx": [