@gajae-code/coding-agent 0.17.2 → 0.17.5

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 (390) hide show
  1. package/CHANGELOG.md +267 -0
  2. package/dist/types/cli/daemon-cli.d.ts +3 -1
  3. package/dist/types/cli/github-release.d.ts +17 -0
  4. package/dist/types/cli/public-command-entry.d.ts +56 -0
  5. package/dist/types/cli/public-command-errors.d.ts +126 -0
  6. package/dist/types/cli/public-command-evidence.d.ts +99 -0
  7. package/dist/types/cli/public-command-help.d.ts +65 -0
  8. package/dist/types/cli/public-command-registry.d.ts +69 -0
  9. package/dist/types/cli/session-picker.d.ts +1 -1
  10. package/dist/types/cli/setup-cli.d.ts +1 -0
  11. package/dist/types/cli/skills-cli.d.ts +5 -0
  12. package/dist/types/cli.d.ts +3 -0
  13. package/dist/types/commands/daemon.d.ts +4 -50
  14. package/dist/types/commands/sdk.d.ts +20 -37
  15. package/dist/types/commands/setup.d.ts +3 -0
  16. package/dist/types/commands/skills.d.ts +9 -0
  17. package/dist/types/config/autorouting-tier-map.d.ts +1049 -3
  18. package/dist/types/config/file-lock.d.ts +13 -3
  19. package/dist/types/config/model-profile-activation.d.ts +45 -1
  20. package/dist/types/config/model-registry.d.ts +14 -3
  21. package/dist/types/config/model-resolver.d.ts +1 -1
  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/daemon/operator-contract.d.ts +5 -1
  25. package/dist/types/eval/js/worker-protocol.d.ts +2 -0
  26. package/dist/types/exec/bash-executor.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/gjc-plugins/runtime-adapters.d.ts +11 -2
  30. package/dist/types/extensibility/runtime-skill-discovery.d.ts +18 -0
  31. package/dist/types/extensibility/shared-events.d.ts +3 -1
  32. package/dist/types/gjc-runtime/session-state-lock.d.ts +61 -0
  33. package/dist/types/gjc-runtime/state-writer.d.ts +14 -1
  34. package/dist/types/harness-control-plane/control-endpoint.d.ts +4 -1
  35. package/dist/types/harness-control-plane/finalize.d.ts +14 -3
  36. package/dist/types/internal-urls/embedded-protocol.d.ts +9 -0
  37. package/dist/types/internal-urls/index.d.ts +1 -0
  38. package/dist/types/internal-urls/parse.d.ts +9 -1
  39. package/dist/types/main.d.ts +23 -1
  40. package/dist/types/modes/acp/acp-agent.d.ts +55 -1
  41. package/dist/types/modes/acp/startup-provenance.d.ts +16 -0
  42. package/dist/types/modes/components/custom-provider-wizard.d.ts +19 -1
  43. package/dist/types/modes/components/session-selector.d.ts +5 -2
  44. package/dist/types/modes/components/user-message-selector.d.ts +5 -2
  45. package/dist/types/modes/controllers/command-controller.d.ts +1 -1
  46. package/dist/types/modes/controllers/selector-controller.d.ts +1 -1
  47. package/dist/types/modes/interactive-mode.d.ts +1 -1
  48. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +11 -1
  49. package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +14 -1
  50. package/dist/types/modes/types.d.ts +2 -2
  51. package/dist/types/runtime/process-lifecycle.d.ts +2 -0
  52. package/dist/types/runtime-mcp/loader.d.ts +2 -0
  53. package/dist/types/runtime-mcp/manager.d.ts +69 -6
  54. package/dist/types/runtime-mcp/pool.d.ts +17 -0
  55. package/dist/types/runtime-mcp/redaction.d.ts +20 -0
  56. package/dist/types/runtime-mcp/startup-policy.d.ts +6 -0
  57. package/dist/types/runtime-mcp/tool-bridge.d.ts +9 -0
  58. package/dist/types/runtime-mcp/transports/http.d.ts +11 -0
  59. package/dist/types/sdk/broker/broker.d.ts +17 -4
  60. package/dist/types/sdk/broker/ensure.d.ts +3 -0
  61. package/dist/types/sdk/broker/identity.d.ts +5 -1
  62. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +23 -3
  63. package/dist/types/sdk/broker/lifecycle.d.ts +15 -8
  64. package/dist/types/sdk/broker/managed-task-dag.d.ts +1335 -0
  65. package/dist/types/sdk/broker/managed-task-verification.d.ts +37 -0
  66. package/dist/types/sdk/broker/runtime.d.ts +1 -1
  67. package/dist/types/sdk/broker/session-index.d.ts +22 -3
  68. package/dist/types/sdk/broker/spawn-authority.d.ts +12 -0
  69. package/dist/types/sdk/broker/startup-failure.d.ts +4 -0
  70. package/dist/types/sdk/broker/stderr-drainer.d.ts +13 -0
  71. package/dist/types/sdk/bus/index.d.ts +19 -0
  72. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +7 -1
  73. package/dist/types/sdk/bus/telegram-daemon.d.ts +5 -0
  74. package/dist/types/sdk/cli/master-cli.d.ts +6 -10
  75. package/dist/types/sdk/cli/rows.d.ts +19 -1
  76. package/dist/types/sdk/cli/session-cli.d.ts +22 -5
  77. package/dist/types/sdk/client/client.d.ts +2 -0
  78. package/dist/types/sdk/guides/cli.d.ts +3 -4
  79. package/dist/types/sdk/guides/verify.d.ts +2 -0
  80. package/dist/types/sdk/host/host.d.ts +9 -0
  81. package/dist/types/sdk/host/session-runtime.d.ts +31 -0
  82. package/dist/types/sdk/host/types.d.ts +10 -0
  83. package/dist/types/sdk/index.d.ts +1 -0
  84. package/dist/types/sdk/prompt-deadline-flush.d.ts +85 -0
  85. package/dist/types/sdk/prompt-deadline-manager.d.ts +37 -0
  86. package/dist/types/sdk/prompt-tool-boundary.d.ts +73 -0
  87. package/dist/types/sdk/router/session-router.d.ts +2 -0
  88. package/dist/types/sdk/session.d.ts +3 -3
  89. package/dist/types/sdk/startup-capability.d.ts +2 -0
  90. package/dist/types/sdk/transport/relay.d.ts +1 -0
  91. package/dist/types/sdk/transport/serve-cli.d.ts +48 -4
  92. package/dist/types/sdk/transport/stdio.d.ts +5 -1
  93. package/dist/types/session/agent-session.d.ts +175 -23
  94. package/dist/types/session/fallback-chain-controller.d.ts +6 -6
  95. package/dist/types/session/fold-coordinator.d.ts +17 -3
  96. package/dist/types/session/internal/managed-session-storage.d.ts +7 -1
  97. package/dist/types/session/session-manager.d.ts +64 -1
  98. package/dist/types/session/session-work-lease.d.ts +14 -0
  99. package/dist/types/setup/model-onboarding-guidance.d.ts +1 -1
  100. package/dist/types/setup/provider-onboarding.d.ts +81 -1
  101. package/dist/types/task/types.d.ts +2 -0
  102. package/dist/types/tools/bash-interactive.d.ts +1 -0
  103. package/dist/types/tools/bash.d.ts +37 -11
  104. package/dist/types/tools/fetch.d.ts +10 -1
  105. package/dist/types/tools/job.d.ts +1 -1
  106. package/dist/types/tools/steer-fold.d.ts +31 -0
  107. package/dist/types/tools/subagent.d.ts +8 -1
  108. package/dist/types/utils/git.d.ts +28 -2
  109. package/dist/types/utils/mupdf-embedded.d.ts +2 -0
  110. package/dist/types/utils/mupdf.d.ts +4 -0
  111. package/dist/types/utils/session-title-generation.d.ts +6 -0
  112. package/dist/types/utils/title-generator.d.ts +11 -2
  113. package/dist/types/web/scrapers/types.d.ts +3 -0
  114. package/package.json +18 -10
  115. package/scripts/build-binary.ts +9 -3
  116. package/scripts/compile-args.ts +0 -9
  117. package/scripts/embed-mupdf.ts +52 -0
  118. package/scripts/generate-sdk-operation-inventory.ts +31 -1
  119. package/scripts/vendor-markit.ts +196 -0
  120. package/src/async/job-manager.ts +22 -1
  121. package/src/cli/daemon-cli.ts +53 -18
  122. package/src/cli/github-release.ts +87 -5
  123. package/src/cli/mcp-cli.ts +38 -4
  124. package/src/cli/public-command-entry.ts +450 -0
  125. package/src/cli/public-command-errors.ts +581 -0
  126. package/src/cli/public-command-evidence.ts +717 -0
  127. package/src/cli/public-command-help.ts +360 -0
  128. package/src/cli/public-command-registry.ts +541 -0
  129. package/src/cli/session-picker.ts +2 -1
  130. package/src/cli/setup-cli.ts +10 -1
  131. package/src/cli/skills-cli.ts +46 -2
  132. package/src/cli/stats-cli.ts +11 -1
  133. package/src/cli.ts +61 -1
  134. package/src/commands/daemon.ts +65 -69
  135. package/src/commands/sdk.ts +175 -117
  136. package/src/commands/setup.ts +2 -0
  137. package/src/commands/skills.ts +11 -0
  138. package/src/config/autorouting-tier-map.ts +543 -3
  139. package/src/config/file-lock.ts +206 -65
  140. package/src/config/model-discovery-manager.ts +4 -4
  141. package/src/config/model-profile-activation.ts +417 -66
  142. package/src/config/model-registry.ts +254 -36
  143. package/src/config/model-resolver.ts +6 -1
  144. package/src/config/settings-schema.ts +26 -2
  145. package/src/coordinator-mcp/policy.ts +10 -5
  146. package/src/coordinator-mcp/question-gate-codec.ts +17 -0
  147. package/src/coordinator-mcp/question-state.ts +179 -9
  148. package/src/coordinator-mcp/server.ts +521 -87
  149. package/src/coordinator-mcp/session-reaper.ts +6 -4
  150. package/src/crash/record-loader.ts +6 -2
  151. package/src/daemon/operator-contract.ts +26 -12
  152. package/src/defaults/gjc/skills/ultragoal/SKILL.md +1 -1
  153. package/src/eval/js/context-manager.ts +8 -8
  154. package/src/eval/js/worker-core.ts +9 -4
  155. package/src/eval/js/worker-protocol.ts +2 -0
  156. package/src/exec/bash-executor.ts +3 -0
  157. package/src/extensibility/extensions/runner.ts +52 -4
  158. package/src/extensibility/extensions/types.ts +10 -0
  159. package/src/extensibility/gjc-plugins/registry.ts +196 -37
  160. package/src/extensibility/gjc-plugins/runtime-adapters.ts +46 -8
  161. package/src/extensibility/runtime-skill-discovery.ts +61 -3
  162. package/src/extensibility/shared-events.ts +3 -1
  163. package/src/gjc-runtime/session-state-lock.ts +165 -24
  164. package/src/gjc-runtime/state-writer.ts +317 -6
  165. package/src/gjc-runtime/ultragoal-succession.ts +31 -3
  166. package/src/harness-control-plane/control-endpoint.ts +24 -6
  167. package/src/harness-control-plane/finalize.ts +312 -25
  168. package/src/harness-control-plane/owner.ts +323 -89
  169. package/src/internal-urls/docs-index.generated.ts +23 -20
  170. package/src/internal-urls/embedded-protocol.ts +83 -0
  171. package/src/internal-urls/index.ts +1 -0
  172. package/src/internal-urls/parse.ts +21 -1
  173. package/src/internal-urls/router.ts +4 -2
  174. package/src/main.ts +192 -74
  175. package/src/modes/acp/acp-agent.ts +973 -56
  176. package/src/modes/acp/startup-provenance.ts +59 -0
  177. package/src/modes/components/custom-provider-wizard.ts +308 -7
  178. package/src/modes/components/gjc-bundle-settings.ts +21 -1
  179. package/src/modes/components/oauth-selector.ts +9 -0
  180. package/src/modes/components/session-selector.ts +47 -4
  181. package/src/modes/components/tool-status-header.ts +72 -6
  182. package/src/modes/components/user-message-selector.ts +57 -15
  183. package/src/modes/controllers/command-controller.ts +58 -32
  184. package/src/modes/controllers/extension-ui-controller.ts +33 -7
  185. package/src/modes/controllers/input-controller.ts +4 -0
  186. package/src/modes/controllers/runtime-mcp-command-controller.ts +1 -1
  187. package/src/modes/controllers/selector-controller.ts +161 -15
  188. package/src/modes/interactive-mode.ts +21 -7
  189. package/src/modes/runtime-init.ts +1 -0
  190. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +124 -7
  191. package/src/modes/shared/agent-wire/workflow-gate-types.ts +16 -2
  192. package/src/modes/types.ts +2 -2
  193. package/src/prompts/agent-fragments/browser-aside.md +1 -0
  194. package/src/prompts/system/title-system.md +1 -1
  195. package/src/prompts/tools/bash.md +1 -1
  196. package/src/prompts/tools/job.md +1 -1
  197. package/src/prompts/tools/read.md +2 -0
  198. package/src/runtime/network-prewarm-service.test.ts +36 -1
  199. package/src/runtime/network-prewarm-service.ts +28 -3
  200. package/src/runtime/process-lifecycle.ts +22 -11
  201. package/src/runtime-mcp/config.ts +16 -1
  202. package/src/runtime-mcp/loader.ts +6 -3
  203. package/src/runtime-mcp/manager.ts +845 -109
  204. package/src/runtime-mcp/pool.test.ts +31 -0
  205. package/src/runtime-mcp/pool.ts +304 -28
  206. package/src/runtime-mcp/redaction.ts +42 -0
  207. package/src/runtime-mcp/startup-policy.ts +7 -0
  208. package/src/runtime-mcp/tool-bridge.ts +71 -0
  209. package/src/runtime-mcp/transports/http.ts +108 -25
  210. package/src/sdk/acp/adapter.ts +27 -8
  211. package/src/sdk/broker/broker.ts +1431 -198
  212. package/src/sdk/broker/ensure.ts +21 -3
  213. package/src/sdk/broker/identity.ts +22 -1
  214. package/src/sdk/broker/lifecycle-ledger.ts +95 -31
  215. package/src/sdk/broker/lifecycle.ts +690 -141
  216. package/src/sdk/broker/managed-task-dag.ts +1927 -0
  217. package/src/sdk/broker/managed-task-verification.ts +642 -0
  218. package/src/sdk/broker/runtime.ts +1 -1
  219. package/src/sdk/broker/session-index.ts +97 -4
  220. package/src/sdk/broker/spawn-authority.ts +175 -14
  221. package/src/sdk/broker/startup-failure.ts +80 -1
  222. package/src/sdk/broker/stderr-drainer.ts +59 -0
  223. package/src/sdk/broker/transport.ts +1 -0
  224. package/src/sdk/bus/chat-daemon-control.ts +2 -2
  225. package/src/sdk/bus/chat-daemon-runtime.ts +1 -0
  226. package/src/sdk/bus/index.ts +707 -81
  227. package/src/sdk/bus/telegram-daemon-cli.ts +31 -2
  228. package/src/sdk/bus/telegram-daemon-contract.ts +7 -1
  229. package/src/sdk/bus/telegram-daemon.ts +10 -3
  230. package/src/sdk/cli/master-cli.ts +47 -36
  231. package/src/sdk/cli/rows.ts +30 -7
  232. package/src/sdk/cli/session-cli.ts +705 -184
  233. package/src/sdk/client/client.ts +18 -0
  234. package/src/sdk/guides/catalog.ts +2 -2
  235. package/src/sdk/guides/cli.ts +20 -62
  236. package/src/sdk/guides/verify.ts +14 -0
  237. package/src/sdk/host/host.ts +49 -5
  238. package/src/sdk/host/session-runtime.test.ts +184 -2
  239. package/src/sdk/host/session-runtime.ts +322 -101
  240. package/src/sdk/host/types.ts +12 -1
  241. package/src/sdk/host/websocket-transport.lifecycle.test.ts +84 -0
  242. package/src/sdk/host/websocket-transport.ts +40 -6
  243. package/src/sdk/index.ts +11 -0
  244. package/src/sdk/lifecycle/service.ts +2 -0
  245. package/src/sdk/prompt-deadline-flush.ts +356 -0
  246. package/src/sdk/prompt-deadline-manager.ts +133 -1
  247. package/src/sdk/prompt-tool-boundary.ts +121 -0
  248. package/src/sdk/protocol/operation-inventory.generated.json +106 -0
  249. package/src/sdk/router/session-router.ts +9 -1
  250. package/src/sdk/session.ts +763 -116
  251. package/src/sdk/startup-capability.ts +1 -1
  252. package/src/sdk/transport/relay.ts +71 -6
  253. package/src/sdk/transport/serve-cli.ts +397 -42
  254. package/src/sdk/transport/socket.ts +12 -11
  255. package/src/sdk/transport/stdio.ts +7 -3
  256. package/src/session/agent-session.ts +2472 -407
  257. package/src/session/fallback-chain-controller.ts +6 -7
  258. package/src/session/fold-coordinator.ts +24 -5
  259. package/src/session/internal/managed-session-scope.ts +68 -18
  260. package/src/session/internal/managed-session-storage.ts +334 -12
  261. package/src/session/session-manager.ts +382 -44
  262. package/src/session/session-work-lease.ts +34 -0
  263. package/src/setup/model-onboarding-guidance.ts +1 -1
  264. package/src/setup/provider-onboarding.ts +397 -24
  265. package/src/setup/provider-presets.json +2 -1
  266. package/src/slash-commands/builtin-registry.ts +259 -15
  267. package/src/task/executor.ts +46 -17
  268. package/src/task/index.ts +14 -2
  269. package/src/task/types.ts +2 -0
  270. package/src/tools/bash-interactive.ts +2 -0
  271. package/src/tools/bash.ts +118 -78
  272. package/src/tools/fetch.ts +140 -25
  273. package/src/tools/job.ts +151 -25
  274. package/src/tools/output-meta.ts +15 -2
  275. package/src/tools/path-utils.ts +27 -3
  276. package/src/tools/read.ts +3 -3
  277. package/src/tools/steer-fold.ts +107 -0
  278. package/src/tools/subagent-render.ts +24 -1
  279. package/src/tools/subagent.ts +27 -1
  280. package/src/tools/tool-catalog.generated.ts +29 -2
  281. package/src/tools/tool-errors.ts +4 -0
  282. package/src/utils/git.ts +53 -3
  283. package/src/utils/markit.ts +55 -41
  284. package/src/utils/mupdf-assets.d.ts +4 -0
  285. package/src/utils/mupdf-embedded.ts +4 -0
  286. package/src/utils/mupdf.ts +136 -0
  287. package/src/utils/session-title-generation.ts +29 -0
  288. package/src/utils/title-generator.ts +46 -2
  289. package/src/web/scrapers/types.ts +24 -3
  290. package/vendor/markit-ai/LICENSE +21 -0
  291. package/vendor/markit-ai/MANIFEST.json +412 -0
  292. package/vendor/markit-ai/dist/commands/config.d.ts +4 -0
  293. package/vendor/markit-ai/dist/commands/config.js +139 -0
  294. package/vendor/markit-ai/dist/commands/convert.d.ts +6 -0
  295. package/vendor/markit-ai/dist/commands/convert.js +113 -0
  296. package/vendor/markit-ai/dist/commands/formats.d.ts +2 -0
  297. package/vendor/markit-ai/dist/commands/formats.js +92 -0
  298. package/vendor/markit-ai/dist/commands/init.d.ts +2 -0
  299. package/vendor/markit-ai/dist/commands/init.js +29 -0
  300. package/vendor/markit-ai/dist/commands/onboard.d.ts +2 -0
  301. package/vendor/markit-ai/dist/commands/onboard.js +61 -0
  302. package/vendor/markit-ai/dist/commands/plugin.d.ts +4 -0
  303. package/vendor/markit-ai/dist/commands/plugin.js +58 -0
  304. package/vendor/markit-ai/dist/config.d.ts +26 -0
  305. package/vendor/markit-ai/dist/config.js +42 -0
  306. package/vendor/markit-ai/dist/converters/audio.d.ts +7 -0
  307. package/vendor/markit-ai/dist/converters/audio.js +104 -0
  308. package/vendor/markit-ai/dist/converters/csv.d.ts +7 -0
  309. package/vendor/markit-ai/dist/converters/csv.js +83 -0
  310. package/vendor/markit-ai/dist/converters/docx.d.ts +6 -0
  311. package/vendor/markit-ai/dist/converters/docx.js +57 -0
  312. package/vendor/markit-ai/dist/converters/epub.d.ts +8 -0
  313. package/vendor/markit-ai/dist/converters/epub.js +128 -0
  314. package/vendor/markit-ai/dist/converters/github.d.ts +18 -0
  315. package/vendor/markit-ai/dist/converters/github.js +148 -0
  316. package/vendor/markit-ai/dist/converters/html.d.ts +6 -0
  317. package/vendor/markit-ai/dist/converters/html.js +30 -0
  318. package/vendor/markit-ai/dist/converters/image.d.ts +6 -0
  319. package/vendor/markit-ai/dist/converters/image.js +124 -0
  320. package/vendor/markit-ai/dist/converters/ipynb.d.ts +6 -0
  321. package/vendor/markit-ai/dist/converters/ipynb.js +75 -0
  322. package/vendor/markit-ai/dist/converters/iwork.d.ts +20 -0
  323. package/vendor/markit-ai/dist/converters/iwork.js +391 -0
  324. package/vendor/markit-ai/dist/converters/json.d.ts +6 -0
  325. package/vendor/markit-ai/dist/converters/json.js +21 -0
  326. package/vendor/markit-ai/dist/converters/pdf/columns.d.ts +35 -0
  327. package/vendor/markit-ai/dist/converters/pdf/columns.js +93 -0
  328. package/vendor/markit-ai/dist/converters/pdf/extract.d.ts +19 -0
  329. package/vendor/markit-ai/dist/converters/pdf/extract.js +514 -0
  330. package/vendor/markit-ai/dist/converters/pdf/grid.d.ts +25 -0
  331. package/vendor/markit-ai/dist/converters/pdf/grid.js +795 -0
  332. package/vendor/markit-ai/dist/converters/pdf/headers.d.ts +24 -0
  333. package/vendor/markit-ai/dist/converters/pdf/headers.js +108 -0
  334. package/vendor/markit-ai/dist/converters/pdf/index.d.ts +19 -0
  335. package/vendor/markit-ai/dist/converters/pdf/index.js +136 -0
  336. package/vendor/markit-ai/dist/converters/pdf/mupdf-loader.js +9 -0
  337. package/vendor/markit-ai/dist/converters/pdf/render.d.ts +24 -0
  338. package/vendor/markit-ai/dist/converters/pdf/render.js +513 -0
  339. package/vendor/markit-ai/dist/converters/pdf/types.d.ts +75 -0
  340. package/vendor/markit-ai/dist/converters/pdf/types.js +1 -0
  341. package/vendor/markit-ai/dist/converters/plain-text.d.ts +6 -0
  342. package/vendor/markit-ai/dist/converters/plain-text.js +87 -0
  343. package/vendor/markit-ai/dist/converters/pptx.d.ts +8 -0
  344. package/vendor/markit-ai/dist/converters/pptx.js +289 -0
  345. package/vendor/markit-ai/dist/converters/rss.d.ts +11 -0
  346. package/vendor/markit-ai/dist/converters/rss.js +138 -0
  347. package/vendor/markit-ai/dist/converters/wikipedia.d.ts +6 -0
  348. package/vendor/markit-ai/dist/converters/wikipedia.js +33 -0
  349. package/vendor/markit-ai/dist/converters/xlsx.d.ts +8 -0
  350. package/vendor/markit-ai/dist/converters/xlsx.js +147 -0
  351. package/vendor/markit-ai/dist/converters/xml.d.ts +6 -0
  352. package/vendor/markit-ai/dist/converters/xml.js +18 -0
  353. package/vendor/markit-ai/dist/converters/yaml.d.ts +6 -0
  354. package/vendor/markit-ai/dist/converters/yaml.js +17 -0
  355. package/vendor/markit-ai/dist/converters/zip.d.ts +8 -0
  356. package/vendor/markit-ai/dist/converters/zip.js +57 -0
  357. package/vendor/markit-ai/dist/index.d.ts +30 -0
  358. package/vendor/markit-ai/dist/index.js +26 -0
  359. package/vendor/markit-ai/dist/main.d.ts +2 -0
  360. package/vendor/markit-ai/dist/main.js +191 -0
  361. package/vendor/markit-ai/dist/markit.d.ts +45 -0
  362. package/vendor/markit-ai/dist/markit.js +267 -0
  363. package/vendor/markit-ai/dist/plugins/api.d.ts +7 -0
  364. package/vendor/markit-ai/dist/plugins/api.js +42 -0
  365. package/vendor/markit-ai/dist/plugins/index.d.ts +4 -0
  366. package/vendor/markit-ai/dist/plugins/index.js +3 -0
  367. package/vendor/markit-ai/dist/plugins/installer.d.ts +25 -0
  368. package/vendor/markit-ai/dist/plugins/installer.js +176 -0
  369. package/vendor/markit-ai/dist/plugins/loader.d.ts +6 -0
  370. package/vendor/markit-ai/dist/plugins/loader.js +61 -0
  371. package/vendor/markit-ai/dist/plugins/types.d.ts +25 -0
  372. package/vendor/markit-ai/dist/plugins/types.js +1 -0
  373. package/vendor/markit-ai/dist/providers/anthropic.d.ts +2 -0
  374. package/vendor/markit-ai/dist/providers/anthropic.js +47 -0
  375. package/vendor/markit-ai/dist/providers/index.d.ts +21 -0
  376. package/vendor/markit-ai/dist/providers/index.js +56 -0
  377. package/vendor/markit-ai/dist/providers/openai.d.ts +2 -0
  378. package/vendor/markit-ai/dist/providers/openai.js +76 -0
  379. package/vendor/markit-ai/dist/providers/types.d.ts +26 -0
  380. package/vendor/markit-ai/dist/providers/types.js +1 -0
  381. package/vendor/markit-ai/dist/types.d.ts +36 -0
  382. package/vendor/markit-ai/dist/types.js +1 -0
  383. package/vendor/markit-ai/dist/utils/exit-codes.d.ts +4 -0
  384. package/vendor/markit-ai/dist/utils/exit-codes.js +4 -0
  385. package/vendor/markit-ai/dist/utils/output.d.ts +22 -0
  386. package/vendor/markit-ai/dist/utils/output.js +31 -0
  387. package/vendor/markit-ai/dist/utils/turndown.d.ts +8 -0
  388. package/vendor/markit-ai/dist/utils/turndown.js +70 -0
  389. package/vendor/markit-ai/package.json +74 -0
  390. package/vendor/markit-ai.patch +49 -0
@@ -0,0 +1,360 @@
1
+ import { createHash } from "node:crypto";
2
+ import {
3
+ PUBLIC_COMMANDS,
4
+ PUBLIC_HELP_SECTIONS,
5
+ type PublicCommandDescriptor,
6
+ type PublicHelpSection,
7
+ } from "./public-command-registry";
8
+
9
+ export const PUBLIC_HELP_MAX_BYTES = 8192;
10
+ const FRAGMENT_BYTES = 1024;
11
+
12
+ export interface PublicHelpOptions {
13
+ json?: boolean;
14
+ section?: string;
15
+ page?: string | number;
16
+ revision?: string;
17
+ }
18
+ export type PublicHelpErrorCode =
19
+ | "unknown_command"
20
+ | "invalid_section"
21
+ | "invalid_page"
22
+ | "invalid_revision"
23
+ | "revision_mismatch"
24
+ | "static_metadata_too_large"
25
+ | "invalid_registry";
26
+ export class PublicHelpError extends Error {
27
+ readonly exitCode: 2 | 1;
28
+ constructor(readonly code: PublicHelpErrorCode) {
29
+ super(
30
+ {
31
+ unknown_command: "Unknown public command. Request help at the nearest known command.",
32
+ invalid_section: "Select a documented help section.",
33
+ invalid_page: "Select an available positive decimal safe-integer help page.",
34
+ invalid_revision: "Help revision must be a lowercase SHA256 digest.",
35
+ revision_mismatch: "Help metadata changed. Begin a new help traversal without the old revision.",
36
+ static_metadata_too_large: "Static help metadata cannot fit the output budget.",
37
+ invalid_registry: "Static help registry contains an invalid command relationship or value.",
38
+ }[code],
39
+ );
40
+ this.name = "PublicHelpError";
41
+ this.exitCode = code === "static_metadata_too_large" || code === "invalid_registry" ? 1 : 2;
42
+ }
43
+ }
44
+ export interface PublicHelpEntry {
45
+ id: string;
46
+ kind: "overview" | "usage" | "child" | "argument" | "option" | "example" | "recovery";
47
+ complete: true;
48
+ value: unknown;
49
+ }
50
+ export interface PublicHelpFragment {
51
+ id: string;
52
+ kind: "fragment";
53
+ complete: false;
54
+ encoding: "base64";
55
+ offsetBytes: number;
56
+ totalBytes: number;
57
+ sha256: string;
58
+ data: string;
59
+ }
60
+ export interface PublicHelpNext {
61
+ section: PublicHelpSection;
62
+ page: number;
63
+ executable: "gjc";
64
+ argv: string[];
65
+ }
66
+ export interface PublicHelpDocument {
67
+ schema: "gjc.command-help";
68
+ version: 1;
69
+ ok: true;
70
+ command: readonly string[];
71
+ canonicalCommand: readonly string[];
72
+ revision: string;
73
+ section: PublicHelpSection;
74
+ page: number;
75
+ sections: readonly PublicHelpSection[];
76
+ entries: readonly (PublicHelpEntry | PublicHelpFragment)[];
77
+ sectionComplete: boolean;
78
+ documentComplete: boolean;
79
+ next: PublicHelpNext | null;
80
+ }
81
+ export interface PublicHelpRenderResult {
82
+ /** Complete serialization including its single trailing newline. No output is written. */
83
+ output: string;
84
+ bytes: number;
85
+ document: PublicHelpDocument;
86
+ }
87
+
88
+ /** Sorted object keys; array ordering is semantic. JSON escaping preserves lone surrogates. */
89
+ function canonicalJson(value: unknown): string {
90
+ const normalize = (item: unknown): unknown => {
91
+ if (item === null || typeof item === "string" || typeof item === "boolean") return item;
92
+ if (typeof item === "number" && Number.isFinite(item)) return item;
93
+ if (Array.isArray(item)) return item.map(value => (value === undefined ? null : normalize(value)));
94
+ if (item && typeof item === "object") {
95
+ const result: Record<string, unknown> = {};
96
+ for (const key of Object.keys(item).sort()) {
97
+ const value = (item as Record<string, unknown>)[key];
98
+ if (value !== undefined) Object.defineProperty(result, key, { value: normalize(value), enumerable: true });
99
+ }
100
+ return result;
101
+ }
102
+ throw new PublicHelpError("invalid_registry");
103
+ };
104
+ return JSON.stringify(normalize(value));
105
+ }
106
+ function sha256(value: string | Uint8Array): string {
107
+ return createHash("sha256").update(value).digest("hex");
108
+ }
109
+
110
+ /** The digest covers every descriptor and this renderer's paging/schema policy. */
111
+ export function getPublicHelpRevision(registry: readonly PublicCommandDescriptor[] = PUBLIC_COMMANDS): string {
112
+ return sha256(
113
+ canonicalJson({
114
+ schema: "gjc.command-help",
115
+ version: 1,
116
+ pagingVersion: 1,
117
+ maxBytes: PUBLIC_HELP_MAX_BYTES,
118
+ fragmentBytes: FRAGMENT_BYTES,
119
+ sections: PUBLIC_HELP_SECTIONS,
120
+ registry,
121
+ entryOrder: registry.map(row => ({ arguments: Object.keys(row.args), options: Object.keys(row.flags) })),
122
+ }),
123
+ );
124
+ }
125
+
126
+ function entriesFor(
127
+ descriptor: PublicCommandDescriptor,
128
+ registry: readonly PublicCommandDescriptor[],
129
+ ): Record<PublicHelpSection, PublicHelpEntry[]> {
130
+ const prefix = descriptor.command.join("/");
131
+ const entry = (
132
+ section: PublicHelpSection,
133
+ key: string,
134
+ kind: PublicHelpEntry["kind"],
135
+ value: unknown,
136
+ ): PublicHelpEntry => ({ id: `${prefix}/${section}/${key}`, kind, complete: true, value });
137
+ const sections: Record<PublicHelpSection, PublicHelpEntry[]> = {
138
+ overview: [],
139
+ usage: descriptor.usage.map((value, index) => entry("usage", String(index + 1), "usage", value)),
140
+ children: descriptor.children.map(token => {
141
+ const path = [...descriptor.command, token];
142
+ const child = registry.find(
143
+ row => row.command.length === path.length && row.command.every((part, index) => part === path[index]),
144
+ );
145
+ if (!child) throw new PublicHelpError("invalid_registry");
146
+ return entry("children", token, "child", {
147
+ command: child.command,
148
+ canonicalCommand: child.canonicalCommand,
149
+ description: child.description,
150
+ help: { executable: "gjc", argv: [...child.command, "--help"] },
151
+ });
152
+ }),
153
+ arguments: Object.entries(descriptor.args).map(([name, arg]) =>
154
+ entry("arguments", name, "argument", {
155
+ name,
156
+ required: arg.required ?? false,
157
+ multiple: arg.multiple ?? false,
158
+ description: arg.description,
159
+ ...(arg.options ? { choices: arg.options } : {}),
160
+ }),
161
+ ),
162
+ options: Object.entries(descriptor.flags).map(([name, flag]) =>
163
+ entry("options", name, "option", {
164
+ name: `--${name}`,
165
+ type: flag.kind,
166
+ ...(flag.char ? { short: `-${flag.char}` } : {}),
167
+ required: flag.required ?? false,
168
+ multiple: flag.multiple ?? false,
169
+ ...(flag.default !== undefined ? { default: flag.default } : {}),
170
+ ...(flag.options ? { choices: flag.options } : {}),
171
+ description: flag.description,
172
+ ...(flag.conflicts ? { conflicts: flag.conflicts.map(name => `--${name}`) } : {}),
173
+ ...(flag.requires ? { requires: flag.requires.map(name => `--${name}`) } : {}),
174
+ ...(flag.risk ? { risk: flag.risk } : {}),
175
+ }),
176
+ ),
177
+ examples: descriptor.examples.map((value, index) => entry("examples", String(index + 1), "example", value)),
178
+ recovery: descriptor.recovery.map((value, index) => entry("recovery", String(index + 1), "recovery", value)),
179
+ };
180
+ // Constraints belong to recovery, so overview can reference rather than duplicate them.
181
+ for (const [index, description] of descriptor.constraints.entries())
182
+ sections.recovery.push(
183
+ entry("recovery", `constraint-${index + 1}`, "recovery", {
184
+ description,
185
+ disruption: "none",
186
+ requiresConfirmation: false,
187
+ }),
188
+ );
189
+ if (descriptor.risk)
190
+ sections.recovery.push(
191
+ entry("recovery", "risk", "recovery", {
192
+ description: descriptor.risk,
193
+ disruption: "interrupts-work",
194
+ requiresConfirmation: true,
195
+ }),
196
+ );
197
+ if (descriptor.exactlyOneOf?.length)
198
+ sections.usage.push(
199
+ entry("usage", "exclusive-options", "usage", {
200
+ syntax: `Exactly one option is required in each group: ${descriptor.exactlyOneOf.map(group => group.map(name => `--${name}`).join(" | ")).join("; ")}`,
201
+ executable: false,
202
+ }),
203
+ );
204
+ sections.overview.push(
205
+ entry("overview", "summary", "overview", {
206
+ description: descriptor.description,
207
+ ...(descriptor.defaultChild ? { defaultCommand: [...descriptor.command, descriptor.defaultChild] } : {}),
208
+ entries: PUBLIC_HELP_SECTIONS.filter(section => section !== "overview").map(section => ({
209
+ section,
210
+ ids: sections[section].map(value => value.id),
211
+ })),
212
+ }),
213
+ );
214
+ return sections;
215
+ }
216
+
217
+ /** JSON literals are display values, not shell commands; escape terminal controls explicitly. */
218
+ function display(value: unknown): string {
219
+ return JSON.stringify(value).replace(
220
+ /[\u007f-\u009f\u2028\u2029]/g,
221
+ character => `\\u${character.charCodeAt(0).toString(16).padStart(4, "0")}`,
222
+ );
223
+ }
224
+ function serialize(document: PublicHelpDocument, json: boolean): string {
225
+ if (json) return `${JSON.stringify(document)}\n`;
226
+ return `${[
227
+ `COMMAND ${display(document.command)}`,
228
+ `CANONICAL COMMAND ${display(document.canonicalCommand)}`,
229
+ `REVISION ${document.revision}`,
230
+ `SECTION ${document.section} PAGE ${document.page}`,
231
+ `SECTIONS ${display(document.sections)}`,
232
+ "ENTRIES (JSON display literals; do not paste escaped strings as shell argv)",
233
+ ...document.entries.map(entry => display(entry)),
234
+ `SECTION COMPLETE ${document.sectionComplete}`,
235
+ `DOCUMENT COMPLETE ${document.documentComplete}`,
236
+ `CONTINUATION ${display(document.next)}`,
237
+ ].join("\n")}\n`;
238
+ }
239
+ function pageNumber(value: PublicHelpOptions["page"]): number {
240
+ if (value === undefined) return 1;
241
+ if (typeof value === "string" && !/^[0-9]+$/.test(value)) throw new PublicHelpError("invalid_page");
242
+ const page = Number(value);
243
+ if (!Number.isSafeInteger(page) || page < 1) throw new PublicHelpError("invalid_page");
244
+ return page;
245
+ }
246
+
247
+ /**
248
+ * Pure command-local rendering. Each page holds one complete entry or one byte fragment;
249
+ * empty sections still have page 1. This keeps traversal stable and independently bounded.
250
+ * The optional registry supports isolated static fixtures without replacing global state.
251
+ */
252
+ export function renderPublicCommandHelp(
253
+ command: readonly string[],
254
+ options: PublicHelpOptions = {},
255
+ registry: readonly PublicCommandDescriptor[] = PUBLIC_COMMANDS,
256
+ ): PublicHelpRenderResult {
257
+ const descriptor = registry.find(
258
+ row => row.command.length === command.length && row.command.every((part, index) => part === command[index]),
259
+ );
260
+ if (!descriptor) throw new PublicHelpError("unknown_command");
261
+ const section = options.section ?? "overview";
262
+ if (!(PUBLIC_HELP_SECTIONS as readonly string[]).includes(section)) throw new PublicHelpError("invalid_section");
263
+ const selectedSection = section as PublicHelpSection;
264
+ const page = pageNumber(options.page);
265
+ if (options.revision !== undefined && !/^[0-9a-f]{64}$/.test(options.revision))
266
+ throw new PublicHelpError("invalid_revision");
267
+ const revision = getPublicHelpRevision(registry);
268
+ if (options.revision !== undefined && options.revision !== revision) throw new PublicHelpError("revision_mismatch");
269
+ const json = options.json === true;
270
+ const next = (section: PublicHelpSection, page: number): PublicHelpNext => ({
271
+ section,
272
+ page,
273
+ executable: "gjc",
274
+ argv: [
275
+ ...descriptor.command,
276
+ "--help",
277
+ "--help-revision",
278
+ revision,
279
+ "--help-section",
280
+ section,
281
+ "--help-page",
282
+ String(page),
283
+ ...(json ? ["--json"] : []),
284
+ ],
285
+ });
286
+ const document = (
287
+ section: PublicHelpSection,
288
+ page: number,
289
+ entries: PublicHelpDocument["entries"],
290
+ sectionComplete: boolean,
291
+ continuation: PublicHelpNext | null,
292
+ ): PublicHelpDocument => ({
293
+ schema: "gjc.command-help",
294
+ version: 1,
295
+ ok: true,
296
+ command: descriptor.command,
297
+ canonicalCommand: descriptor.canonicalCommand,
298
+ revision,
299
+ section,
300
+ page,
301
+ sections: PUBLIC_HELP_SECTIONS,
302
+ entries,
303
+ sectionComplete,
304
+ documentComplete: continuation === null,
305
+ next: continuation,
306
+ });
307
+ // Reserve the longest section name and largest safe page number in both metadata and argv.
308
+ // false is one byte longer than true; a continuation is always larger than null.
309
+ const reservedBytes = (entries: PublicHelpDocument["entries"]): number =>
310
+ Buffer.byteLength(
311
+ serialize(
312
+ document("arguments", Number.MAX_SAFE_INTEGER, entries, false, next("arguments", Number.MAX_SAFE_INTEGER)),
313
+ json,
314
+ ),
315
+ );
316
+ if (reservedBytes([]) > PUBLIC_HELP_MAX_BYTES) throw new PublicHelpError("static_metadata_too_large");
317
+ const pages: (PublicHelpEntry | PublicHelpFragment)[] = [];
318
+ for (const entry of entriesFor(descriptor, registry)[selectedSection]) {
319
+ if (reservedBytes([entry]) <= PUBLIC_HELP_MAX_BYTES) {
320
+ pages.push(entry);
321
+ continue;
322
+ }
323
+ const bytes = Buffer.from(canonicalJson(entry.value), "utf8");
324
+ const digest = sha256(bytes);
325
+ for (let offset = 0; offset < bytes.length; offset += FRAGMENT_BYTES) {
326
+ const fragment: PublicHelpFragment = {
327
+ id: entry.id,
328
+ kind: "fragment",
329
+ complete: false,
330
+ encoding: "base64",
331
+ offsetBytes: offset,
332
+ totalBytes: bytes.length,
333
+ sha256: digest,
334
+ data: bytes.subarray(offset, offset + FRAGMENT_BYTES).toString("base64"),
335
+ };
336
+ if (reservedBytes([fragment]) > PUBLIC_HELP_MAX_BYTES) throw new PublicHelpError("static_metadata_too_large");
337
+ pages.push(fragment);
338
+ }
339
+ }
340
+ const pageCount = Math.max(1, pages.length);
341
+ if (page > pageCount) throw new PublicHelpError("invalid_page");
342
+ const sectionComplete = page === pageCount;
343
+ const followingSection = PUBLIC_HELP_SECTIONS[PUBLIC_HELP_SECTIONS.indexOf(selectedSection) + 1];
344
+ const continuation = !sectionComplete
345
+ ? next(selectedSection, page + 1)
346
+ : followingSection
347
+ ? next(followingSection, 1)
348
+ : null;
349
+ const result = document(
350
+ selectedSection,
351
+ page,
352
+ pages.length ? [pages[page - 1]!] : [],
353
+ sectionComplete,
354
+ continuation,
355
+ );
356
+ const output = serialize(result, json);
357
+ const bytes = Buffer.byteLength(output);
358
+ if (bytes > PUBLIC_HELP_MAX_BYTES) throw new PublicHelpError("static_metadata_too_large");
359
+ return { output, bytes, document: result };
360
+ }