@gajae-code/coding-agent 0.17.1 → 0.17.4

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 (375) hide show
  1. package/CHANGELOG.md +266 -0
  2. package/dist/types/async/job-manager.d.ts +7 -6
  3. package/dist/types/cli/daemon-cli.d.ts +3 -1
  4. package/dist/types/cli/github-release.d.ts +17 -0
  5. package/dist/types/cli/public-command-entry.d.ts +56 -0
  6. package/dist/types/cli/public-command-errors.d.ts +126 -0
  7. package/dist/types/cli/public-command-evidence.d.ts +99 -0
  8. package/dist/types/cli/public-command-help.d.ts +65 -0
  9. package/dist/types/cli/public-command-registry.d.ts +69 -0
  10. package/dist/types/cli/session-picker.d.ts +1 -1
  11. package/dist/types/cli/setup-cli.d.ts +1 -0
  12. package/dist/types/cli/skills-cli.d.ts +5 -0
  13. package/dist/types/cli.d.ts +3 -0
  14. package/dist/types/commands/daemon.d.ts +4 -50
  15. package/dist/types/commands/sdk.d.ts +20 -37
  16. package/dist/types/commands/setup.d.ts +3 -0
  17. package/dist/types/commands/skills.d.ts +9 -0
  18. package/dist/types/config/autorouting-tier-map.d.ts +24 -0
  19. package/dist/types/config/file-lock.d.ts +10 -1
  20. package/dist/types/config/model-profile-activation.d.ts +63 -4
  21. package/dist/types/config/model-registry.d.ts +20 -2
  22. package/dist/types/config/settings-schema.d.ts +11 -0
  23. package/dist/types/coordinator-mcp/question-state.d.ts +6 -1
  24. package/dist/types/coordinator-mcp/server.d.ts +3 -0
  25. package/dist/types/daemon/operator-contract.d.ts +5 -1
  26. package/dist/types/eval/js/worker-protocol.d.ts +2 -0
  27. package/dist/types/extensibility/extensions/types.d.ts +12 -0
  28. package/dist/types/extensibility/gjc-plugins/registry.d.ts +4 -0
  29. package/dist/types/extensibility/runtime-skill-discovery.d.ts +18 -0
  30. package/dist/types/extensibility/shared-events.d.ts +3 -1
  31. package/dist/types/gjc-runtime/session-state-lock.d.ts +61 -0
  32. package/dist/types/internal-urls/embedded-protocol.d.ts +9 -0
  33. package/dist/types/internal-urls/index.d.ts +1 -0
  34. package/dist/types/internal-urls/parse.d.ts +9 -1
  35. package/dist/types/main.d.ts +22 -0
  36. package/dist/types/modes/acp/acp-agent.d.ts +94 -1
  37. package/dist/types/modes/acp/startup-provenance.d.ts +16 -0
  38. package/dist/types/modes/components/custom-provider-wizard.d.ts +19 -1
  39. package/dist/types/modes/components/session-selector.d.ts +5 -2
  40. package/dist/types/modes/components/thinking-selector.d.ts +2 -1
  41. package/dist/types/modes/components/user-message-selector.d.ts +5 -2
  42. package/dist/types/modes/controllers/command-controller.d.ts +1 -1
  43. package/dist/types/modes/controllers/selector-controller.d.ts +1 -1
  44. package/dist/types/modes/interactive-mode.d.ts +1 -1
  45. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +11 -1
  46. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +14 -1
  47. package/dist/types/modes/types.d.ts +2 -2
  48. package/dist/types/runtime/process-lifecycle.d.ts +2 -0
  49. package/dist/types/runtime-mcp/manager.d.ts +56 -0
  50. package/dist/types/runtime-mcp/pool.d.ts +17 -0
  51. package/dist/types/runtime-mcp/redaction.d.ts +20 -0
  52. package/dist/types/runtime-mcp/startup-policy.d.ts +6 -0
  53. package/dist/types/runtime-mcp/tool-bridge.d.ts +9 -0
  54. package/dist/types/runtime-mcp/transports/http.d.ts +11 -0
  55. package/dist/types/sdk/acp/adapter.d.ts +27 -0
  56. package/dist/types/sdk/acp/final-text.d.ts +8 -0
  57. package/dist/types/sdk/broker/broker.d.ts +13 -2
  58. package/dist/types/sdk/broker/ensure.d.ts +46 -1
  59. package/dist/types/sdk/broker/identity.d.ts +3 -1
  60. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +23 -3
  61. package/dist/types/sdk/broker/lifecycle.d.ts +15 -8
  62. package/dist/types/sdk/broker/runtime.d.ts +1 -1
  63. package/dist/types/sdk/broker/session-index.d.ts +22 -3
  64. package/dist/types/sdk/broker/spawn-authority.d.ts +4 -0
  65. package/dist/types/sdk/broker/stderr-drainer.d.ts +13 -0
  66. package/dist/types/sdk/bus/index.d.ts +19 -0
  67. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +3 -1
  68. package/dist/types/sdk/bus/telegram-daemon.d.ts +5 -0
  69. package/dist/types/sdk/cli/master-cli.d.ts +6 -10
  70. package/dist/types/sdk/cli/rows.d.ts +19 -1
  71. package/dist/types/sdk/cli/session-cli.d.ts +22 -5
  72. package/dist/types/sdk/client/client.d.ts +2 -0
  73. package/dist/types/sdk/guides/cli.d.ts +3 -4
  74. package/dist/types/sdk/guides/verify.d.ts +2 -0
  75. package/dist/types/sdk/host/host.d.ts +9 -0
  76. package/dist/types/sdk/host/session-runtime.d.ts +31 -0
  77. package/dist/types/sdk/host/types.d.ts +10 -0
  78. package/dist/types/sdk/index.d.ts +1 -0
  79. package/dist/types/sdk/prompt-deadline-flush.d.ts +83 -0
  80. package/dist/types/sdk/prompt-deadline-manager.d.ts +38 -1
  81. package/dist/types/sdk/prompt-failure.d.ts +30 -1
  82. package/dist/types/sdk/prompt-status.d.ts +8 -0
  83. package/dist/types/sdk/prompt-tool-boundary.d.ts +73 -0
  84. package/dist/types/sdk/router/replay-retention-gap-cache.d.ts +13 -0
  85. package/dist/types/sdk/router/session-router.d.ts +2 -0
  86. package/dist/types/sdk/startup-capability.d.ts +2 -0
  87. package/dist/types/sdk/transport/relay.d.ts +1 -0
  88. package/dist/types/sdk/transport/serve-cli.d.ts +73 -2
  89. package/dist/types/sdk/transport/stdio.d.ts +5 -1
  90. package/dist/types/session/agent-session.d.ts +168 -21
  91. package/dist/types/session/fallback-chain-controller.d.ts +6 -6
  92. package/dist/types/session/fold-coordinator.d.ts +17 -3
  93. package/dist/types/session/internal/managed-session-storage.d.ts +7 -1
  94. package/dist/types/session/session-manager.d.ts +64 -1
  95. package/dist/types/session/session-work-lease.d.ts +14 -0
  96. package/dist/types/setup/model-onboarding-guidance.d.ts +1 -1
  97. package/dist/types/setup/provider-onboarding.d.ts +81 -1
  98. package/dist/types/thinking.d.ts +3 -1
  99. package/dist/types/tools/bash.d.ts +37 -11
  100. package/dist/types/tools/job.d.ts +1 -1
  101. package/dist/types/tools/steer-fold.d.ts +31 -0
  102. package/dist/types/utils/git.d.ts +28 -2
  103. package/dist/types/utils/mupdf-embedded.d.ts +2 -0
  104. package/dist/types/utils/mupdf-wasm-embedded.d.ts +2 -0
  105. package/dist/types/utils/mupdf.d.ts +4 -0
  106. package/dist/types/utils/session-title-generation.d.ts +6 -0
  107. package/dist/types/utils/title-generator.d.ts +11 -2
  108. package/dist/types/web/scrapers/types.d.ts +3 -0
  109. package/package.json +18 -10
  110. package/scripts/build-binary.ts +9 -3
  111. package/scripts/compile-args.ts +0 -9
  112. package/scripts/embed-mupdf.ts +52 -0
  113. package/scripts/generate-sdk-operation-inventory.ts +31 -1
  114. package/scripts/vendor-markit.ts +196 -0
  115. package/src/async/job-manager.ts +60 -9
  116. package/src/cli/daemon-cli.ts +53 -18
  117. package/src/cli/github-release.ts +87 -5
  118. package/src/cli/mcp-cli.ts +38 -4
  119. package/src/cli/public-command-entry.ts +450 -0
  120. package/src/cli/public-command-errors.ts +581 -0
  121. package/src/cli/public-command-evidence.ts +717 -0
  122. package/src/cli/public-command-help.ts +360 -0
  123. package/src/cli/public-command-registry.ts +535 -0
  124. package/src/cli/session-picker.ts +2 -1
  125. package/src/cli/setup-cli.ts +9 -1
  126. package/src/cli/skills-cli.ts +46 -2
  127. package/src/cli.ts +61 -1
  128. package/src/commands/daemon.ts +65 -69
  129. package/src/commands/sdk.ts +232 -100
  130. package/src/commands/setup.ts +2 -0
  131. package/src/commands/skills.ts +11 -0
  132. package/src/config/autorouting-tier-map.ts +16 -0
  133. package/src/config/file-lock.ts +199 -68
  134. package/src/config/model-profile-activation.ts +406 -53
  135. package/src/config/model-registry.ts +204 -25
  136. package/src/config/settings-schema.ts +26 -2
  137. package/src/coordinator-mcp/policy.ts +10 -5
  138. package/src/coordinator-mcp/question-gate-codec.ts +17 -0
  139. package/src/coordinator-mcp/question-state.ts +175 -8
  140. package/src/coordinator-mcp/server.ts +528 -87
  141. package/src/coordinator-mcp/session-reaper.ts +6 -4
  142. package/src/crash/record-loader.ts +6 -2
  143. package/src/daemon/operator-contract.ts +26 -12
  144. package/src/debug/report-bundle.ts +114 -24
  145. package/src/defaults/gjc/skills/ultragoal/SKILL.md +1 -1
  146. package/src/eval/js/context-manager.ts +8 -8
  147. package/src/eval/js/worker-core.ts +9 -4
  148. package/src/eval/js/worker-protocol.ts +2 -0
  149. package/src/extensibility/extensions/runner.ts +52 -4
  150. package/src/extensibility/extensions/types.ts +10 -0
  151. package/src/extensibility/gjc-plugins/registry.ts +196 -37
  152. package/src/extensibility/runtime-skill-discovery.ts +61 -3
  153. package/src/extensibility/shared-events.ts +3 -1
  154. package/src/gjc-runtime/managed-owner-admission.ts +67 -50
  155. package/src/gjc-runtime/session-state-lock.ts +165 -24
  156. package/src/gjc-runtime/ultragoal-succession.ts +31 -3
  157. package/src/internal-urls/docs-index.generated.ts +21 -19
  158. package/src/internal-urls/embedded-protocol.ts +83 -0
  159. package/src/internal-urls/index.ts +1 -0
  160. package/src/internal-urls/parse.ts +21 -1
  161. package/src/internal-urls/router.ts +4 -2
  162. package/src/main.ts +123 -55
  163. package/src/modes/acp/acp-agent.ts +593 -47
  164. package/src/modes/acp/acp-event-mapper.ts +9 -0
  165. package/src/modes/acp/startup-provenance.ts +59 -0
  166. package/src/modes/components/custom-provider-wizard.ts +308 -7
  167. package/src/modes/components/model-selector.ts +31 -15
  168. package/src/modes/components/oauth-selector.ts +9 -0
  169. package/src/modes/components/session-selector.ts +47 -4
  170. package/src/modes/components/status-line/segments.ts +6 -1
  171. package/src/modes/components/thinking-selector.ts +7 -3
  172. package/src/modes/components/user-message-selector.ts +57 -15
  173. package/src/modes/controllers/command-controller.ts +58 -32
  174. package/src/modes/controllers/extension-ui-controller.ts +33 -7
  175. package/src/modes/controllers/input-controller.ts +4 -0
  176. package/src/modes/controllers/selector-controller.ts +177 -18
  177. package/src/modes/interactive-mode.ts +21 -7
  178. package/src/modes/runtime-init.ts +1 -0
  179. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +124 -7
  180. package/src/modes/shared/agent-wire/workflow-gate-types.ts +16 -2
  181. package/src/modes/types.ts +2 -2
  182. package/src/prompts/agent-fragments/browser-aside.md +1 -0
  183. package/src/prompts/system/title-system.md +1 -1
  184. package/src/prompts/tools/bash.md +1 -1
  185. package/src/prompts/tools/job.md +1 -1
  186. package/src/prompts/tools/read.md +2 -0
  187. package/src/runtime/network-prewarm-service.test.ts +36 -1
  188. package/src/runtime/network-prewarm-service.ts +28 -3
  189. package/src/runtime/process-lifecycle.ts +22 -11
  190. package/src/runtime-mcp/config.ts +16 -1
  191. package/src/runtime-mcp/manager.ts +689 -55
  192. package/src/runtime-mcp/pool.test.ts +31 -0
  193. package/src/runtime-mcp/pool.ts +304 -28
  194. package/src/runtime-mcp/redaction.ts +42 -0
  195. package/src/runtime-mcp/startup-policy.ts +7 -0
  196. package/src/runtime-mcp/tool-bridge.ts +71 -0
  197. package/src/runtime-mcp/transports/http.ts +108 -25
  198. package/src/sdk/acp/adapter.ts +90 -9
  199. package/src/sdk/acp/final-text.ts +19 -2
  200. package/src/sdk/broker/broker.ts +378 -52
  201. package/src/sdk/broker/ensure.ts +97 -19
  202. package/src/sdk/broker/identity.ts +9 -1
  203. package/src/sdk/broker/lifecycle-ledger.ts +95 -31
  204. package/src/sdk/broker/lifecycle.ts +690 -141
  205. package/src/sdk/broker/runtime.ts +1 -1
  206. package/src/sdk/broker/session-index.ts +97 -4
  207. package/src/sdk/broker/spawn-authority.ts +35 -7
  208. package/src/sdk/broker/stderr-drainer.ts +59 -0
  209. package/src/sdk/bus/chat-daemon-control.ts +2 -2
  210. package/src/sdk/bus/chat-daemon-runtime.ts +1 -0
  211. package/src/sdk/bus/index.ts +721 -84
  212. package/src/sdk/bus/telegram-daemon-cli.ts +31 -2
  213. package/src/sdk/bus/telegram-daemon-contract.ts +3 -1
  214. package/src/sdk/bus/telegram-daemon.ts +10 -3
  215. package/src/sdk/cli/master-cli.ts +47 -36
  216. package/src/sdk/cli/rows.ts +30 -7
  217. package/src/sdk/cli/session-cli.ts +687 -184
  218. package/src/sdk/client/client.ts +18 -0
  219. package/src/sdk/guides/catalog.ts +2 -2
  220. package/src/sdk/guides/cli.ts +20 -62
  221. package/src/sdk/guides/verify.ts +14 -0
  222. package/src/sdk/host/host.ts +49 -5
  223. package/src/sdk/host/session-runtime.test.ts +636 -9
  224. package/src/sdk/host/session-runtime.ts +499 -118
  225. package/src/sdk/host/types.ts +12 -1
  226. package/src/sdk/host/websocket-transport.lifecycle.test.ts +84 -0
  227. package/src/sdk/host/websocket-transport.ts +40 -6
  228. package/src/sdk/index.ts +11 -0
  229. package/src/sdk/prompt-deadline-flush.ts +334 -0
  230. package/src/sdk/prompt-deadline-manager.ts +136 -4
  231. package/src/sdk/prompt-failure.ts +43 -1
  232. package/src/sdk/prompt-status.ts +8 -0
  233. package/src/sdk/prompt-tool-boundary.ts +121 -0
  234. package/src/sdk/protocol/operation-inventory.generated.json +106 -0
  235. package/src/sdk/router/replay-retention-gap-cache.ts +27 -0
  236. package/src/sdk/router/session-router.ts +31 -4
  237. package/src/sdk/session.ts +194 -16
  238. package/src/sdk/startup-capability.ts +1 -1
  239. package/src/sdk/transport/relay.ts +71 -6
  240. package/src/sdk/transport/serve-cli.ts +494 -49
  241. package/src/sdk/transport/socket.ts +12 -11
  242. package/src/sdk/transport/stdio.ts +7 -3
  243. package/src/session/agent-session.ts +2437 -400
  244. package/src/session/fallback-chain-controller.ts +6 -7
  245. package/src/session/fold-coordinator.ts +24 -5
  246. package/src/session/internal/managed-session-scope.ts +58 -18
  247. package/src/session/internal/managed-session-storage.ts +304 -11
  248. package/src/session/session-manager.ts +382 -44
  249. package/src/session/session-work-lease.ts +34 -0
  250. package/src/session-import/codex.ts +12 -3
  251. package/src/setup/model-onboarding-guidance.ts +1 -1
  252. package/src/setup/provider-onboarding.ts +397 -24
  253. package/src/slash-commands/builtin-registry.ts +258 -14
  254. package/src/task/index.ts +14 -2
  255. package/src/thinking.ts +21 -2
  256. package/src/tools/bash.ts +98 -78
  257. package/src/tools/fetch.ts +119 -20
  258. package/src/tools/job.ts +151 -25
  259. package/src/tools/output-meta.ts +15 -2
  260. package/src/tools/path-utils.ts +27 -3
  261. package/src/tools/read.ts +3 -3
  262. package/src/tools/steer-fold.ts +107 -0
  263. package/src/tools/tool-catalog.generated.ts +29 -2
  264. package/src/tools/tool-errors.ts +4 -0
  265. package/src/utils/git.ts +53 -3
  266. package/src/utils/markit.ts +55 -41
  267. package/src/utils/mupdf-assets.d.ts +4 -0
  268. package/src/utils/mupdf-embedded.ts +4 -0
  269. package/src/utils/mupdf-wasm-embedded.ts +3 -0
  270. package/src/utils/mupdf-wasm.ts +24 -2
  271. package/src/utils/mupdf.ts +129 -0
  272. package/src/utils/session-title-generation.ts +29 -0
  273. package/src/utils/title-generator.ts +46 -2
  274. package/src/web/scrapers/types.ts +24 -3
  275. package/vendor/markit-ai/LICENSE +21 -0
  276. package/vendor/markit-ai/MANIFEST.json +412 -0
  277. package/vendor/markit-ai/dist/commands/config.d.ts +4 -0
  278. package/vendor/markit-ai/dist/commands/config.js +139 -0
  279. package/vendor/markit-ai/dist/commands/convert.d.ts +6 -0
  280. package/vendor/markit-ai/dist/commands/convert.js +113 -0
  281. package/vendor/markit-ai/dist/commands/formats.d.ts +2 -0
  282. package/vendor/markit-ai/dist/commands/formats.js +92 -0
  283. package/vendor/markit-ai/dist/commands/init.d.ts +2 -0
  284. package/vendor/markit-ai/dist/commands/init.js +29 -0
  285. package/vendor/markit-ai/dist/commands/onboard.d.ts +2 -0
  286. package/vendor/markit-ai/dist/commands/onboard.js +61 -0
  287. package/vendor/markit-ai/dist/commands/plugin.d.ts +4 -0
  288. package/vendor/markit-ai/dist/commands/plugin.js +58 -0
  289. package/vendor/markit-ai/dist/config.d.ts +26 -0
  290. package/vendor/markit-ai/dist/config.js +42 -0
  291. package/vendor/markit-ai/dist/converters/audio.d.ts +7 -0
  292. package/vendor/markit-ai/dist/converters/audio.js +104 -0
  293. package/vendor/markit-ai/dist/converters/csv.d.ts +7 -0
  294. package/vendor/markit-ai/dist/converters/csv.js +83 -0
  295. package/vendor/markit-ai/dist/converters/docx.d.ts +6 -0
  296. package/vendor/markit-ai/dist/converters/docx.js +57 -0
  297. package/vendor/markit-ai/dist/converters/epub.d.ts +8 -0
  298. package/vendor/markit-ai/dist/converters/epub.js +128 -0
  299. package/vendor/markit-ai/dist/converters/github.d.ts +18 -0
  300. package/vendor/markit-ai/dist/converters/github.js +148 -0
  301. package/vendor/markit-ai/dist/converters/html.d.ts +6 -0
  302. package/vendor/markit-ai/dist/converters/html.js +30 -0
  303. package/vendor/markit-ai/dist/converters/image.d.ts +6 -0
  304. package/vendor/markit-ai/dist/converters/image.js +124 -0
  305. package/vendor/markit-ai/dist/converters/ipynb.d.ts +6 -0
  306. package/vendor/markit-ai/dist/converters/ipynb.js +75 -0
  307. package/vendor/markit-ai/dist/converters/iwork.d.ts +20 -0
  308. package/vendor/markit-ai/dist/converters/iwork.js +391 -0
  309. package/vendor/markit-ai/dist/converters/json.d.ts +6 -0
  310. package/vendor/markit-ai/dist/converters/json.js +21 -0
  311. package/vendor/markit-ai/dist/converters/pdf/columns.d.ts +35 -0
  312. package/vendor/markit-ai/dist/converters/pdf/columns.js +93 -0
  313. package/vendor/markit-ai/dist/converters/pdf/extract.d.ts +19 -0
  314. package/vendor/markit-ai/dist/converters/pdf/extract.js +514 -0
  315. package/vendor/markit-ai/dist/converters/pdf/grid.d.ts +25 -0
  316. package/vendor/markit-ai/dist/converters/pdf/grid.js +795 -0
  317. package/vendor/markit-ai/dist/converters/pdf/headers.d.ts +24 -0
  318. package/vendor/markit-ai/dist/converters/pdf/headers.js +108 -0
  319. package/vendor/markit-ai/dist/converters/pdf/index.d.ts +19 -0
  320. package/vendor/markit-ai/dist/converters/pdf/index.js +136 -0
  321. package/vendor/markit-ai/dist/converters/pdf/mupdf-loader.js +9 -0
  322. package/vendor/markit-ai/dist/converters/pdf/render.d.ts +24 -0
  323. package/vendor/markit-ai/dist/converters/pdf/render.js +513 -0
  324. package/vendor/markit-ai/dist/converters/pdf/types.d.ts +75 -0
  325. package/vendor/markit-ai/dist/converters/pdf/types.js +1 -0
  326. package/vendor/markit-ai/dist/converters/plain-text.d.ts +6 -0
  327. package/vendor/markit-ai/dist/converters/plain-text.js +87 -0
  328. package/vendor/markit-ai/dist/converters/pptx.d.ts +8 -0
  329. package/vendor/markit-ai/dist/converters/pptx.js +289 -0
  330. package/vendor/markit-ai/dist/converters/rss.d.ts +11 -0
  331. package/vendor/markit-ai/dist/converters/rss.js +138 -0
  332. package/vendor/markit-ai/dist/converters/wikipedia.d.ts +6 -0
  333. package/vendor/markit-ai/dist/converters/wikipedia.js +33 -0
  334. package/vendor/markit-ai/dist/converters/xlsx.d.ts +8 -0
  335. package/vendor/markit-ai/dist/converters/xlsx.js +147 -0
  336. package/vendor/markit-ai/dist/converters/xml.d.ts +6 -0
  337. package/vendor/markit-ai/dist/converters/xml.js +18 -0
  338. package/vendor/markit-ai/dist/converters/yaml.d.ts +6 -0
  339. package/vendor/markit-ai/dist/converters/yaml.js +17 -0
  340. package/vendor/markit-ai/dist/converters/zip.d.ts +8 -0
  341. package/vendor/markit-ai/dist/converters/zip.js +57 -0
  342. package/vendor/markit-ai/dist/index.d.ts +30 -0
  343. package/vendor/markit-ai/dist/index.js +26 -0
  344. package/vendor/markit-ai/dist/main.d.ts +2 -0
  345. package/vendor/markit-ai/dist/main.js +191 -0
  346. package/vendor/markit-ai/dist/markit.d.ts +45 -0
  347. package/vendor/markit-ai/dist/markit.js +267 -0
  348. package/vendor/markit-ai/dist/plugins/api.d.ts +7 -0
  349. package/vendor/markit-ai/dist/plugins/api.js +42 -0
  350. package/vendor/markit-ai/dist/plugins/index.d.ts +4 -0
  351. package/vendor/markit-ai/dist/plugins/index.js +3 -0
  352. package/vendor/markit-ai/dist/plugins/installer.d.ts +25 -0
  353. package/vendor/markit-ai/dist/plugins/installer.js +176 -0
  354. package/vendor/markit-ai/dist/plugins/loader.d.ts +6 -0
  355. package/vendor/markit-ai/dist/plugins/loader.js +61 -0
  356. package/vendor/markit-ai/dist/plugins/types.d.ts +25 -0
  357. package/vendor/markit-ai/dist/plugins/types.js +1 -0
  358. package/vendor/markit-ai/dist/providers/anthropic.d.ts +2 -0
  359. package/vendor/markit-ai/dist/providers/anthropic.js +47 -0
  360. package/vendor/markit-ai/dist/providers/index.d.ts +21 -0
  361. package/vendor/markit-ai/dist/providers/index.js +56 -0
  362. package/vendor/markit-ai/dist/providers/openai.d.ts +2 -0
  363. package/vendor/markit-ai/dist/providers/openai.js +76 -0
  364. package/vendor/markit-ai/dist/providers/types.d.ts +26 -0
  365. package/vendor/markit-ai/dist/providers/types.js +1 -0
  366. package/vendor/markit-ai/dist/types.d.ts +36 -0
  367. package/vendor/markit-ai/dist/types.js +1 -0
  368. package/vendor/markit-ai/dist/utils/exit-codes.d.ts +4 -0
  369. package/vendor/markit-ai/dist/utils/exit-codes.js +4 -0
  370. package/vendor/markit-ai/dist/utils/output.d.ts +22 -0
  371. package/vendor/markit-ai/dist/utils/output.js +31 -0
  372. package/vendor/markit-ai/dist/utils/turndown.d.ts +8 -0
  373. package/vendor/markit-ai/dist/utils/turndown.js +70 -0
  374. package/vendor/markit-ai/package.json +74 -0
  375. package/vendor/markit-ai.patch +49 -0
@@ -1,6 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import * as fs from "node:fs/promises";
3
3
  import * as path from "node:path";
4
+ import { logger } from "@gajae-code/utils";
4
5
  import { withFileLock } from "../config/file-lock";
5
6
  import { ensureCoordinatorDirectory, syncCoordinatorDirectory, writeCoordinatorAtomic } from "./durability";
6
7
  import type { PrivateAskGateCodecV1, PublicReason } from "./question-gate-codec";
@@ -567,7 +568,7 @@ async function readTransactionJson<T>(file: string): Promise<T | null> {
567
568
  source = await fs.readFile(file, "utf8");
568
569
  } catch (error) {
569
570
  if ((error as NodeJS.ErrnoException).code === "ENOENT") return null;
570
- throw new Error("state_corrupt");
571
+ throw error;
571
572
  }
572
573
  try {
573
574
  const value: unknown = JSON.parse(source);
@@ -605,6 +606,71 @@ function migrateLegacyTransactionV1(transaction: CoordinatorSessionTransactionV1
605
606
  }
606
607
  const authorities = canonical.gate_authorities;
607
608
  const endpointIncarnation = typeof broker?.endpoint_incarnation === "string" ? broker.endpoint_incarnation : null;
609
+ // Report ids predate COORDINATOR_REPORT_ID_PATTERN. A legacy id is rejected by
610
+ // the reader forever, and because the reader is the namespace-wide scan, one
611
+ // historical report bricks every coordination read. Rekey legacy reports onto
612
+ // the canonical digest form instead of leaving the WAL permanently unreadable.
613
+ const reports = canonical.reports;
614
+ const migratedReportIds = new Map<string, string>();
615
+ if (reports && typeof reports === "object" && !Array.isArray(reports)) {
616
+ const table = reports as Record<string, Record<string, unknown>>;
617
+ for (const [reportId, report] of Object.entries(table)) {
618
+ if (COORDINATOR_REPORT_ID_PATTERN.test(reportId)) continue;
619
+ if (!report || typeof report !== "object" || Array.isArray(report)) continue;
620
+ const operationId = typeof report.operation_id === "string" ? report.operation_id : reportId;
621
+ let migratedId = `report-${digest(`legacy-report\0${record.session_id}\0${operationId}`)}`;
622
+ const existing = table[migratedId];
623
+ if (existing) {
624
+ const existingOperationId = typeof existing.operation_id === "string" ? existing.operation_id : null;
625
+ if (existingOperationId !== operationId) {
626
+ // A malformed legacy WAL can collide with the operation-derived digest.
627
+ // Preserve both records under distinct canonical ids rather than silently
628
+ // discarding an unrelated report.
629
+ migratedId = `report-${digest(`legacy-report\0${record.session_id}\0${operationId}\0${reportId}`)}`;
630
+ }
631
+ }
632
+ if (table[migratedId]) {
633
+ // The canonical report already wins this deterministic collision. The
634
+ // operation/outbox rewrites below keep every surviving reference coherent.
635
+ logger.warn("Coordinator legacy report id collision resolved", {
636
+ sessionId: record.session_id,
637
+ legacyReportId: reportId,
638
+ canonicalReportId: migratedId,
639
+ operationId,
640
+ });
641
+ migratedReportIds.set(reportId, migratedId);
642
+ delete table[reportId];
643
+ continue;
644
+ }
645
+ report.report_id = migratedId;
646
+ table[migratedId] = report;
647
+ migratedReportIds.set(reportId, migratedId);
648
+ delete table[reportId];
649
+ }
650
+ }
651
+ if (migratedReportIds.size > 0) {
652
+ const requests = record.requests as Record<string, unknown>;
653
+ const operations = requests.operations;
654
+ if (operations && typeof operations === "object" && !Array.isArray(operations)) {
655
+ for (const operation of Object.values(operations as Record<string, Record<string, unknown>>)) {
656
+ if (!operation || typeof operation !== "object" || Array.isArray(operation)) continue;
657
+ if (typeof operation.local_id === "string")
658
+ operation.local_id = migratedReportIds.get(operation.local_id) ?? operation.local_id;
659
+ }
660
+ }
661
+ const outbox = record.outbox as Record<string, Record<string, unknown>>;
662
+ for (const event of Object.values(outbox)) {
663
+ if (!event || typeof event !== "object" || Array.isArray(event) || event.entity !== "report") continue;
664
+ if (typeof event.entity_id === "string")
665
+ event.entity_id = migratedReportIds.get(event.entity_id) ?? event.entity_id;
666
+ const payload = event.payload;
667
+ if (payload && typeof payload === "object" && !Array.isArray(payload)) {
668
+ const reportId = (payload as Record<string, unknown>).report_id;
669
+ if (typeof reportId === "string")
670
+ (payload as Record<string, unknown>).report_id = migratedReportIds.get(reportId) ?? reportId;
671
+ }
672
+ }
673
+ }
608
674
  if (authorities && typeof authorities === "object" && !Array.isArray(authorities)) {
609
675
  for (const authority of Object.values(authorities as Record<string, unknown>)) {
610
676
  if (!authority || typeof authority !== "object" || Array.isArray(authority)) continue;
@@ -1322,9 +1388,16 @@ export async function listCanonicalActiveSessions(
1322
1388
  const active: string[] = [];
1323
1389
  for (const sessionId of sessionIds) {
1324
1390
  if (options.signal?.aborted) throw options.signal.reason ?? new Error("aborted");
1325
- const transaction = await readTransactionJson<CoordinatorSessionTransactionV1>(transactionPath(paths, sessionId));
1326
- if (!transaction) continue;
1327
- assertTransaction(transaction, path.basename(paths.root), sessionId);
1391
+ let transaction: CoordinatorSessionTransactionV1 | null;
1392
+ try {
1393
+ transaction = await readTransactionJson<CoordinatorSessionTransactionV1>(transactionPath(paths, sessionId));
1394
+ if (!transaction) continue;
1395
+ assertTransaction(transaction, path.basename(paths.root), sessionId);
1396
+ } catch (error) {
1397
+ if (!(error instanceof Error) || error.message !== "state_corrupt") throw error;
1398
+ logger.warn("Coordinator active-session scan skipped corrupt WAL", { sessionId });
1399
+ continue;
1400
+ }
1328
1401
  const hasActiveTurn = Object.values(transaction.canonical.turns).some(turn =>
1329
1402
  ["queued", "delivering", "active", "waiting_for_answer", "completing"].includes(turn.status),
1330
1403
  );
@@ -1418,14 +1491,74 @@ export async function advanceSchedulerCursor(
1418
1491
  export async function readSessionTransaction(
1419
1492
  paths: CoordinatorStatePaths,
1420
1493
  sessionId: string,
1494
+ options: { signal?: AbortSignal } = {},
1421
1495
  ): Promise<CoordinatorSessionTransactionV1 | null> {
1496
+ options.signal?.throwIfAborted();
1422
1497
  const transaction = await readTransactionJson<CoordinatorSessionTransactionV1>(transactionPath(paths, sessionId));
1498
+ options.signal?.throwIfAborted();
1423
1499
  if (!transaction) return null;
1500
+ // Atomic WAL replacement permits lock-free snapshots. Normalize only in
1501
+ // memory; durable report migration belongs to explicit projection recovery.
1424
1502
  assertTransaction(transaction, path.basename(paths.root), sessionId);
1425
- normalizeOutbox(transaction);
1426
1503
  return transaction;
1427
1504
  }
1428
1505
 
1506
+ export async function repairLegacyReportIds(
1507
+ paths: CoordinatorStatePaths,
1508
+ sessionId: string,
1509
+ options: { signal?: AbortSignal } = {},
1510
+ ): Promise<CoordinatorSessionTransactionV1 | null> {
1511
+ options.signal?.throwIfAborted();
1512
+ const file = transactionPath(paths, sessionId);
1513
+ const snapshot = await readTransactionJson<CoordinatorSessionTransactionV1>(file);
1514
+ options.signal?.throwIfAborted();
1515
+ if (!snapshot) return null;
1516
+ const hasLegacyReports = Object.keys(snapshot.canonical?.reports ?? {}).some(
1517
+ reportId => !COORDINATOR_REPORT_ID_PATTERN.test(reportId),
1518
+ );
1519
+ if (!hasLegacyReports) {
1520
+ // Atomic WAL replacement permits lock-free snapshots. In-memory schema
1521
+ // normalization alone must never turn an observation into a durable write.
1522
+ assertTransaction(snapshot, path.basename(paths.root), sessionId);
1523
+ return snapshot;
1524
+ }
1525
+ // Only legacy report rekeying needs a durable repair. Re-read under the lock
1526
+ // so a concurrent writer cannot be overwritten; never wait behind that writer
1527
+ // during namespace observation. The caller can skip a contended peer and retry.
1528
+ return await withFileLock(
1529
+ transactionLockPath(paths, sessionId),
1530
+ async () => {
1531
+ const transaction = await readTransactionJson<CoordinatorSessionTransactionV1>(file);
1532
+ if (!transaction) return null;
1533
+ const legacyReportIds = Object.keys(transaction.canonical?.reports ?? {}).filter(
1534
+ reportId => !COORDINATOR_REPORT_ID_PATTERN.test(reportId),
1535
+ );
1536
+ assertTransaction(transaction, path.basename(paths.root), sessionId);
1537
+ normalizeOutbox(transaction);
1538
+ if (legacyReportIds.some(reportId => !Object.hasOwn(transaction.canonical.reports, reportId))) {
1539
+ // Legacy report ids and their references are repaired as one durable WAL
1540
+ // transaction. Bump the revision so scheduler/projection consumers cannot
1541
+ // mistake the repaired image for the pre-migration one.
1542
+ transaction.revision += 1;
1543
+ transaction.projection.scheduler_pending_revision = transaction.revision;
1544
+ transaction.projection.scheduler_digest = digest(
1545
+ JSON.stringify({
1546
+ session_id: transaction.session_id,
1547
+ revision: transaction.revision,
1548
+ active: transaction.canonical.queue.active_turn_id !== null,
1549
+ state: transaction.canonical.desired_session_state,
1550
+ }),
1551
+ );
1552
+ assertTransaction(transaction, path.basename(paths.root), sessionId);
1553
+ options.signal?.throwIfAborted();
1554
+ await writeAtomic(file, transaction);
1555
+ }
1556
+ return transaction;
1557
+ },
1558
+ { ...lockOptions(options.signal), retries: 1, retryDelayMs: 0 },
1559
+ );
1560
+ }
1561
+
1429
1562
  export async function withSessionTransaction<T>(
1430
1563
  paths: CoordinatorStatePaths,
1431
1564
  sessionId: string,
@@ -2303,10 +2436,19 @@ export async function enumeratePublicDeliveries(
2303
2436
  after_order_key: afterOrderKey,
2304
2437
  });
2305
2438
  } catch (error) {
2306
- if (!(error instanceof Error) || error.message !== "resource_gone") throw error;
2439
+ if (error instanceof Error && (error.message === "resource_gone" || error.message === "state_corrupt")) {
2440
+ if (error.message === "state_corrupt")
2441
+ logger.warn("Coordinator delivery scan skipped corrupt WAL", { sessionId });
2442
+ } else throw error;
2443
+ }
2444
+ let endpointIncarnation: string | undefined;
2445
+ try {
2446
+ endpointIncarnation = (await readSessionTransaction(paths, sessionId))?.canonical.session.broker
2447
+ .endpoint_incarnation;
2448
+ } catch (error) {
2449
+ if (!(error instanceof Error) || error.message !== "state_corrupt") throw error;
2450
+ logger.warn("Coordinator delivery scan skipped corrupt WAL", { sessionId });
2307
2451
  }
2308
- const endpointIncarnation = (await readSessionTransaction(paths, sessionId))?.canonical.session.broker
2309
- .endpoint_incarnation;
2310
2452
  for (const claim of batch)
2311
2453
  claims.push({
2312
2454
  ...claim,
@@ -2349,6 +2491,30 @@ export function compactTransaction(transaction: CoordinatorSessionTransactionV1,
2349
2491
  );
2350
2492
  const pinnedRequests = new Set<object>(pinnedPrompts);
2351
2493
  const pinnedTurns = new Set(pinnedPrompts.map(request => request.coordinator_turn_id));
2494
+ // An active acknowledged turn proves its runtime receipt through the prompt
2495
+ // request that carries it. Dropping that request on retention leaves the WAL
2496
+ // failing its own `assertTransaction` receipt invariant on the next read, so
2497
+ // the session — and every namespace-wide scan that touches it — is corrupt
2498
+ // forever. Retention must never outrank an invariant the reader enforces.
2499
+ const activeTurnStatuses = new Set(["delivering", "active", "waiting_for_answer", "completing"]);
2500
+ const receiptBearingPromptIds = new Set(
2501
+ Object.entries(transaction.requests.prompts)
2502
+ .filter(([, request]) => {
2503
+ const turn = request.coordinator_turn_id
2504
+ ? transaction.canonical.turns[request.coordinator_turn_id]
2505
+ : undefined;
2506
+ if (!turn || !activeTurnStatuses.has(turn.status)) return false;
2507
+ const delivery = turn.delivery as Record<string, unknown>;
2508
+ if (delivery.prompt_acknowledged !== true) return false;
2509
+ return (
2510
+ ["accepted", "linked", "terminal", "completed"].includes(request.phase) &&
2511
+ request.runtime_receipt?.accepted === true &&
2512
+ request.runtime_receipt.command_id === delivery.runtime_command_id &&
2513
+ request.runtime_receipt.turn_id === delivery.runtime_turn_id
2514
+ );
2515
+ })
2516
+ .map(([id]) => id),
2517
+ );
2352
2518
  for (const [id, event] of Object.entries(transaction.outbox))
2353
2519
  if (
2354
2520
  event.emitted &&
@@ -2362,6 +2528,7 @@ export function compactTransaction(transaction: CoordinatorSessionTransactionV1,
2362
2528
  if (
2363
2529
  request.phase === "completed" &&
2364
2530
  !pinnedRequests.has(request) &&
2531
+ !receiptBearingPromptIds.has(id) &&
2365
2532
  old(request.updated_at) &&
2366
2533
  JSON.stringify(transaction.canonical).includes(id) === false
2367
2534
  )