open-multi-agent-kit 0.78.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 (1304) hide show
  1. package/AGENTS.md +550 -0
  2. package/CHANGELOG.md +464 -0
  3. package/CLAUDE.md +8 -0
  4. package/DESIGN.md +334 -0
  5. package/GEMINI.md +8 -0
  6. package/LICENSE +21 -0
  7. package/MATURITY.md +77 -0
  8. package/README.md +279 -0
  9. package/ROADMAP.md +130 -0
  10. package/SECURITY.md +83 -0
  11. package/WORKER_MANIFEST.md +35 -0
  12. package/dist/adapters/commandcode/commandcode-cli-adapter.d.ts +10 -0
  13. package/dist/adapters/commandcode/commandcode-cli-adapter.js +57 -0
  14. package/dist/adapters/kimi/ascii-art.d.ts +1 -0
  15. package/dist/adapters/kimi/ascii-art.js +23 -0
  16. package/dist/adapters/kimi/banner.d.ts +53 -0
  17. package/dist/adapters/kimi/banner.js +284 -0
  18. package/dist/adapters/kimi/bug-filter.d.ts +15 -0
  19. package/dist/adapters/kimi/bug-filter.js +150 -0
  20. package/dist/adapters/kimi/capability.d.ts +25 -0
  21. package/dist/adapters/kimi/capability.js +68 -0
  22. package/dist/adapters/kimi/continue-prompt-guard.d.ts +20 -0
  23. package/dist/adapters/kimi/continue-prompt-guard.js +70 -0
  24. package/dist/adapters/kimi/isolated-home.d.ts +21 -0
  25. package/dist/adapters/kimi/isolated-home.js +270 -0
  26. package/dist/adapters/kimi/runner.d.ts +71 -0
  27. package/dist/adapters/kimi/runner.js +1084 -0
  28. package/dist/adapters/kimi/simple-art.d.ts +1 -0
  29. package/dist/adapters/kimi/simple-art.js +1 -0
  30. package/dist/adapters/kimi/statusline.d.ts +26 -0
  31. package/dist/adapters/kimi/statusline.js +142 -0
  32. package/dist/adapters/kimi/usage.d.ts +52 -0
  33. package/dist/adapters/kimi/usage.js +481 -0
  34. package/dist/adapters/kimi/wire-client.d.ts +142 -0
  35. package/dist/adapters/kimi/wire-client.js +725 -0
  36. package/dist/adapters/kimi/wire-protocol-types.d.ts +549 -0
  37. package/dist/adapters/kimi/wire-protocol-types.js +59 -0
  38. package/dist/adapters/opencode/opencode-cli-adapter.d.ts +9 -0
  39. package/dist/adapters/opencode/opencode-cli-adapter.js +43 -0
  40. package/dist/awareness/classifiers/browser-console-classifier.d.ts +3 -0
  41. package/dist/awareness/classifiers/browser-console-classifier.js +47 -0
  42. package/dist/awareness/classifiers/evidence-gap-classifier.d.ts +3 -0
  43. package/dist/awareness/classifiers/evidence-gap-classifier.js +31 -0
  44. package/dist/awareness/classifiers/stalled-run-classifier.d.ts +2 -0
  45. package/dist/awareness/classifiers/stalled-run-classifier.js +24 -0
  46. package/dist/awareness/notice-store.d.ts +6 -0
  47. package/dist/awareness/notice-store.js +91 -0
  48. package/dist/awareness/notice.d.ts +17 -0
  49. package/dist/awareness/notice.js +1 -0
  50. package/dist/awareness/noticer-engine.d.ts +42 -0
  51. package/dist/awareness/noticer-engine.js +63 -0
  52. package/dist/awareness/router.d.ts +6 -0
  53. package/dist/awareness/router.js +46 -0
  54. package/dist/brand/matrix-rain.d.ts +15 -0
  55. package/dist/brand/matrix-rain.js +132 -0
  56. package/dist/brand/omk-matrix-art.d.ts +1 -0
  57. package/dist/brand/omk-matrix-art.js +10 -0
  58. package/dist/brand/omk-simple-art.d.ts +7 -0
  59. package/dist/brand/omk-simple-art.js +13 -0
  60. package/dist/brand/palette.d.ts +194 -0
  61. package/dist/brand/palette.js +53 -0
  62. package/dist/brand/theme.d.ts +41 -0
  63. package/dist/brand/theme.js +262 -0
  64. package/dist/browser/browser-feedback.d.ts +10 -0
  65. package/dist/browser/browser-feedback.js +84 -0
  66. package/dist/browser/browser-observer.d.ts +21 -0
  67. package/dist/browser/browser-observer.js +159 -0
  68. package/dist/browser/browser-session.d.ts +26 -0
  69. package/dist/browser/browser-session.js +63 -0
  70. package/dist/cli/command-registry.d.ts +2 -0
  71. package/dist/cli/command-registry.js +20 -0
  72. package/dist/cli/input/argv-parser.d.ts +16 -0
  73. package/dist/cli/input/argv-parser.js +50 -0
  74. package/dist/cli/input/command-envelope.d.ts +16 -0
  75. package/dist/cli/input/command-envelope.js +64 -0
  76. package/dist/cli/input/config-loader.d.ts +16 -0
  77. package/dist/cli/input/config-loader.js +48 -0
  78. package/dist/cli/input/index.d.ts +8 -0
  79. package/dist/cli/input/index.js +8 -0
  80. package/dist/cli/input/input-resolver.d.ts +13 -0
  81. package/dist/cli/input/input-resolver.js +50 -0
  82. package/dist/cli/input/validator.d.ts +10 -0
  83. package/dist/cli/input/validator.js +37 -0
  84. package/dist/cli/main.d.ts +4 -0
  85. package/dist/cli/main.js +34 -0
  86. package/dist/cli/output/error-renderer.d.ts +10 -0
  87. package/dist/cli/output/error-renderer.js +68 -0
  88. package/dist/cli/output/hash.d.ts +1 -0
  89. package/dist/cli/output/hash.js +10 -0
  90. package/dist/cli/output/index.d.ts +9 -0
  91. package/dist/cli/output/index.js +9 -0
  92. package/dist/cli/output/json-renderer.d.ts +7 -0
  93. package/dist/cli/output/json-renderer.js +35 -0
  94. package/dist/cli/output/markdown-renderer.d.ts +5 -0
  95. package/dist/cli/output/markdown-renderer.js +86 -0
  96. package/dist/cli/output/nlp-renderer.d.ts +7 -0
  97. package/dist/cli/output/nlp-renderer.js +96 -0
  98. package/dist/cli/output/output-router.d.ts +5 -0
  99. package/dist/cli/output/output-router.js +33 -0
  100. package/dist/cli/register-awareness-commands.d.ts +2 -0
  101. package/dist/cli/register-awareness-commands.js +133 -0
  102. package/dist/cli/register-basic-commands.d.ts +2 -0
  103. package/dist/cli/register-basic-commands.js +487 -0
  104. package/dist/cli/register-integration-commands.d.ts +2 -0
  105. package/dist/cli/register-integration-commands.js +59 -0
  106. package/dist/cli/register-mcp-dag-cron-screenshot-commands.d.ts +2 -0
  107. package/dist/cli/register-mcp-dag-cron-screenshot-commands.js +273 -0
  108. package/dist/cli/register-openai-codex-commands.d.ts +2 -0
  109. package/dist/cli/register-openai-codex-commands.js +55 -0
  110. package/dist/cli/register-provider-commands.d.ts +2 -0
  111. package/dist/cli/register-provider-commands.js +244 -0
  112. package/dist/cli/register-spec-agent-goal-commands.d.ts +2 -0
  113. package/dist/cli/register-spec-agent-goal-commands.js +441 -0
  114. package/dist/cli/register-tool-commands.d.ts +2 -0
  115. package/dist/cli/register-tool-commands.js +191 -0
  116. package/dist/cli/register-workflow-commands.d.ts +2 -0
  117. package/dist/cli/register-workflow-commands.js +157 -0
  118. package/dist/cli/registry/core.d.ts +2 -0
  119. package/dist/cli/registry/core.js +27 -0
  120. package/dist/cli/registry/session.d.ts +2 -0
  121. package/dist/cli/registry/session.js +137 -0
  122. package/dist/cli/registry/system.d.ts +2 -0
  123. package/dist/cli/registry/system.js +95 -0
  124. package/dist/cli/registry/tooling.d.ts +2 -0
  125. package/dist/cli/registry/tooling.js +111 -0
  126. package/dist/cli/registry/visual.d.ts +2 -0
  127. package/dist/cli/registry/visual.js +91 -0
  128. package/dist/cli/root.d.ts +10 -0
  129. package/dist/cli/root.js +118 -0
  130. package/dist/cli/runtime/capability-selector.d.ts +18 -0
  131. package/dist/cli/runtime/capability-selector.js +208 -0
  132. package/dist/cli/runtime/cli-runtime.d.ts +10 -0
  133. package/dist/cli/runtime/cli-runtime.js +35 -0
  134. package/dist/cli/runtime/cli-writer.d.ts +18 -0
  135. package/dist/cli/runtime/cli-writer.js +87 -0
  136. package/dist/cli/runtime/command-bus.d.ts +45 -0
  137. package/dist/cli/runtime/command-bus.js +132 -0
  138. package/dist/cli/runtime/event-bus.d.ts +12 -0
  139. package/dist/cli/runtime/event-bus.js +31 -0
  140. package/dist/cli/runtime/generic-provider-adapter.d.ts +24 -0
  141. package/dist/cli/runtime/generic-provider-adapter.js +38 -0
  142. package/dist/cli/runtime/index.d.ts +17 -0
  143. package/dist/cli/runtime/index.js +18 -0
  144. package/dist/cli/runtime/intent-classifier.d.ts +16 -0
  145. package/dist/cli/runtime/intent-classifier.js +113 -0
  146. package/dist/cli/runtime/plan-controller.d.ts +7 -0
  147. package/dist/cli/runtime/plan-controller.js +29 -0
  148. package/dist/cli/runtime/provider-adapter-registry.d.ts +32 -0
  149. package/dist/cli/runtime/provider-adapter-registry.js +60 -0
  150. package/dist/cli/runtime/provider-event-normalizer.d.ts +19 -0
  151. package/dist/cli/runtime/provider-event-normalizer.js +150 -0
  152. package/dist/cli/runtime/run-controller.d.ts +7 -0
  153. package/dist/cli/runtime/run-controller.js +30 -0
  154. package/dist/cli/runtime/runtime-sidecar.d.ts +17 -0
  155. package/dist/cli/runtime/runtime-sidecar.js +138 -0
  156. package/dist/cli/runtime/task-controller.d.ts +7 -0
  157. package/dist/cli/runtime/task-controller.js +29 -0
  158. package/dist/cli/runtime/types.d.ts +312 -0
  159. package/dist/cli/runtime/types.js +6 -0
  160. package/dist/cli/theme/index.d.ts +9 -0
  161. package/dist/cli/theme/index.js +6 -0
  162. package/dist/cli/theme/terminal-capability.d.ts +18 -0
  163. package/dist/cli/theme/terminal-capability.js +88 -0
  164. package/dist/cli/theme/theme-registry.d.ts +25 -0
  165. package/dist/cli/theme/theme-registry.js +336 -0
  166. package/dist/cli/theme/theme-resolver.d.ts +12 -0
  167. package/dist/cli/theme/theme-resolver.js +38 -0
  168. package/dist/cli/ui/event.d.ts +65 -0
  169. package/dist/cli/ui/event.js +1 -0
  170. package/dist/cli/ui/green-rain-renderer.d.ts +17 -0
  171. package/dist/cli/ui/green-rain-renderer.js +96 -0
  172. package/dist/cli/ui/neon-grid-renderer.d.ts +17 -0
  173. package/dist/cli/ui/neon-grid-renderer.js +99 -0
  174. package/dist/cli/ui/plain-renderer.d.ts +37 -0
  175. package/dist/cli/ui/plain-renderer.js +160 -0
  176. package/dist/cli/ui/renderer.d.ts +7 -0
  177. package/dist/cli/ui/renderer.js +1 -0
  178. package/dist/cli/ui/rich-renderer.d.ts +32 -0
  179. package/dist/cli/ui/rich-renderer.js +234 -0
  180. package/dist/cli/ui/route-blocked-panel.d.ts +5 -0
  181. package/dist/cli/ui/route-blocked-panel.js +67 -0
  182. package/dist/cli/ui/rust-forge-renderer.d.ts +19 -0
  183. package/dist/cli/ui/rust-forge-renderer.js +129 -0
  184. package/dist/cli/ui/system24-renderer.d.ts +79 -0
  185. package/dist/cli/ui/system24-renderer.js +508 -0
  186. package/dist/cli/v2/chat-repl.d.ts +37 -0
  187. package/dist/cli/v2/chat-repl.js +280 -0
  188. package/dist/cli/v2/cli-v2-skeleton.d.ts +99 -0
  189. package/dist/cli/v2/cli-v2-skeleton.js +350 -0
  190. package/dist/cli/v2/interactive-prompt.d.ts +51 -0
  191. package/dist/cli/v2/interactive-prompt.js +187 -0
  192. package/dist/cli/v2/persistent-memory.d.ts +70 -0
  193. package/dist/cli/v2/persistent-memory.js +229 -0
  194. package/dist/cli/v2/provider-commands.d.ts +120 -0
  195. package/dist/cli/v2/provider-commands.js +244 -0
  196. package/dist/cli/v2/workflow-commands.d.ts +72 -0
  197. package/dist/cli/v2/workflow-commands.js +198 -0
  198. package/dist/cli.d.ts +2 -0
  199. package/dist/cli.js +17 -0
  200. package/dist/cockpit/git-numstat.d.ts +10 -0
  201. package/dist/cockpit/git-numstat.js +97 -0
  202. package/dist/cockpit/lsp-status.d.ts +5 -0
  203. package/dist/cockpit/lsp-status.js +51 -0
  204. package/dist/cockpit/types.d.ts +66 -0
  205. package/dist/cockpit/types.js +4 -0
  206. package/dist/cockpit/views/rail-view.d.ts +9 -0
  207. package/dist/cockpit/views/rail-view.js +160 -0
  208. package/dist/commands/agent.d.ts +6 -0
  209. package/dist/commands/agent.js +263 -0
  210. package/dist/commands/appshot.d.ts +15 -0
  211. package/dist/commands/appshot.js +122 -0
  212. package/dist/commands/auth.d.ts +43 -0
  213. package/dist/commands/auth.js +167 -0
  214. package/dist/commands/browser.d.ts +18 -0
  215. package/dist/commands/browser.js +110 -0
  216. package/dist/commands/chat/chat-turn-dag.d.ts +21 -0
  217. package/dist/commands/chat/chat-turn-dag.js +72 -0
  218. package/dist/commands/chat/core.d.ts +27 -0
  219. package/dist/commands/chat/core.js +418 -0
  220. package/dist/commands/chat/index.d.ts +5 -0
  221. package/dist/commands/chat/index.js +5 -0
  222. package/dist/commands/chat/native-root-loop.d.ts +57 -0
  223. package/dist/commands/chat/native-root-loop.js +1041 -0
  224. package/dist/commands/chat/runtime.d.ts +46 -0
  225. package/dist/commands/chat/runtime.js +395 -0
  226. package/dist/commands/chat/slash/commands/control.d.ts +2 -0
  227. package/dist/commands/chat/slash/commands/control.js +196 -0
  228. package/dist/commands/chat/slash/commands/diagnostics.d.ts +2 -0
  229. package/dist/commands/chat/slash/commands/diagnostics.js +64 -0
  230. package/dist/commands/chat/slash/commands/harness.d.ts +2 -0
  231. package/dist/commands/chat/slash/commands/harness.js +21 -0
  232. package/dist/commands/chat/slash/commands/index.d.ts +2 -0
  233. package/dist/commands/chat/slash/commands/index.js +18 -0
  234. package/dist/commands/chat/slash/commands/routing.d.ts +2 -0
  235. package/dist/commands/chat/slash/commands/routing.js +355 -0
  236. package/dist/commands/chat/slash/commands/session.d.ts +2 -0
  237. package/dist/commands/chat/slash/commands/session.js +86 -0
  238. package/dist/commands/chat/slash/commands/tool-plane.d.ts +2 -0
  239. package/dist/commands/chat/slash/commands/tool-plane.js +64 -0
  240. package/dist/commands/chat/slash/commands/ui.d.ts +2 -0
  241. package/dist/commands/chat/slash/commands/ui.js +108 -0
  242. package/dist/commands/chat/slash/context.d.ts +3 -0
  243. package/dist/commands/chat/slash/context.js +9 -0
  244. package/dist/commands/chat/slash/format.d.ts +3 -0
  245. package/dist/commands/chat/slash/format.js +19 -0
  246. package/dist/commands/chat/slash/parser.d.ts +15 -0
  247. package/dist/commands/chat/slash/parser.js +97 -0
  248. package/dist/commands/chat/slash/registry.d.ts +13 -0
  249. package/dist/commands/chat/slash/registry.js +38 -0
  250. package/dist/commands/chat/slash/result.d.ts +7 -0
  251. package/dist/commands/chat/slash/result.js +35 -0
  252. package/dist/commands/chat/slash/types.d.ts +32 -0
  253. package/dist/commands/chat/slash/types.js +1 -0
  254. package/dist/commands/chat/startup.d.ts +68 -0
  255. package/dist/commands/chat/startup.js +150 -0
  256. package/dist/commands/chat/state.d.ts +3 -0
  257. package/dist/commands/chat/state.js +100 -0
  258. package/dist/commands/chat/utils.d.ts +25 -0
  259. package/dist/commands/chat/utils.js +208 -0
  260. package/dist/commands/chat.d.ts +2 -0
  261. package/dist/commands/chat.js +2 -0
  262. package/dist/commands/cockpit/core.d.ts +5 -0
  263. package/dist/commands/cockpit/core.js +91 -0
  264. package/dist/commands/cockpit/render.d.ts +5 -0
  265. package/dist/commands/cockpit/render.js +931 -0
  266. package/dist/commands/cockpit/scroll.d.ts +39 -0
  267. package/dist/commands/cockpit/scroll.js +87 -0
  268. package/dist/commands/cockpit/telemetry.d.ts +30 -0
  269. package/dist/commands/cockpit/telemetry.js +361 -0
  270. package/dist/commands/cockpit/update-loop.d.ts +54 -0
  271. package/dist/commands/cockpit/update-loop.js +285 -0
  272. package/dist/commands/cockpit/utils.d.ts +231 -0
  273. package/dist/commands/cockpit/utils.js +388 -0
  274. package/dist/commands/cockpit.d.ts +8 -0
  275. package/dist/commands/cockpit.js +7 -0
  276. package/dist/commands/codex.d.ts +70 -0
  277. package/dist/commands/codex.js +597 -0
  278. package/dist/commands/consent.d.ts +24 -0
  279. package/dist/commands/consent.js +255 -0
  280. package/dist/commands/cron.d.ts +16 -0
  281. package/dist/commands/cron.js +187 -0
  282. package/dist/commands/dag-from-spec.d.ts +30 -0
  283. package/dist/commands/dag-from-spec.js +284 -0
  284. package/dist/commands/dag.d.ts +10 -0
  285. package/dist/commands/dag.js +467 -0
  286. package/dist/commands/design.d.ts +73 -0
  287. package/dist/commands/design.js +1251 -0
  288. package/dist/commands/diff-runs.d.ts +3 -0
  289. package/dist/commands/diff-runs.js +36 -0
  290. package/dist/commands/do.d.ts +29 -0
  291. package/dist/commands/do.js +196 -0
  292. package/dist/commands/doctor/checks.d.ts +20 -0
  293. package/dist/commands/doctor/checks.js +896 -0
  294. package/dist/commands/doctor/core.d.ts +2 -0
  295. package/dist/commands/doctor/core.js +53 -0
  296. package/dist/commands/doctor/fix-plan.d.ts +69 -0
  297. package/dist/commands/doctor/fix-plan.js +78 -0
  298. package/dist/commands/doctor/fix.d.ts +5 -0
  299. package/dist/commands/doctor/fix.js +1002 -0
  300. package/dist/commands/doctor/report.d.ts +7 -0
  301. package/dist/commands/doctor/report.js +151 -0
  302. package/dist/commands/doctor/utils.d.ts +52 -0
  303. package/dist/commands/doctor/utils.js +124 -0
  304. package/dist/commands/doctor.d.ts +2 -0
  305. package/dist/commands/doctor.js +1 -0
  306. package/dist/commands/goal.d.ts +46 -0
  307. package/dist/commands/goal.js +492 -0
  308. package/dist/commands/google.d.ts +1 -0
  309. package/dist/commands/google.js +27 -0
  310. package/dist/commands/graph.d.ts +9 -0
  311. package/dist/commands/graph.js +26 -0
  312. package/dist/commands/hud.d.ts +57 -0
  313. package/dist/commands/hud.js +1031 -0
  314. package/dist/commands/image.d.ts +16 -0
  315. package/dist/commands/image.js +102 -0
  316. package/dist/commands/init/config.d.ts +8 -0
  317. package/dist/commands/init/config.js +97 -0
  318. package/dist/commands/init/constants.d.ts +7 -0
  319. package/dist/commands/init/constants.js +49 -0
  320. package/dist/commands/init/content.d.ts +12 -0
  321. package/dist/commands/init/content.js +1783 -0
  322. package/dist/commands/init/core.d.ts +2 -0
  323. package/dist/commands/init/core.js +298 -0
  324. package/dist/commands/init/interactive.d.ts +9 -0
  325. package/dist/commands/init/interactive.js +170 -0
  326. package/dist/commands/init/scaffold.d.ts +17 -0
  327. package/dist/commands/init/scaffold.js +146 -0
  328. package/dist/commands/init/types.d.ts +35 -0
  329. package/dist/commands/init/types.js +1 -0
  330. package/dist/commands/init/utils.d.ts +13 -0
  331. package/dist/commands/init/utils.js +107 -0
  332. package/dist/commands/init.d.ts +32 -0
  333. package/dist/commands/init.js +2581 -0
  334. package/dist/commands/inspect.d.ts +9 -0
  335. package/dist/commands/inspect.js +12 -0
  336. package/dist/commands/lsp.d.ts +8 -0
  337. package/dist/commands/lsp.js +60 -0
  338. package/dist/commands/mcp.d.ts +104 -0
  339. package/dist/commands/mcp.js +1603 -0
  340. package/dist/commands/menu.d.ts +4 -0
  341. package/dist/commands/menu.js +213 -0
  342. package/dist/commands/merge.d.ts +8 -0
  343. package/dist/commands/merge.js +229 -0
  344. package/dist/commands/mode.d.ts +3 -0
  345. package/dist/commands/mode.js +60 -0
  346. package/dist/commands/model.d.ts +15 -0
  347. package/dist/commands/model.js +215 -0
  348. package/dist/commands/notice.d.ts +7 -0
  349. package/dist/commands/notice.js +76 -0
  350. package/dist/commands/open-design-agent.d.ts +46 -0
  351. package/dist/commands/open-design-agent.js +569 -0
  352. package/dist/commands/orchestrate.d.ts +18 -0
  353. package/dist/commands/orchestrate.js +284 -0
  354. package/dist/commands/parallel/core.d.ts +34 -0
  355. package/dist/commands/parallel/core.js +296 -0
  356. package/dist/commands/parallel/index.d.ts +5 -0
  357. package/dist/commands/parallel/index.js +5 -0
  358. package/dist/commands/parallel/interactive.d.ts +27 -0
  359. package/dist/commands/parallel/interactive.js +172 -0
  360. package/dist/commands/parallel/orchestrator.d.ts +40 -0
  361. package/dist/commands/parallel/orchestrator.js +564 -0
  362. package/dist/commands/parallel/utils.d.ts +12 -0
  363. package/dist/commands/parallel/utils.js +114 -0
  364. package/dist/commands/parallel/worker.d.ts +43 -0
  365. package/dist/commands/parallel/worker.js +276 -0
  366. package/dist/commands/parallel.d.ts +4 -0
  367. package/dist/commands/parallel.js +3 -0
  368. package/dist/commands/plan.d.ts +6 -0
  369. package/dist/commands/plan.js +113 -0
  370. package/dist/commands/project-index.d.ts +18 -0
  371. package/dist/commands/project-index.js +312 -0
  372. package/dist/commands/provider.d.ts +65 -0
  373. package/dist/commands/provider.js +619 -0
  374. package/dist/commands/rail.d.ts +6 -0
  375. package/dist/commands/rail.js +7 -0
  376. package/dist/commands/replay.d.ts +7 -0
  377. package/dist/commands/replay.js +10 -0
  378. package/dist/commands/research.d.ts +5 -0
  379. package/dist/commands/research.js +48 -0
  380. package/dist/commands/run.d.ts +15 -0
  381. package/dist/commands/run.js +312 -0
  382. package/dist/commands/runs.d.ts +36 -0
  383. package/dist/commands/runs.js +504 -0
  384. package/dist/commands/screenshot.d.ts +10 -0
  385. package/dist/commands/screenshot.js +72 -0
  386. package/dist/commands/skill.d.ts +28 -0
  387. package/dist/commands/skill.js +382 -0
  388. package/dist/commands/snip.d.ts +8 -0
  389. package/dist/commands/snip.js +77 -0
  390. package/dist/commands/spec.d.ts +17 -0
  391. package/dist/commands/spec.js +262 -0
  392. package/dist/commands/specify.d.ts +18 -0
  393. package/dist/commands/specify.js +111 -0
  394. package/dist/commands/star.d.ts +3 -0
  395. package/dist/commands/star.js +30 -0
  396. package/dist/commands/summary.d.ts +2 -0
  397. package/dist/commands/summary.js +343 -0
  398. package/dist/commands/sync.d.ts +6 -0
  399. package/dist/commands/sync.js +129 -0
  400. package/dist/commands/team.d.ts +7 -0
  401. package/dist/commands/team.js +264 -0
  402. package/dist/commands/verify.d.ts +4 -0
  403. package/dist/commands/verify.js +320 -0
  404. package/dist/commands/version.d.ts +6 -0
  405. package/dist/commands/version.js +83 -0
  406. package/dist/commands/web-bridge.d.ts +12 -0
  407. package/dist/commands/web-bridge.js +75 -0
  408. package/dist/commands/why.d.ts +14 -0
  409. package/dist/commands/why.js +46 -0
  410. package/dist/commands/workflow.d.ts +13 -0
  411. package/dist/commands/workflow.js +385 -0
  412. package/dist/contracts/dag.d.ts +134 -0
  413. package/dist/contracts/dag.js +4 -0
  414. package/dist/contracts/decision.d.ts +23 -0
  415. package/dist/contracts/decision.js +1 -0
  416. package/dist/contracts/envelope.d.ts +29 -0
  417. package/dist/contracts/envelope.js +1 -0
  418. package/dist/contracts/errors.d.ts +13 -0
  419. package/dist/contracts/errors.js +15 -0
  420. package/dist/contracts/evidence.d.ts +23 -0
  421. package/dist/contracts/evidence.js +1 -0
  422. package/dist/contracts/goal.d.ts +169 -0
  423. package/dist/contracts/goal.js +4 -0
  424. package/dist/contracts/hud.d.ts +17 -0
  425. package/dist/contracts/hud.js +4 -0
  426. package/dist/contracts/index.d.ts +8 -0
  427. package/dist/contracts/index.js +8 -0
  428. package/dist/contracts/orchestration.d.ts +215 -0
  429. package/dist/contracts/orchestration.js +4 -0
  430. package/dist/contracts/proof.d.ts +32 -0
  431. package/dist/contracts/proof.js +1 -0
  432. package/dist/contracts/provider.d.ts +35 -0
  433. package/dist/contracts/provider.js +1 -0
  434. package/dist/contracts/replay.d.ts +95 -0
  435. package/dist/contracts/replay.js +7 -0
  436. package/dist/contracts/run.d.ts +34 -0
  437. package/dist/contracts/run.js +1 -0
  438. package/dist/contracts/safety.d.ts +10 -0
  439. package/dist/contracts/safety.js +4 -0
  440. package/dist/contracts/version.d.ts +21 -0
  441. package/dist/contracts/version.js +1 -0
  442. package/dist/contracts/web-bridge.d.ts +95 -0
  443. package/dist/contracts/web-bridge.js +168 -0
  444. package/dist/contracts/worker-context.d.ts +70 -0
  445. package/dist/contracts/worker-context.js +1 -0
  446. package/dist/evidence/attempt-record.d.ts +78 -0
  447. package/dist/evidence/attempt-record.js +16 -0
  448. package/dist/evidence/context-snapshot.d.ts +20 -0
  449. package/dist/evidence/context-snapshot.js +81 -0
  450. package/dist/evidence/decision-trace.d.ts +14 -0
  451. package/dist/evidence/decision-trace.js +54 -0
  452. package/dist/evidence/diagnosis.d.ts +15 -0
  453. package/dist/evidence/diagnosis.js +279 -0
  454. package/dist/evidence/evidence-recorder.d.ts +19 -0
  455. package/dist/evidence/evidence-recorder.js +55 -0
  456. package/dist/evidence/index.d.ts +15 -0
  457. package/dist/evidence/index.js +7 -0
  458. package/dist/evidence/run-trace.d.ts +103 -0
  459. package/dist/evidence/run-trace.js +191 -0
  460. package/dist/goal/compiler.d.ts +5 -0
  461. package/dist/goal/compiler.js +350 -0
  462. package/dist/goal/control-loop.d.ts +109 -0
  463. package/dist/goal/control-loop.js +1089 -0
  464. package/dist/goal/ensemble-memory.d.ts +26 -0
  465. package/dist/goal/ensemble-memory.js +55 -0
  466. package/dist/goal/eval-criteria.d.ts +3 -0
  467. package/dist/goal/eval-criteria.js +72 -0
  468. package/dist/goal/evidence.d.ts +20 -0
  469. package/dist/goal/evidence.js +321 -0
  470. package/dist/goal/goal-daemon.d.ts +40 -0
  471. package/dist/goal/goal-daemon.js +318 -0
  472. package/dist/goal/intake.d.ts +48 -0
  473. package/dist/goal/intake.js +561 -0
  474. package/dist/goal/intent-analyzer.d.ts +9 -0
  475. package/dist/goal/intent-analyzer.js +322 -0
  476. package/dist/goal/intent-frame.d.ts +35 -0
  477. package/dist/goal/intent-frame.js +566 -0
  478. package/dist/goal/persistence.d.ts +11 -0
  479. package/dist/goal/persistence.js +134 -0
  480. package/dist/goal/prompt-digest.d.ts +13 -0
  481. package/dist/goal/prompt-digest.js +111 -0
  482. package/dist/goal/scoring.d.ts +2 -0
  483. package/dist/goal/scoring.js +69 -0
  484. package/dist/goal/wake-policy.d.ts +26 -0
  485. package/dist/goal/wake-policy.js +58 -0
  486. package/dist/harness/create-harness-task-runner.d.ts +43 -0
  487. package/dist/harness/create-harness-task-runner.js +56 -0
  488. package/dist/harness/execute-harness-run.d.ts +34 -0
  489. package/dist/harness/execute-harness-run.js +109 -0
  490. package/dist/hooks/events.d.ts +71 -0
  491. package/dist/hooks/events.js +1 -0
  492. package/dist/hooks/hook-bus.d.ts +13 -0
  493. package/dist/hooks/hook-bus.js +59 -0
  494. package/dist/hooks/hook-registry.d.ts +6 -0
  495. package/dist/hooks/hook-registry.js +64 -0
  496. package/dist/hooks/index.d.ts +3 -0
  497. package/dist/hooks/index.js +2 -0
  498. package/dist/hud/index.d.ts +9 -0
  499. package/dist/hud/index.js +11 -0
  500. package/dist/hud/live-renderer.d.ts +17 -0
  501. package/dist/hud/live-renderer.js +52 -0
  502. package/dist/hud/render.d.ts +62 -0
  503. package/dist/hud/render.js +954 -0
  504. package/dist/hud/types.d.ts +58 -0
  505. package/dist/hud/types.js +7 -0
  506. package/dist/input/input-artifacts.d.ts +10 -0
  507. package/dist/input/input-artifacts.js +19 -0
  508. package/dist/input/input-envelope.d.ts +64 -0
  509. package/dist/input/input-envelope.js +86 -0
  510. package/dist/integrations/servarr/adapter.d.ts +29 -0
  511. package/dist/integrations/servarr/adapter.js +156 -0
  512. package/dist/integrations/servarr/commands.d.ts +15 -0
  513. package/dist/integrations/servarr/commands.js +119 -0
  514. package/dist/integrations/servarr/schema.d.ts +34 -0
  515. package/dist/integrations/servarr/schema.js +149 -0
  516. package/dist/kimi/ascii-art.d.ts +1 -0
  517. package/dist/kimi/ascii-art.js +23 -0
  518. package/dist/kimi/banner.d.ts +53 -0
  519. package/dist/kimi/banner.js +284 -0
  520. package/dist/kimi/bug-filter.d.ts +15 -0
  521. package/dist/kimi/bug-filter.js +150 -0
  522. package/dist/kimi/capability.d.ts +25 -0
  523. package/dist/kimi/capability.js +68 -0
  524. package/dist/kimi/isolated-home.d.ts +21 -0
  525. package/dist/kimi/isolated-home.js +270 -0
  526. package/dist/kimi/runner.d.ts +74 -0
  527. package/dist/kimi/runner.js +1052 -0
  528. package/dist/kimi/simple-art.d.ts +1 -0
  529. package/dist/kimi/simple-art.js +1 -0
  530. package/dist/kimi/statusline.d.ts +26 -0
  531. package/dist/kimi/statusline.js +142 -0
  532. package/dist/kimi/usage.d.ts +52 -0
  533. package/dist/kimi/usage.js +481 -0
  534. package/dist/kimi/wire-client.d.ts +95 -0
  535. package/dist/kimi/wire-client.js +338 -0
  536. package/dist/lsp/default-config.d.ts +16 -0
  537. package/dist/lsp/default-config.js +26 -0
  538. package/dist/mcp/acp-server.d.ts +2 -0
  539. package/dist/mcp/acp-server.js +357 -0
  540. package/dist/mcp/autoconnect.d.ts +60 -0
  541. package/dist/mcp/autoconnect.js +192 -0
  542. package/dist/mcp/client.d.ts +112 -0
  543. package/dist/mcp/client.js +276 -0
  544. package/dist/mcp/config-permissions.d.ts +23 -0
  545. package/dist/mcp/config-permissions.js +66 -0
  546. package/dist/mcp/consent-flow.d.ts +152 -0
  547. package/dist/mcp/consent-flow.js +329 -0
  548. package/dist/mcp/filesystem-readonly-server.d.ts +2 -0
  549. package/dist/mcp/filesystem-readonly-server.js +320 -0
  550. package/dist/mcp/governance.d.ts +292 -0
  551. package/dist/mcp/governance.js +602 -0
  552. package/dist/mcp/host.d.ts +154 -0
  553. package/dist/mcp/host.js +792 -0
  554. package/dist/mcp/omk-project-server.d.ts +2 -0
  555. package/dist/mcp/omk-project-server.js +1632 -0
  556. package/dist/mcp/omk-web-bridge-server.d.ts +14 -0
  557. package/dist/mcp/omk-web-bridge-server.js +154 -0
  558. package/dist/mcp/permission-resolver.d.ts +67 -0
  559. package/dist/mcp/permission-resolver.js +124 -0
  560. package/dist/mcp/quality-gate.d.ts +36 -0
  561. package/dist/mcp/quality-gate.js +247 -0
  562. package/dist/mcp/quarantine.d.ts +11 -0
  563. package/dist/mcp/quarantine.js +79 -0
  564. package/dist/mcp/secret-scanner.d.ts +189 -0
  565. package/dist/mcp/secret-scanner.js +709 -0
  566. package/dist/mcp/server-catalog.d.ts +36 -0
  567. package/dist/mcp/server-catalog.js +168 -0
  568. package/dist/mcp/shared-secret-registry.d.ts +61 -0
  569. package/dist/mcp/shared-secret-registry.js +171 -0
  570. package/dist/mcp/transports/stdio.d.ts +22 -0
  571. package/dist/mcp/transports/stdio.js +165 -0
  572. package/dist/mcp/transports/streamable-http.d.ts +31 -0
  573. package/dist/mcp/transports/streamable-http.js +289 -0
  574. package/dist/mcp/transports/transport.d.ts +20 -0
  575. package/dist/mcp/transports/transport.js +3 -0
  576. package/dist/memory/embedding.d.ts +11 -0
  577. package/dist/memory/embedding.js +24 -0
  578. package/dist/memory/graph-viewer.d.ts +72 -0
  579. package/dist/memory/graph-viewer.js +402 -0
  580. package/dist/memory/kuzu-memory-store.d.ts +37 -0
  581. package/dist/memory/kuzu-memory-store.js +453 -0
  582. package/dist/memory/local-graph-memory-store.d.ts +141 -0
  583. package/dist/memory/local-graph-memory-store.js +884 -0
  584. package/dist/memory/memory-config.d.ts +51 -0
  585. package/dist/memory/memory-config.js +187 -0
  586. package/dist/memory/memory-store.d.ts +48 -0
  587. package/dist/memory/memory-store.js +210 -0
  588. package/dist/memory/ontology-model.d.ts +175 -0
  589. package/dist/memory/ontology-model.js +131 -0
  590. package/dist/native/linux-x64/omk-safety +0 -0
  591. package/dist/openai/image-client.d.ts +103 -0
  592. package/dist/openai/image-client.js +380 -0
  593. package/dist/orchestration/agent-worker.d.ts +72 -0
  594. package/dist/orchestration/agent-worker.js +278 -0
  595. package/dist/orchestration/capability-agents.d.ts +14 -0
  596. package/dist/orchestration/capability-agents.js +180 -0
  597. package/dist/orchestration/capability-routing.d.ts +42 -0
  598. package/dist/orchestration/capability-routing.js +65 -0
  599. package/dist/orchestration/compiled-dag-executor.d.ts +56 -0
  600. package/dist/orchestration/compiled-dag-executor.js +88 -0
  601. package/dist/orchestration/completion-artifacts.d.ts +37 -0
  602. package/dist/orchestration/completion-artifacts.js +84 -0
  603. package/dist/orchestration/completion-sentinel.d.ts +37 -0
  604. package/dist/orchestration/completion-sentinel.js +66 -0
  605. package/dist/orchestration/contracts/index.d.ts +45 -0
  606. package/dist/orchestration/contracts/index.js +6 -0
  607. package/dist/orchestration/dag-artifacts.d.ts +11 -0
  608. package/dist/orchestration/dag-artifacts.js +42 -0
  609. package/dist/orchestration/dag-compiler-presets.d.ts +20 -0
  610. package/dist/orchestration/dag-compiler-presets.js +476 -0
  611. package/dist/orchestration/dag-compiler-types.d.ts +40 -0
  612. package/dist/orchestration/dag-compiler-types.js +1 -0
  613. package/dist/orchestration/dag-compiler.d.ts +3 -0
  614. package/dist/orchestration/dag-compiler.js +122 -0
  615. package/dist/orchestration/dag.d.ts +158 -0
  616. package/dist/orchestration/dag.js +310 -0
  617. package/dist/orchestration/diagnostics.d.ts +27 -0
  618. package/dist/orchestration/diagnostics.js +262 -0
  619. package/dist/orchestration/enhanced-modes.d.ts +116 -0
  620. package/dist/orchestration/enhanced-modes.js +231 -0
  621. package/dist/orchestration/enhanced-parallel-orchestrator.d.ts +127 -0
  622. package/dist/orchestration/enhanced-parallel-orchestrator.js +734 -0
  623. package/dist/orchestration/ensemble-decision.d.ts +40 -0
  624. package/dist/orchestration/ensemble-decision.js +297 -0
  625. package/dist/orchestration/ensemble.d.ts +22 -0
  626. package/dist/orchestration/ensemble.js +558 -0
  627. package/dist/orchestration/eta.d.ts +10 -0
  628. package/dist/orchestration/eta.js +75 -0
  629. package/dist/orchestration/evidence-check.d.ts +36 -0
  630. package/dist/orchestration/evidence-check.js +257 -0
  631. package/dist/orchestration/evidence-gate.d.ts +34 -0
  632. package/dist/orchestration/evidence-gate.js +501 -0
  633. package/dist/orchestration/execution-planner.d.ts +40 -0
  634. package/dist/orchestration/execution-planner.js +252 -0
  635. package/dist/orchestration/executor.d.ts +11 -0
  636. package/dist/orchestration/executor.js +979 -0
  637. package/dist/orchestration/interactive-orchestrator.d.ts +134 -0
  638. package/dist/orchestration/interactive-orchestrator.js +450 -0
  639. package/dist/orchestration/log-streamer.d.ts +104 -0
  640. package/dist/orchestration/log-streamer.js +288 -0
  641. package/dist/orchestration/loop-artifacts.d.ts +14 -0
  642. package/dist/orchestration/loop-artifacts.js +20 -0
  643. package/dist/orchestration/loop-controller.d.ts +14 -0
  644. package/dist/orchestration/loop-controller.js +311 -0
  645. package/dist/orchestration/loop-guard.d.ts +28 -0
  646. package/dist/orchestration/loop-guard.js +104 -0
  647. package/dist/orchestration/loop-state.d.ts +86 -0
  648. package/dist/orchestration/loop-state.js +1 -0
  649. package/dist/orchestration/node-monitor.d.ts +18 -0
  650. package/dist/orchestration/node-monitor.js +98 -0
  651. package/dist/orchestration/orchestrate-prompt.d.ts +43 -0
  652. package/dist/orchestration/orchestrate-prompt.js +533 -0
  653. package/dist/orchestration/orchestration-state.d.ts +3 -0
  654. package/dist/orchestration/orchestration-state.js +2 -0
  655. package/dist/orchestration/parallel-orchestrator.d.ts +159 -0
  656. package/dist/orchestration/parallel-orchestrator.js +576 -0
  657. package/dist/orchestration/parallel-ui.d.ts +51 -0
  658. package/dist/orchestration/parallel-ui.js +470 -0
  659. package/dist/orchestration/repair-policy.d.ts +20 -0
  660. package/dist/orchestration/repair-policy.js +221 -0
  661. package/dist/orchestration/routing/inventory.d.ts +9 -0
  662. package/dist/orchestration/routing/inventory.js +273 -0
  663. package/dist/orchestration/routing/mcp-config.d.ts +17 -0
  664. package/dist/orchestration/routing/mcp-config.js +154 -0
  665. package/dist/orchestration/routing/types.d.ts +38 -0
  666. package/dist/orchestration/routing/types.js +4 -0
  667. package/dist/orchestration/routing.d.ts +31 -0
  668. package/dist/orchestration/routing.js +961 -0
  669. package/dist/orchestration/run-state.d.ts +36 -0
  670. package/dist/orchestration/run-state.js +176 -0
  671. package/dist/orchestration/scheduler.d.ts +9 -0
  672. package/dist/orchestration/scheduler.js +85 -0
  673. package/dist/orchestration/skill-assigner.d.ts +22 -0
  674. package/dist/orchestration/skill-assigner.js +345 -0
  675. package/dist/orchestration/state-machine/index.d.ts +3 -0
  676. package/dist/orchestration/state-machine/index.js +3 -0
  677. package/dist/orchestration/state-machine/node-state-machine.d.ts +24 -0
  678. package/dist/orchestration/state-machine/node-state-machine.js +35 -0
  679. package/dist/orchestration/state-machine/run-state-machine.d.ts +38 -0
  680. package/dist/orchestration/state-machine/run-state-machine.js +161 -0
  681. package/dist/orchestration/state-machine/run-state-manager.d.ts +108 -0
  682. package/dist/orchestration/state-machine/run-state-manager.js +314 -0
  683. package/dist/orchestration/state-persister.d.ts +7 -0
  684. package/dist/orchestration/state-persister.js +77 -0
  685. package/dist/orchestration/task-graph.d.ts +29 -0
  686. package/dist/orchestration/task-graph.js +261 -0
  687. package/dist/orchestration/verification-only.d.ts +28 -0
  688. package/dist/orchestration/verification-only.js +94 -0
  689. package/dist/providers/attempt-recorder.d.ts +10 -0
  690. package/dist/providers/attempt-recorder.js +38 -0
  691. package/dist/providers/codex-cli-runner.d.ts +11 -0
  692. package/dist/providers/codex-cli-runner.js +129 -0
  693. package/dist/providers/context-preflight.d.ts +47 -0
  694. package/dist/providers/context-preflight.js +134 -0
  695. package/dist/providers/deepseek/deepseek-balance.d.ts +29 -0
  696. package/dist/providers/deepseek/deepseek-balance.js +80 -0
  697. package/dist/providers/deepseek/deepseek-client.d.ts +53 -0
  698. package/dist/providers/deepseek/deepseek-client.js +164 -0
  699. package/dist/providers/deepseek/deepseek-config.d.ts +89 -0
  700. package/dist/providers/deepseek/deepseek-config.js +272 -0
  701. package/dist/providers/deepseek/deepseek-errors.d.ts +5 -0
  702. package/dist/providers/deepseek/deepseek-errors.js +48 -0
  703. package/dist/providers/deepseek/deepseek-provider.d.ts +10 -0
  704. package/dist/providers/deepseek/deepseek-provider.js +162 -0
  705. package/dist/providers/deepseek/deepseek-super-config.d.ts +31 -0
  706. package/dist/providers/deepseek/deepseek-super-config.js +136 -0
  707. package/dist/providers/deepseek-provider.d.ts +8 -0
  708. package/dist/providers/deepseek-provider.js +78 -0
  709. package/dist/providers/health.d.ts +13 -0
  710. package/dist/providers/health.js +55 -0
  711. package/dist/providers/index.d.ts +22 -0
  712. package/dist/providers/index.js +22 -0
  713. package/dist/providers/kimi-provider-failure.d.ts +8 -0
  714. package/dist/providers/kimi-provider-failure.js +56 -0
  715. package/dist/providers/kimi-provider.d.ts +7 -0
  716. package/dist/providers/kimi-provider.js +27 -0
  717. package/dist/providers/model-registry.d.ts +103 -0
  718. package/dist/providers/model-registry.js +571 -0
  719. package/dist/providers/model-table.d.ts +24 -0
  720. package/dist/providers/model-table.js +140 -0
  721. package/dist/providers/model-tabs.d.ts +33 -0
  722. package/dist/providers/model-tabs.js +98 -0
  723. package/dist/providers/openai-compatible-runner.d.ts +17 -0
  724. package/dist/providers/openai-compatible-runner.js +180 -0
  725. package/dist/providers/provider-router.d.ts +8 -0
  726. package/dist/providers/provider-router.js +174 -0
  727. package/dist/providers/provider-runtime.d.ts +17 -0
  728. package/dist/providers/provider-runtime.js +246 -0
  729. package/dist/providers/provider-stats.d.ts +56 -0
  730. package/dist/providers/provider-stats.js +303 -0
  731. package/dist/providers/provider-task-runner.d.ts +23 -0
  732. package/dist/providers/provider-task-runner.js +1171 -0
  733. package/dist/providers/provider.d.ts +74 -0
  734. package/dist/providers/provider.js +9 -0
  735. package/dist/providers/router.d.ts +14 -0
  736. package/dist/providers/router.js +486 -0
  737. package/dist/providers/runner/deepseek-helpers.d.ts +38 -0
  738. package/dist/providers/runner/deepseek-helpers.js +150 -0
  739. package/dist/providers/runner/env.d.ts +12 -0
  740. package/dist/providers/runner/env.js +98 -0
  741. package/dist/providers/runner/execution.d.ts +26 -0
  742. package/dist/providers/runner/execution.js +42 -0
  743. package/dist/providers/runner/helpers.d.ts +9 -0
  744. package/dist/providers/runner/helpers.js +38 -0
  745. package/dist/providers/runner/results.d.ts +26 -0
  746. package/dist/providers/runner/results.js +104 -0
  747. package/dist/providers/thinking-levels.d.ts +7 -0
  748. package/dist/providers/thinking-levels.js +67 -0
  749. package/dist/providers/types.d.ts +139 -0
  750. package/dist/providers/types.js +60 -0
  751. package/dist/replay/differ.d.ts +5 -0
  752. package/dist/replay/differ.js +314 -0
  753. package/dist/replay/index.d.ts +6 -0
  754. package/dist/replay/index.js +4 -0
  755. package/dist/replay/inspector.d.ts +14 -0
  756. package/dist/replay/inspector.js +264 -0
  757. package/dist/replay/manifest-builder.d.ts +11 -0
  758. package/dist/replay/manifest-builder.js +184 -0
  759. package/dist/replay/replay-engine.d.ts +18 -0
  760. package/dist/replay/replay-engine.js +265 -0
  761. package/dist/runtime/adapter.d.ts +77 -0
  762. package/dist/runtime/adapter.js +28 -0
  763. package/dist/runtime/agent-runtime.d.ts +123 -0
  764. package/dist/runtime/agent-runtime.js +18 -0
  765. package/dist/runtime/cache-stable-session.d.ts +55 -0
  766. package/dist/runtime/cache-stable-session.js +108 -0
  767. package/dist/runtime/capability-injection.d.ts +39 -0
  768. package/dist/runtime/capability-injection.js +93 -0
  769. package/dist/runtime/chat-advisory-runtime.d.ts +2 -0
  770. package/dist/runtime/chat-advisory-runtime.js +71 -0
  771. package/dist/runtime/child-env.d.ts +31 -0
  772. package/dist/runtime/child-env.js +131 -0
  773. package/dist/runtime/codex-cli-runtime.d.ts +10 -0
  774. package/dist/runtime/codex-cli-runtime.js +78 -0
  775. package/dist/runtime/codex-runtime.d.ts +35 -0
  776. package/dist/runtime/codex-runtime.js +264 -0
  777. package/dist/runtime/command-bus.d.ts +13 -0
  778. package/dist/runtime/command-bus.js +57 -0
  779. package/dist/runtime/context-broker-converter.d.ts +9 -0
  780. package/dist/runtime/context-broker-converter.js +96 -0
  781. package/dist/runtime/context-broker.d.ts +25 -0
  782. package/dist/runtime/context-broker.js +308 -0
  783. package/dist/runtime/context-budget-optimizer.d.ts +73 -0
  784. package/dist/runtime/context-budget-optimizer.js +300 -0
  785. package/dist/runtime/context-capsule.d.ts +81 -0
  786. package/dist/runtime/context-capsule.js +46 -0
  787. package/dist/runtime/contracts/command-envelope.d.ts +99 -0
  788. package/dist/runtime/contracts/command-envelope.js +5 -0
  789. package/dist/runtime/contracts/reasoning-trace.d.ts +120 -0
  790. package/dist/runtime/contracts/reasoning-trace.js +10 -0
  791. package/dist/runtime/contracts/shared.d.ts +34 -0
  792. package/dist/runtime/contracts/shared.js +12 -0
  793. package/dist/runtime/core-verified-preset.d.ts +37 -0
  794. package/dist/runtime/core-verified-preset.js +205 -0
  795. package/dist/runtime/debloat-nlp.d.ts +140 -0
  796. package/dist/runtime/debloat-nlp.js +398 -0
  797. package/dist/runtime/deepseek-runtime.d.ts +28 -0
  798. package/dist/runtime/deepseek-runtime.js +270 -0
  799. package/dist/runtime/external-cli-adapter.d.ts +29 -0
  800. package/dist/runtime/external-cli-adapter.js +283 -0
  801. package/dist/runtime/index.d.ts +8 -0
  802. package/dist/runtime/index.js +8 -0
  803. package/dist/runtime/kimi-api-runtime.d.ts +52 -0
  804. package/dist/runtime/kimi-api-runtime.js +367 -0
  805. package/dist/runtime/kimi-print-runtime.d.ts +10 -0
  806. package/dist/runtime/kimi-print-runtime.js +87 -0
  807. package/dist/runtime/kimi-wire-protocol-runtime.d.ts +44 -0
  808. package/dist/runtime/kimi-wire-protocol-runtime.js +436 -0
  809. package/dist/runtime/kimi-wire-runtime.d.ts +17 -0
  810. package/dist/runtime/kimi-wire-runtime.js +112 -0
  811. package/dist/runtime/legacy-bridge.d.ts +14 -0
  812. package/dist/runtime/legacy-bridge.js +27 -0
  813. package/dist/runtime/local-llm-runtime.d.ts +29 -0
  814. package/dist/runtime/local-llm-runtime.js +231 -0
  815. package/dist/runtime/mimo-api-runtime.d.ts +13 -0
  816. package/dist/runtime/mimo-api-runtime.js +24 -0
  817. package/dist/runtime/nlg-renderer.d.ts +38 -0
  818. package/dist/runtime/nlg-renderer.js +132 -0
  819. package/dist/runtime/output-router.d.ts +20 -0
  820. package/dist/runtime/output-router.js +171 -0
  821. package/dist/runtime/process-session.d.ts +27 -0
  822. package/dist/runtime/process-session.js +35 -0
  823. package/dist/runtime/prompt-envelope.d.ts +28 -0
  824. package/dist/runtime/prompt-envelope.js +78 -0
  825. package/dist/runtime/provider-event-normalizer.d.ts +117 -0
  826. package/dist/runtime/provider-event-normalizer.js +454 -0
  827. package/dist/runtime/provider-tool-contracts.d.ts +24 -0
  828. package/dist/runtime/provider-tool-contracts.js +56 -0
  829. package/dist/runtime/reasoning-trace.d.ts +46 -0
  830. package/dist/runtime/reasoning-trace.js +289 -0
  831. package/dist/runtime/renderers.d.ts +33 -0
  832. package/dist/runtime/renderers.js +221 -0
  833. package/dist/runtime/runtime-backed-task-runner.d.ts +20 -0
  834. package/dist/runtime/runtime-backed-task-runner.js +166 -0
  835. package/dist/runtime/runtime-bootstrap.d.ts +21 -0
  836. package/dist/runtime/runtime-bootstrap.js +208 -0
  837. package/dist/runtime/runtime-registry.d.ts +23 -0
  838. package/dist/runtime/runtime-registry.js +95 -0
  839. package/dist/runtime/runtime-router.d.ts +51 -0
  840. package/dist/runtime/runtime-router.js +620 -0
  841. package/dist/runtime/sandbox-profile.d.ts +25 -0
  842. package/dist/runtime/sandbox-profile.js +35 -0
  843. package/dist/runtime/slash-commands.d.ts +46 -0
  844. package/dist/runtime/slash-commands.js +321 -0
  845. package/dist/runtime/stable-json.d.ts +9 -0
  846. package/dist/runtime/stable-json.js +45 -0
  847. package/dist/runtime/tool-call-repair.d.ts +35 -0
  848. package/dist/runtime/tool-call-repair.js +181 -0
  849. package/dist/runtime/tool-dispatch-contracts.d.ts +8 -0
  850. package/dist/runtime/tool-dispatch-contracts.js +32 -0
  851. package/dist/runtime/tool-plane.d.ts +31 -0
  852. package/dist/runtime/tool-plane.js +112 -0
  853. package/dist/runtime/tool-proxy.d.ts +20 -0
  854. package/dist/runtime/tool-proxy.js +109 -0
  855. package/dist/runtime/tool-registry-contract.d.ts +40 -0
  856. package/dist/runtime/tool-registry-contract.js +52 -0
  857. package/dist/runtime/ui-components.d.ts +64 -0
  858. package/dist/runtime/ui-components.js +232 -0
  859. package/dist/runtime/worker-manifest.d.ts +34 -0
  860. package/dist/runtime/worker-manifest.js +204 -0
  861. package/dist/safety/approval-policy.d.ts +4 -0
  862. package/dist/safety/approval-policy.js +33 -0
  863. package/dist/safety/guard-hooks.d.ts +3 -0
  864. package/dist/safety/guard-hooks.js +64 -0
  865. package/dist/schema/decision.schema.d.ts +57 -0
  866. package/dist/schema/decision.schema.js +32 -0
  867. package/dist/schema/envelope.schema.d.ts +216 -0
  868. package/dist/schema/envelope.schema.js +38 -0
  869. package/dist/schema/error.schema.d.ts +51 -0
  870. package/dist/schema/error.schema.js +12 -0
  871. package/dist/schema/evidence.schema.d.ts +58 -0
  872. package/dist/schema/evidence.schema.js +31 -0
  873. package/dist/schema/index.d.ts +8 -0
  874. package/dist/schema/index.js +8 -0
  875. package/dist/schema/proof-bundle.schema.d.ts +150 -0
  876. package/dist/schema/proof-bundle.schema.js +42 -0
  877. package/dist/schema/provider.schema.d.ts +138 -0
  878. package/dist/schema/provider.schema.js +35 -0
  879. package/dist/schema/run-manifest.schema.d.ts +168 -0
  880. package/dist/schema/run-manifest.schema.js +35 -0
  881. package/dist/schema/version.schema.d.ts +64 -0
  882. package/dist/schema/version.schema.js +21 -0
  883. package/dist/theme/ansi.d.ts +15 -0
  884. package/dist/theme/ansi.js +41 -0
  885. package/dist/theme/colors.d.ts +87 -0
  886. package/dist/theme/colors.js +105 -0
  887. package/dist/theme/hud-theme.d.ts +6 -0
  888. package/dist/theme/hud-theme.js +41 -0
  889. package/dist/theme/index.d.ts +12 -0
  890. package/dist/theme/index.js +20 -0
  891. package/dist/theme/layout.d.ts +24 -0
  892. package/dist/theme/layout.js +139 -0
  893. package/dist/theme/metrics.d.ts +23 -0
  894. package/dist/theme/metrics.js +93 -0
  895. package/dist/theme/parallel.d.ts +68 -0
  896. package/dist/theme/parallel.js +345 -0
  897. package/dist/theme/working-indicator.d.ts +38 -0
  898. package/dist/theme/working-indicator.js +149 -0
  899. package/dist/tui/model.d.ts +28 -0
  900. package/dist/tui/model.js +1 -0
  901. package/dist/tui/terminal-frame-renderer.d.ts +19 -0
  902. package/dist/tui/terminal-frame-renderer.js +60 -0
  903. package/dist/tui/views/capabilities-view.d.ts +3 -0
  904. package/dist/tui/views/capabilities-view.js +13 -0
  905. package/dist/tui/views/common.d.ts +11 -0
  906. package/dist/tui/views/common.js +35 -0
  907. package/dist/tui/views/dag-view.d.ts +3 -0
  908. package/dist/tui/views/dag-view.js +12 -0
  909. package/dist/tui/views/evidence-view.d.ts +3 -0
  910. package/dist/tui/views/evidence-view.js +18 -0
  911. package/dist/tui/views/index.d.ts +4 -0
  912. package/dist/tui/views/index.js +3 -0
  913. package/dist/ui/omk-sigil.d.ts +13 -0
  914. package/dist/ui/omk-sigil.js +277 -0
  915. package/dist/ui/omk-working-sweep.d.ts +61 -0
  916. package/dist/ui/omk-working-sweep.js +416 -0
  917. package/dist/util/agent-schema.d.ts +24 -0
  918. package/dist/util/agent-schema.js +293 -0
  919. package/dist/util/appshot-store.d.ts +68 -0
  920. package/dist/util/appshot-store.js +506 -0
  921. package/dist/util/chat-agent-mode.d.ts +173 -0
  922. package/dist/util/chat-agent-mode.js +905 -0
  923. package/dist/util/chat-cockpit.d.ts +45 -0
  924. package/dist/util/chat-cockpit.js +293 -0
  925. package/dist/util/chat-startup.d.ts +35 -0
  926. package/dist/util/chat-startup.js +330 -0
  927. package/dist/util/chat-state.d.ts +27 -0
  928. package/dist/util/chat-state.js +105 -0
  929. package/dist/util/checkpoint.d.ts +21 -0
  930. package/dist/util/checkpoint.js +238 -0
  931. package/dist/util/cli-contract.d.ts +46 -0
  932. package/dist/util/cli-contract.js +72 -0
  933. package/dist/util/cron-engine.d.ts +24 -0
  934. package/dist/util/cron-engine.js +227 -0
  935. package/dist/util/events-logger.d.ts +30 -0
  936. package/dist/util/events-logger.js +135 -0
  937. package/dist/util/execution-selection.d.ts +13 -0
  938. package/dist/util/execution-selection.js +82 -0
  939. package/dist/util/first-run-star.d.ts +49 -0
  940. package/dist/util/first-run-star.js +223 -0
  941. package/dist/util/fs.d.ts +128 -0
  942. package/dist/util/fs.js +1757 -0
  943. package/dist/util/git.d.ts +11 -0
  944. package/dist/util/git.js +39 -0
  945. package/dist/util/help-text.d.ts +1 -0
  946. package/dist/util/help-text.js +60 -0
  947. package/dist/util/i18n.d.ts +10 -0
  948. package/dist/util/i18n.js +848 -0
  949. package/dist/util/json-envelope.d.ts +15 -0
  950. package/dist/util/json-envelope.js +28 -0
  951. package/dist/util/mcp-preflight.d.ts +26 -0
  952. package/dist/util/mcp-preflight.js +29 -0
  953. package/dist/util/mode-preset.d.ts +29 -0
  954. package/dist/util/mode-preset.js +222 -0
  955. package/dist/util/mode-selector.d.ts +6 -0
  956. package/dist/util/mode-selector.js +74 -0
  957. package/dist/util/native-safety.d.ts +28 -0
  958. package/dist/util/native-safety.js +118 -0
  959. package/dist/util/output-buffer.d.ts +12 -0
  960. package/dist/util/output-buffer.js +59 -0
  961. package/dist/util/process-tree.d.ts +18 -0
  962. package/dist/util/process-tree.js +102 -0
  963. package/dist/util/project-root.d.ts +27 -0
  964. package/dist/util/project-root.js +382 -0
  965. package/dist/util/provider-usage.d.ts +2 -0
  966. package/dist/util/provider-usage.js +1 -0
  967. package/dist/util/reasoning-nlp.d.ts +84 -0
  968. package/dist/util/reasoning-nlp.js +325 -0
  969. package/dist/util/resource-profile.d.ts +32 -0
  970. package/dist/util/resource-profile.js +219 -0
  971. package/dist/util/run-store.d.ts +38 -0
  972. package/dist/util/run-store.js +151 -0
  973. package/dist/util/run-view-model.d.ts +111 -0
  974. package/dist/util/run-view-model.js +333 -0
  975. package/dist/util/runtime-profile.d.ts +34 -0
  976. package/dist/util/runtime-profile.js +149 -0
  977. package/dist/util/runtime-scope.d.ts +2 -0
  978. package/dist/util/runtime-scope.js +19 -0
  979. package/dist/util/scoped-agent-file.d.ts +47 -0
  980. package/dist/util/scoped-agent-file.js +121 -0
  981. package/dist/util/screenshot-store.d.ts +35 -0
  982. package/dist/util/screenshot-store.js +310 -0
  983. package/dist/util/secret-mask.d.ts +5 -0
  984. package/dist/util/secret-mask.js +41 -0
  985. package/dist/util/session.d.ts +19 -0
  986. package/dist/util/session.js +80 -0
  987. package/dist/util/shell.d.ts +30 -0
  988. package/dist/util/shell.js +350 -0
  989. package/dist/util/snippet.d.ts +17 -0
  990. package/dist/util/snippet.js +110 -0
  991. package/dist/util/sync-manifest.d.ts +13 -0
  992. package/dist/util/sync-manifest.js +22 -0
  993. package/dist/util/terminal-input.d.ts +25 -0
  994. package/dist/util/terminal-input.js +35 -0
  995. package/dist/util/terminal-layout.d.ts +18 -0
  996. package/dist/util/terminal-layout.js +108 -0
  997. package/dist/util/terminal-owner.d.ts +19 -0
  998. package/dist/util/terminal-owner.js +64 -0
  999. package/dist/util/theme.d.ts +9 -0
  1000. package/dist/util/theme.js +9 -0
  1001. package/dist/util/timeout-config.d.ts +18 -0
  1002. package/dist/util/timeout-config.js +101 -0
  1003. package/dist/util/todo-sync.d.ts +58 -0
  1004. package/dist/util/todo-sync.js +473 -0
  1005. package/dist/util/update-check.d.ts +89 -0
  1006. package/dist/util/update-check.js +321 -0
  1007. package/dist/util/usage-view-model.d.ts +22 -0
  1008. package/dist/util/usage-view-model.js +57 -0
  1009. package/dist/util/user-visible-output.d.ts +19 -0
  1010. package/dist/util/user-visible-output.js +48 -0
  1011. package/dist/util/version.d.ts +4 -0
  1012. package/dist/util/version.js +51 -0
  1013. package/dist/util/worktree.d.ts +10 -0
  1014. package/dist/util/worktree.js +165 -0
  1015. package/dist/ux/explain-loop-decision.d.ts +4 -0
  1016. package/dist/ux/explain-loop-decision.js +55 -0
  1017. package/dist/ux/intent-router.d.ts +15 -0
  1018. package/dist/ux/intent-router.js +64 -0
  1019. package/dist/ux/natural-entrypoint.d.ts +21 -0
  1020. package/dist/ux/natural-entrypoint.js +122 -0
  1021. package/dist/version.d.ts +11 -0
  1022. package/dist/version.js +18 -0
  1023. package/dist/web-bridge/host.d.ts +8 -0
  1024. package/dist/web-bridge/host.js +109 -0
  1025. package/dist/web-bridge/native-host.d.ts +6 -0
  1026. package/dist/web-bridge/native-host.js +40 -0
  1027. package/dist/web-bridge/status.d.ts +84 -0
  1028. package/dist/web-bridge/status.js +201 -0
  1029. package/docs/2026-05-01-16gb-lite-mode.md +37 -0
  1030. package/docs/2026-05-01-critical-issues-and-improvements.md +361 -0
  1031. package/docs/2026-05-01-dag-ensemble-runtime.md +74 -0
  1032. package/docs/2026-05-02-p1-p2-hardening-handoff.md +139 -0
  1033. package/docs/2026-05-05-adjustable-timeouts-and-cron-jobs.md +252 -0
  1034. package/docs/2026-05-08-omk-hardening-plan.md +62 -0
  1035. package/docs/2026-05-14/critical-issues.md +20 -0
  1036. package/docs/2026-05-14/improvements.md +14 -0
  1037. package/docs/2026-05-14/init-checklist.md +25 -0
  1038. package/docs/2026-05-14/plan.md +20 -0
  1039. package/docs/2026-05-15/critical-issues.md +20 -0
  1040. package/docs/2026-05-15/improvements.md +14 -0
  1041. package/docs/2026-05-15/init-checklist.md +25 -0
  1042. package/docs/2026-05-15/plan.md +20 -0
  1043. package/docs/2026-05-16/critical-issues.md +20 -0
  1044. package/docs/2026-05-16/improvements.md +14 -0
  1045. package/docs/2026-05-16/init-checklist.md +25 -0
  1046. package/docs/2026-05-16/plan.md +20 -0
  1047. package/docs/2026-05-17/critical-issues.md +20 -0
  1048. package/docs/2026-05-17/improvements.md +14 -0
  1049. package/docs/2026-05-17/init-checklist.md +25 -0
  1050. package/docs/2026-05-17/plan.md +20 -0
  1051. package/docs/2026-05-18/improvements.md +14 -0
  1052. package/docs/2026-05-18/init-checklist.md +25 -0
  1053. package/docs/2026-05-18/plan.md +20 -0
  1054. package/docs/2026-05-18-critical-issues-and-improvements.md +441 -0
  1055. package/docs/2026-05-18-project-direction.md +223 -0
  1056. package/docs/2026-05-19/critical-issues.md +20 -0
  1057. package/docs/2026-05-19/improvements.md +14 -0
  1058. package/docs/2026-05-19/init-checklist.md +25 -0
  1059. package/docs/2026-05-19/plan.md +20 -0
  1060. package/docs/2026-05-20/critical-issues.md +20 -0
  1061. package/docs/2026-05-20/improvements.md +14 -0
  1062. package/docs/2026-05-20/init-checklist.md +25 -0
  1063. package/docs/2026-05-20/plan.md +20 -0
  1064. package/docs/2026-05-21/critical-issues.md +20 -0
  1065. package/docs/2026-05-21/improvements.md +14 -0
  1066. package/docs/2026-05-21/init-checklist.md +25 -0
  1067. package/docs/2026-05-21/plan.md +20 -0
  1068. package/docs/2026-05-22/critical-issues.md +20 -0
  1069. package/docs/2026-05-22/improvements.md +14 -0
  1070. package/docs/2026-05-22/init-checklist.md +25 -0
  1071. package/docs/2026-05-22/plan.md +20 -0
  1072. package/docs/2026-05-23/critical-issues.md +20 -0
  1073. package/docs/2026-05-23/improvements.md +14 -0
  1074. package/docs/2026-05-23/init-checklist.md +25 -0
  1075. package/docs/2026-05-23/plan.md +20 -0
  1076. package/docs/2026-05-24/critical-issues.md +30 -0
  1077. package/docs/2026-05-24/improvements.md +23 -0
  1078. package/docs/2026-05-24/init-checklist.md +25 -0
  1079. package/docs/2026-05-24/plan.md +22 -0
  1080. package/docs/2026-05-25/critical-issues.md +20 -0
  1081. package/docs/2026-05-25/improvements.md +14 -0
  1082. package/docs/2026-05-25/init-checklist.md +25 -0
  1083. package/docs/2026-05-25/plan.md +20 -0
  1084. package/docs/2026-05-26/critical-issues.md +20 -0
  1085. package/docs/2026-05-26/improvements.md +14 -0
  1086. package/docs/2026-05-26/init-checklist.md +25 -0
  1087. package/docs/2026-05-26/plan.md +20 -0
  1088. package/docs/2026-05-27/critical-issues.md +20 -0
  1089. package/docs/2026-05-27/improvements.md +14 -0
  1090. package/docs/2026-05-27/init-checklist.md +25 -0
  1091. package/docs/2026-05-27/plan.md +20 -0
  1092. package/docs/2026-05-28/critical-issues.md +20 -0
  1093. package/docs/2026-05-28/improvements.md +14 -0
  1094. package/docs/2026-05-28/init-checklist.md +25 -0
  1095. package/docs/2026-05-28/plan.md +20 -0
  1096. package/docs/2026-05-29/critical-issues.md +20 -0
  1097. package/docs/2026-05-29/improvements.md +14 -0
  1098. package/docs/2026-05-29/init-checklist.md +25 -0
  1099. package/docs/2026-05-29/plan.md +20 -0
  1100. package/docs/2026-05-30/critical-issues.md +20 -0
  1101. package/docs/2026-05-30/improvements.md +14 -0
  1102. package/docs/2026-05-30/init-checklist.md +25 -0
  1103. package/docs/2026-05-30/plan.md +20 -0
  1104. package/docs/2026-05-31/critical-issues.md +20 -0
  1105. package/docs/2026-05-31/improvements.md +14 -0
  1106. package/docs/2026-05-31/init-checklist.md +25 -0
  1107. package/docs/2026-05-31/plan.md +20 -0
  1108. package/docs/2026-06-01/critical-issues.md +20 -0
  1109. package/docs/2026-06-01/improvements.md +14 -0
  1110. package/docs/2026-06-01/init-checklist.md +25 -0
  1111. package/docs/2026-06-01/plan.md +20 -0
  1112. package/docs/2026-06-02/critical-issues.md +20 -0
  1113. package/docs/2026-06-02/improvements.md +14 -0
  1114. package/docs/2026-06-02/init-checklist.md +25 -0
  1115. package/docs/2026-06-02/plan.md +20 -0
  1116. package/docs/2026-06-03/critical-issues.md +20 -0
  1117. package/docs/2026-06-03/improvements.md +14 -0
  1118. package/docs/2026-06-03/init-checklist.md +25 -0
  1119. package/docs/2026-06-03/plan.md +20 -0
  1120. package/docs/2026-06-04/critical-issues.md +20 -0
  1121. package/docs/2026-06-04/improvements.md +14 -0
  1122. package/docs/2026-06-04/init-checklist.md +25 -0
  1123. package/docs/2026-06-04/plan.md +20 -0
  1124. package/docs/2026-06-05/critical-issues.md +20 -0
  1125. package/docs/2026-06-05/improvements.md +14 -0
  1126. package/docs/2026-06-05/init-checklist.md +25 -0
  1127. package/docs/2026-06-05/plan.md +20 -0
  1128. package/docs/2026-06-06/critical-issues.md +20 -0
  1129. package/docs/2026-06-06/improvements.md +14 -0
  1130. package/docs/2026-06-06/init-checklist.md +25 -0
  1131. package/docs/2026-06-06/plan.md +20 -0
  1132. package/docs/2026-06-07/critical-issues.md +20 -0
  1133. package/docs/2026-06-07/improvements.md +14 -0
  1134. package/docs/2026-06-07/init-checklist.md +25 -0
  1135. package/docs/2026-06-07/plan.md +20 -0
  1136. package/docs/GSTACK_MIGRATION.md +169 -0
  1137. package/docs/OMK_CLI_V2_RUNTIME_ARCHITECTURE.md +2058 -0
  1138. package/docs/cli-v2-migration.md +87 -0
  1139. package/docs/codex-oauth-setup.md +48 -0
  1140. package/docs/demo/verified-run/README.md +32 -0
  1141. package/docs/demo/verified-run/artifacts/README.md +18 -0
  1142. package/docs/demo/verified-run/capture-plan.md +51 -0
  1143. package/docs/demo/verified-run/generated-diff.md +27 -0
  1144. package/docs/demo/verified-run/raw-prompt.md +21 -0
  1145. package/docs/demo/verified-run/video-shot-list.md +14 -0
  1146. package/docs/design-md.md +35 -0
  1147. package/docs/getting-started.md +37 -0
  1148. package/docs/hud-and-parallel-ux.md +155 -0
  1149. package/docs/kimi-oauth-usage-status.md +33 -0
  1150. package/docs/kimi-okabe-dmail.md +44 -0
  1151. package/docs/local-graph-memory.md +102 -0
  1152. package/docs/lsp.md +48 -0
  1153. package/docs/mcp-ontology-proposal.md +12 -0
  1154. package/docs/native-root-runtime-algorithms.md +402 -0
  1155. package/docs/native-root-runtime-hardening.md +131 -0
  1156. package/docs/neo4j-memory.md +5 -0
  1157. package/docs/openai-platform-image-keys.md +23 -0
  1158. package/docs/phase1-final-report.md +154 -0
  1159. package/docs/provider-maturity.md +44 -0
  1160. package/docs/runtime-architecture.md +89 -0
  1161. package/docs/versioning.md +49 -0
  1162. package/llms.txt +38 -0
  1163. package/package.json +188 -0
  1164. package/readmeasset/.npmignore +20 -0
  1165. package/readmeasset/ASSET_INDEX.md +36 -0
  1166. package/readmeasset/ASSET_PROVENANCE.md +94 -0
  1167. package/readmeasset/omk-control.webp +0 -0
  1168. package/readmeasset/omk-core-loop.svg +25 -0
  1169. package/readmeasset/omk-evidence-gate-card.png +0 -0
  1170. package/readmeasset/omk-github-banner.webp +0 -0
  1171. package/readmeasset/omk-github-header.webp +0 -0
  1172. package/readmeasset/omk-install-card.png +0 -0
  1173. package/readmeasset/omk-logo-512.png +0 -0
  1174. package/readmeasset/omk-logo-mark.svg +7 -0
  1175. package/readmeasset/omk-provider-router-card.png +0 -0
  1176. package/readmeasset/omk-runtime-flow-0.78.0.webp +0 -0
  1177. package/readmeasset/omk-social-preview.png +0 -0
  1178. package/readmeasset/omk-tui-0.78.0.webp +0 -0
  1179. package/readmeasset/omk_tui.png +0 -0
  1180. package/templates/.kimi/AGENTS.md +93 -0
  1181. package/templates/.omk/agents/okabe.yaml +30 -0
  1182. package/templates/.omk/agents/roles/aggregator.yaml +13 -0
  1183. package/templates/.omk/agents/roles/architect.yaml +13 -0
  1184. package/templates/.omk/agents/roles/coder.yaml +9 -0
  1185. package/templates/.omk/agents/roles/explorer.yaml +13 -0
  1186. package/templates/.omk/agents/roles/integrator.yaml +13 -0
  1187. package/templates/.omk/agents/roles/interviewer.yaml +13 -0
  1188. package/templates/.omk/agents/roles/ontology.yaml +18 -0
  1189. package/templates/.omk/agents/roles/planner.yaml +13 -0
  1190. package/templates/.omk/agents/roles/qa.yaml +12 -0
  1191. package/templates/.omk/agents/roles/researcher.yaml +13 -0
  1192. package/templates/.omk/agents/roles/reviewer.yaml +13 -0
  1193. package/templates/.omk/agents/roles/router.yaml +13 -0
  1194. package/templates/.omk/agents/roles/security.yaml +12 -0
  1195. package/templates/.omk/agents/roles/tester.yaml +12 -0
  1196. package/templates/.omk/agents/roles/vision-debugger.yaml +12 -0
  1197. package/templates/.omk/agents/root.yaml +62 -0
  1198. package/templates/.omk/lsp.json +27 -0
  1199. package/templates/.omk/prompts/root.md +74 -0
  1200. package/templates/AGENTS.md +510 -0
  1201. package/templates/skills/agents/agentmemory/SKILL.md +40 -0
  1202. package/templates/skills/agents/andrej-karpathy-skills/SKILL.md +41 -0
  1203. package/templates/skills/agents/claude-for-legal/SKILL.md +63 -0
  1204. package/templates/skills/agents/claude-for-legal/references/workflow-catalog.md +38 -0
  1205. package/templates/skills/agents/matt-pocock-skills/SKILL.md +40 -0
  1206. package/templates/skills/agents/multica/SKILL.md +40 -0
  1207. package/templates/skills/agents/omk-adaptorch-orchestration-review/SKILL.md +52 -0
  1208. package/templates/skills/agents/omk-backend-api-review/SKILL.md +30 -0
  1209. package/templates/skills/agents/omk-code-review/SKILL.md +40 -0
  1210. package/templates/skills/agents/omk-context-broker/SKILL.md +57 -0
  1211. package/templates/skills/agents/omk-control-loop-debugger/SKILL.md +49 -0
  1212. package/templates/skills/agents/omk-design-system/SKILL.md +22 -0
  1213. package/templates/skills/agents/omk-docs-release/SKILL.md +42 -0
  1214. package/templates/skills/agents/omk-evidence-contract/SKILL.md +52 -0
  1215. package/templates/skills/agents/omk-frontend-implementation/SKILL.md +13 -0
  1216. package/templates/skills/agents/omk-frontend-ui-review/SKILL.md +29 -0
  1217. package/templates/skills/agents/omk-git-commit-pr/SKILL.md +45 -0
  1218. package/templates/skills/agents/omk-industrial-control-loop/SKILL.md +33 -0
  1219. package/templates/skills/agents/omk-plan-first/SKILL.md +39 -0
  1220. package/templates/skills/agents/omk-project-rules/SKILL.md +46 -0
  1221. package/templates/skills/agents/omk-python-typing/SKILL.md +33 -0
  1222. package/templates/skills/agents/omk-quality-gate/SKILL.md +54 -0
  1223. package/templates/skills/agents/omk-repo-explorer/SKILL.md +33 -0
  1224. package/templates/skills/agents/omk-research-verify/SKILL.md +30 -0
  1225. package/templates/skills/agents/omk-secret-guard/SKILL.md +23 -0
  1226. package/templates/skills/agents/omk-security-review/SKILL.md +49 -0
  1227. package/templates/skills/agents/omk-test-debug-loop/SKILL.md +43 -0
  1228. package/templates/skills/agents/omk-troubleshooting/SKILL.md +14 -0
  1229. package/templates/skills/agents/omk-typescript-strict/SKILL.md +38 -0
  1230. package/templates/skills/agents/omk-worktree-team/SKILL.md +44 -0
  1231. package/templates/skills/agents/react-doctor/SKILL.md +46 -0
  1232. package/templates/skills/kimi/agentmemory/SKILL.md +40 -0
  1233. package/templates/skills/kimi/andrej-karpathy-skills/SKILL.md +41 -0
  1234. package/templates/skills/kimi/awesome-design-md/SKILL.md +54 -0
  1235. package/templates/skills/kimi/claude-for-legal/SKILL.md +63 -0
  1236. package/templates/skills/kimi/claude-for-legal/references/workflow-catalog.md +38 -0
  1237. package/templates/skills/kimi/deepseek-api/SKILL.md +27 -0
  1238. package/templates/skills/kimi/deepseek-disable/SKILL.md +20 -0
  1239. package/templates/skills/kimi/deepseek-enable/SKILL.md +20 -0
  1240. package/templates/skills/kimi/deepseekset/SKILL.md +27 -0
  1241. package/templates/skills/kimi/graph-view/SKILL.md +29 -0
  1242. package/templates/skills/kimi/matt-pocock-skills/SKILL.md +40 -0
  1243. package/templates/skills/kimi/mcp-install/SKILL.md +66 -0
  1244. package/templates/skills/kimi/multica/SKILL.md +40 -0
  1245. package/templates/skills/kimi/omk-adaptorch-orchestration-review/SKILL.md +52 -0
  1246. package/templates/skills/kimi/omk-backend-api-review/SKILL.md +30 -0
  1247. package/templates/skills/kimi/omk-code-review/SKILL.md +34 -0
  1248. package/templates/skills/kimi/omk-context-broker/SKILL.md +57 -0
  1249. package/templates/skills/kimi/omk-control-loop-debugger/SKILL.md +49 -0
  1250. package/templates/skills/kimi/omk-design-md/SKILL.md +55 -0
  1251. package/templates/skills/kimi/omk-design-system/SKILL.md +22 -0
  1252. package/templates/skills/kimi/omk-docs-release/SKILL.md +42 -0
  1253. package/templates/skills/kimi/omk-evidence-contract/SKILL.md +52 -0
  1254. package/templates/skills/kimi/omk-flow-bugfix/SKILL.md +20 -0
  1255. package/templates/skills/kimi/omk-flow-design-to-code/SKILL.md +23 -0
  1256. package/templates/skills/kimi/omk-flow-feature-dev/SKILL.md +24 -0
  1257. package/templates/skills/kimi/omk-flow-pr-review/SKILL.md +17 -0
  1258. package/templates/skills/kimi/omk-flow-refactor/SKILL.md +21 -0
  1259. package/templates/skills/kimi/omk-flow-release/SKILL.md +20 -0
  1260. package/templates/skills/kimi/omk-flow-team-run/SKILL.md +24 -0
  1261. package/templates/skills/kimi/omk-frontend-implementation/SKILL.md +13 -0
  1262. package/templates/skills/kimi/omk-frontend-ui-review/SKILL.md +29 -0
  1263. package/templates/skills/kimi/omk-git-commit-pr/SKILL.md +45 -0
  1264. package/templates/skills/kimi/omk-global-rules/SKILL.md +31 -0
  1265. package/templates/skills/kimi/omk-industrial-control-loop/SKILL.md +33 -0
  1266. package/templates/skills/kimi/omk-kimi-runtime/SKILL.md +46 -0
  1267. package/templates/skills/kimi/omk-multimodal-ui-review/SKILL.md +26 -0
  1268. package/templates/skills/kimi/omk-plan-first/SKILL.md +39 -0
  1269. package/templates/skills/kimi/omk-project-rules/SKILL.md +21 -0
  1270. package/templates/skills/kimi/omk-python-typing/SKILL.md +33 -0
  1271. package/templates/skills/kimi/omk-quality-gate/SKILL.md +36 -0
  1272. package/templates/skills/kimi/omk-repo-explorer/SKILL.md +33 -0
  1273. package/templates/skills/kimi/omk-research-verify/SKILL.md +30 -0
  1274. package/templates/skills/kimi/omk-secret-guard/SKILL.md +23 -0
  1275. package/templates/skills/kimi/omk-security-review/SKILL.md +49 -0
  1276. package/templates/skills/kimi/omk-task-router/SKILL.md +27 -0
  1277. package/templates/skills/kimi/omk-test-debug-loop/SKILL.md +43 -0
  1278. package/templates/skills/kimi/omk-typescript-strict/SKILL.md +38 -0
  1279. package/templates/skills/kimi/omk-worktree-team/SKILL.md +44 -0
  1280. package/templates/skills/kimi/open-design/SKILL.md +56 -0
  1281. package/templates/skills/kimi/provider/SKILL.md +47 -0
  1282. package/templates/skills/kimi/react-doctor/SKILL.md +46 -0
  1283. package/templates/skills/kimi/speckit-analyze/SKILL.md +255 -0
  1284. package/templates/skills/kimi/speckit-checklist/SKILL.md +367 -0
  1285. package/templates/skills/kimi/speckit-clarify/SKILL.md +249 -0
  1286. package/templates/skills/kimi/speckit-constitution/SKILL.md +152 -0
  1287. package/templates/skills/kimi/speckit-implement/SKILL.md +204 -0
  1288. package/templates/skills/kimi/speckit-plan/SKILL.md +147 -0
  1289. package/templates/skills/kimi/speckit-specify/SKILL.md +325 -0
  1290. package/templates/skills/kimi/speckit-tasks/SKILL.md +197 -0
  1291. package/templates/skills/kimi/speckit-taskstoissues/SKILL.md +101 -0
  1292. package/templates/skills/kimi/think/SKILL.md +41 -0
  1293. package/templates/spec-kit-omk-preset/commands/plan.md +21 -0
  1294. package/templates/spec-kit-omk-preset/commands/tasks.md +21 -0
  1295. package/templates/spec-kit-omk-preset/preset.yml +12 -0
  1296. package/templates/spec-kit-omk-preset/templates/plan-template.md +75 -0
  1297. package/templates/spec-kit-omk-preset/templates/spec-template.md +80 -0
  1298. package/templates/spec-kit-omk-preset/templates/tasks-template.md +160 -0
  1299. package/templates/web-bridge/chrome-extension/README.md +18 -0
  1300. package/templates/web-bridge/chrome-extension/background.js +57 -0
  1301. package/templates/web-bridge/chrome-extension/content-script.js +46 -0
  1302. package/templates/web-bridge/chrome-extension/manifest.json +16 -0
  1303. package/templates/web-bridge/chrome-extension/popup.html +21 -0
  1304. package/templates/web-bridge/chrome-extension/popup.js +9 -0
@@ -0,0 +1,1031 @@
1
+ import { readdir, readFile, stat as fsStat } from "fs/promises";
2
+ import { join } from "path";
3
+ import { execFile, execSync } from "child_process";
4
+ import { promisify } from "util";
5
+ import { getOmkPath, pathExists, getProjectRoot, getRunPath, getRunsDir } from "../util/fs.js";
6
+ import { getProviderUsage } from "../util/provider-usage.js";
7
+ import { buildUsageViewModel } from "../util/usage-view-model.js";
8
+ import { getOmkResourceSettings } from "../util/resource-profile.js";
9
+ import { formatBytes } from "../util/output-buffer.js";
10
+ import { formatOmkVersionFooter } from "../util/version.js";
11
+ import { t } from "../util/i18n.js";
12
+ import { parseRunStateResult, buildRunViewModel, renderRunSummary, sanitizeForDisplay, } from "../util/run-view-model.js";
13
+ import { style, status, panel, gauge, stat, omkHudHeader, gradient, getSystemUsage, separator, padEndAnsi, sanitizeTerminalText, } from "../util/theme.js";
14
+ import { loadTodos } from "../util/todo-sync.js";
15
+ import { readSessionMeta } from "../util/session.js";
16
+ const execFileAsync = promisify(execFile);
17
+ function formatUptime(seconds) {
18
+ const h = Math.floor(seconds / 3600);
19
+ const m = Math.floor((seconds % 3600) / 60);
20
+ const s = seconds % 60;
21
+ return `${h}h ${m}m ${s}s`;
22
+ }
23
+ function getDiskUsage() {
24
+ try {
25
+ const raw = execSync("df -k .", { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"], timeout: 5000 });
26
+ const line = raw.trim().split("\n").pop();
27
+ if (!line)
28
+ return null;
29
+ const parts = line.trim().split(/\s+/);
30
+ if (parts.length < 6)
31
+ return null;
32
+ const total = parseInt(parts[1], 10) * 1024;
33
+ const used = parseInt(parts[2], 10) * 1024;
34
+ const percent = Math.round((used / total) * 100);
35
+ return { used, total, percent };
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ export function parseGitStatusPorcelain(output) {
42
+ return output
43
+ .split(/\r?\n/)
44
+ .map((line) => line.trimEnd())
45
+ .filter(Boolean)
46
+ .map((line) => {
47
+ const statusCode = line.slice(0, 2);
48
+ const rawPath = line.slice(3).trim();
49
+ const renamedPath = rawPath.includes(" -> ") ? rawPath.split(" -> ").pop() ?? rawPath : rawPath;
50
+ return {
51
+ status: statusCode.trim() || statusCode,
52
+ path: renamedPath.replace(/^"|"$/g, ""),
53
+ };
54
+ });
55
+ }
56
+ async function getGitChanges(root) {
57
+ try {
58
+ const { stdout } = await execFileAsync("git", ["status", "--porcelain=v1", "--untracked-files=normal"], {
59
+ cwd: root,
60
+ timeout: 5000,
61
+ maxBuffer: 1024 * 1024,
62
+ encoding: "utf-8",
63
+ });
64
+ return parseGitStatusPorcelain(String(stdout));
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ function lineWidth(line) {
71
+ return sanitizeTerminalText(line).length;
72
+ }
73
+ function blockWidth(block) {
74
+ return Math.max(0, ...block.split("\n").map(lineWidth));
75
+ }
76
+ function truncateText(value, maxLength) {
77
+ const clean = sanitizeTerminalText(value).replace(/\s+/g, " ").trim();
78
+ const chars = [...clean];
79
+ if (chars.length <= maxLength)
80
+ return clean;
81
+ return `${chars.slice(0, Math.max(1, maxLength - 1)).join("")}…`;
82
+ }
83
+ function statusRank(statusValue) {
84
+ switch (statusValue) {
85
+ case "running": return 0;
86
+ case "pending": return 1;
87
+ case "blocked": return 2;
88
+ case "failed": return 3;
89
+ case "skipped": return 4;
90
+ case "done": return 5;
91
+ default: return 6;
92
+ }
93
+ }
94
+ function todoMarker(statusValue) {
95
+ switch (statusValue) {
96
+ case "running": return style.purpleBold("▶");
97
+ case "done": return style.mintBold("✓");
98
+ case "failed": return style.red("✕");
99
+ case "blocked": return style.orange("■");
100
+ case "skipped": return style.gray("⊘");
101
+ default: return style.gray("□");
102
+ }
103
+ }
104
+ function gitMarker(changeStatus) {
105
+ const normalized = changeStatus.replace(/\s/g, "");
106
+ if (normalized === "??")
107
+ return style.blue("?");
108
+ if (normalized.includes("D"))
109
+ return style.red("D");
110
+ if (normalized.includes("A"))
111
+ return style.mint("A");
112
+ if (normalized.includes("R"))
113
+ return style.purple("R");
114
+ return style.orange("M");
115
+ }
116
+ function truncateLine(line, maxWidth) {
117
+ const clean = sanitizeTerminalText(line);
118
+ if (clean.length <= maxWidth)
119
+ return line;
120
+ const visible = clean.slice(0, Math.max(1, maxWidth - 1));
121
+ return visible + "…";
122
+ }
123
+ function healthColor(health) {
124
+ switch (health) {
125
+ case "ok": return style.mint;
126
+ case "warn": return style.orange;
127
+ case "blocked": return style.orange;
128
+ case "failed": return style.red;
129
+ default: return style.gray;
130
+ }
131
+ }
132
+ function formatProviderCounts(metrics) {
133
+ return Object.entries(metrics.byProvider)
134
+ .sort(([a], [b]) => a.localeCompare(b))
135
+ .map(([provider, count]) => `${provider}=${count}`)
136
+ .join(", ");
137
+ }
138
+ function formatProviderMetricLine(metrics) {
139
+ if (metrics.attempts <= 0)
140
+ return null;
141
+ const counts = formatProviderCounts(metrics);
142
+ const fallback = metrics.fallbackCount > 0 ? ` · fallback ${metrics.fallbackCount}` : "";
143
+ return `${metrics.attempts} attempt${metrics.attempts === 1 ? "" : "s"}${counts ? ` · ${counts}` : ""}${fallback}`;
144
+ }
145
+ function todoItemMarker(statusValue) {
146
+ switch (statusValue) {
147
+ case "in_progress": return style.purpleBold("▶");
148
+ case "done": return style.mintBold("✓");
149
+ case "failed": return style.red("✕");
150
+ case "blocked": return style.orange("■");
151
+ case "skipped": return style.gray("⊘");
152
+ case "pending": return style.gray("□");
153
+ default: return style.gray("□");
154
+ }
155
+ }
156
+ function sessionStatusColor(statusValue) {
157
+ switch (statusValue) {
158
+ case "active": return style.mint;
159
+ case "completed": return style.mintBold;
160
+ case "failed": return style.red;
161
+ case "idle": return style.gray;
162
+ default: return style.gray;
163
+ }
164
+ }
165
+ function stateErrorRecovery(error, runId) {
166
+ switch (error) {
167
+ case "corrupt": return `omk summary-show ${runId ?? "<run-id>"}`;
168
+ case "missing": return `omk run --run-id ${runId ?? "<id>"}`;
169
+ case "invalid":
170
+ case "oldSchema":
171
+ return `omk verify --run ${runId ?? "<run-id>"}`;
172
+ default:
173
+ return "";
174
+ }
175
+ }
176
+ async function loadGoalData(goalId) {
177
+ const goalsBase = getOmkPath("goals");
178
+ const goalPath = join(goalsBase, goalId, "goal.json");
179
+ const evidencePath = join(goalsBase, goalId, "evidence.json");
180
+ try {
181
+ const goalContent = await readFile(goalPath, "utf-8");
182
+ const goal = JSON.parse(goalContent);
183
+ if (!goal || typeof goal !== "object" || !goal.title)
184
+ return null;
185
+ let evidence = [];
186
+ try {
187
+ const evContent = await readFile(evidencePath, "utf-8");
188
+ evidence = JSON.parse(evContent);
189
+ }
190
+ catch {
191
+ // no evidence file
192
+ }
193
+ const criteria = (goal.successCriteria ?? []).filter((c) => c.requirement === "required");
194
+ const requiredTotal = criteria.length;
195
+ const requiredPassed = criteria.filter((c) => evidence.some((e) => e.criterionId === c.id && e.passed)).length;
196
+ const firstUnmet = criteria.find((c) => !evidence.some((e) => e.criterionId === c.id && e.passed));
197
+ const latestEvidenceAt = evidence.length > 0
198
+ ? evidence.sort((a, b) => b.checkedAt.localeCompare(a.checkedAt))[0].checkedAt
199
+ : undefined;
200
+ return {
201
+ title: goal.title,
202
+ status: goal.status,
203
+ requiredTotal,
204
+ requiredPassed,
205
+ firstUnmet: firstUnmet ? { id: firstUnmet.id, description: firstUnmet.description } : undefined,
206
+ latestEvidenceAt,
207
+ };
208
+ }
209
+ catch {
210
+ return null;
211
+ }
212
+ }
213
+ function buildSummaryBar(vm, stateError, _goalTitle, width) {
214
+ if (stateError !== "ok") {
215
+ const warning = `⚠ Latest Run state is ${stateError}. Run: ${stateErrorRecovery(stateError, vm.runId)}`;
216
+ return truncateLine(warning, width);
217
+ }
218
+ const summary = renderRunSummary(vm);
219
+ return truncateLine(summary, width);
220
+ }
221
+ function buildStateErrorPanel(stateError, runId) {
222
+ const recovery = stateErrorRecovery(stateError, runId);
223
+ const lines = [
224
+ "",
225
+ ` ${style.orangeBold("⚠ State:")} ${style.orange(stateError)}`,
226
+ ` ${style.gray("Suggested recovery:")}`,
227
+ recovery ? ` ${style.cream(recovery)}` : "",
228
+ "",
229
+ ].filter(Boolean);
230
+ return panel(lines, gradient("Run State Warning"));
231
+ }
232
+ export function buildHudSidebar(state, changes, options = {}) {
233
+ const maxTodos = options.maxTodos ?? 9;
234
+ const maxFiles = options.maxFiles ?? 12;
235
+ const lines = ["", ` ${style.pinkBold("Right Rail")}`];
236
+ const vm = options.viewModel ?? (state ? buildRunViewModel(state) : null);
237
+ const nodes = [...(state?.nodes ?? [])].sort((a, b) => {
238
+ const rank = statusRank(a.status) - statusRank(b.status);
239
+ return rank !== 0 ? rank : a.id.localeCompare(b.id);
240
+ });
241
+ if (vm) {
242
+ lines.push(` ${style.gray("run")} ${style.creamBold(truncateText(vm.runId ?? "--", 34))}`);
243
+ lines.push(` ${style.gray("progress")} ${style.mintBold(`${vm.progress.settled}/${vm.progress.total}`)} ${style.gray(`settled, ${vm.progress.running} active`)}`);
244
+ if (vm.progress.skipped > 0) {
245
+ lines.push(` ${style.gray("skipped")} ${style.gray(`${vm.progress.skipped}`)}`);
246
+ }
247
+ if (vm.health !== "ok") {
248
+ lines.push(` ${style.gray("health")} ${healthColor(vm.health)(vm.health.toUpperCase())}`);
249
+ }
250
+ const providerLine = formatProviderMetricLine(vm.providerRouting);
251
+ if (providerLine) {
252
+ lines.push(` ${style.gray("provider")} ${style.cream(providerLine)}`);
253
+ }
254
+ lines.push("");
255
+ }
256
+ else if (state) {
257
+ const done = nodes.filter((node) => node.status === "done").length;
258
+ const skipped = nodes.filter((node) => node.status === "skipped").length;
259
+ const failed = nodes.filter((node) => node.status === "failed").length;
260
+ const blocked = nodes.filter((node) => node.status === "blocked").length;
261
+ const active = nodes.filter((node) => node.status === "running").length;
262
+ lines.push(` ${style.gray("run")} ${style.creamBold(truncateText(state.runId, 34))}`);
263
+ lines.push(` ${style.gray("progress")} ${style.mintBold(`${done + skipped + failed + blocked}/${nodes.length}`)} ${style.gray(`settled, ${active} active`)}`);
264
+ lines.push("");
265
+ }
266
+ if (state?.routeDecision) {
267
+ lines.push(` ${style.gray("route")} ${style.cream(truncateText(state.routeDecision.intent, 28))}`);
268
+ lines.push(` ${style.gray("mode")} ${style.cream(state.routeDecision.mode)}`);
269
+ lines.push("");
270
+ }
271
+ const capabilityEntries = Object.entries(state?.capabilityAssignments ?? {});
272
+ if (capabilityEntries.length > 0) {
273
+ lines.push(` ${style.pinkBold("CAPABILITY")}`);
274
+ for (const [nodeId, assignment] of capabilityEntries.slice(0, 4)) {
275
+ const prefix = truncateText(sanitizeForDisplay(nodeId), 12);
276
+ if (assignment.skills?.length)
277
+ lines.push(` ${style.gray(prefix)} ${style.cream(truncateText(`skills:${assignment.skills.join(",")}`, 42))}`);
278
+ if (assignment.hooks?.length)
279
+ lines.push(` ${style.gray(prefix)} ${style.cream(truncateText(`hooks:${assignment.hooks.join(",")}`, 42))}`);
280
+ if (assignment.mcpServers?.length)
281
+ lines.push(` ${style.gray(prefix)} ${style.cream(truncateText(`mcp:${assignment.mcpServers.join(",")}`, 42))}`);
282
+ }
283
+ lines.push("");
284
+ }
285
+ lines.push(` ${style.pinkBold("TODO")}`);
286
+ if (options.todos) {
287
+ const todos = [...options.todos].sort((a, b) => statusRank(a.status) - statusRank(b.status));
288
+ if (todos.length === 0) {
289
+ lines.push(` ${style.gray("TODO 없음")}`);
290
+ }
291
+ else {
292
+ for (const todo of todos.slice(0, maxTodos)) {
293
+ const role = todo.role ? style.gray(`[${truncateText(sanitizeForDisplay(todo.role), 9)}]`) : "";
294
+ const name = truncateText(sanitizeForDisplay(todo.title), 30);
295
+ lines.push(` ${todoItemMarker(todo.status)} ${role} ${name}`.replace(/\s+/g, " ").trimEnd());
296
+ }
297
+ if (todos.length > maxTodos) {
298
+ lines.push(` ${style.gray(`… ${todos.length - maxTodos} more todos`)}`);
299
+ }
300
+ }
301
+ }
302
+ else if (nodes.length === 0) {
303
+ lines.push(` ${style.gray(t("hud.noActiveRun"))}`);
304
+ lines.push(` ${style.gray(t("hud.runToSeeTodos"))}`);
305
+ }
306
+ else {
307
+ for (const node of nodes.slice(0, maxTodos)) {
308
+ const role = style.gray(`[${truncateText(sanitizeForDisplay(node.role), 9)}]`);
309
+ const name = truncateText(sanitizeForDisplay(node.name || node.id), 30);
310
+ lines.push(` ${todoMarker(node.status)} ${role} ${name}`);
311
+ }
312
+ if (nodes.length > maxTodos) {
313
+ lines.push(` ${style.gray(`… ${nodes.length - maxTodos} more tasks`)}`);
314
+ }
315
+ }
316
+ if (vm && vm.workers.length > 0) {
317
+ lines.push("", ` ${style.pinkBold("AGENTS")}`);
318
+ for (const worker of vm.workers.slice(0, Math.max(1, Math.min(5, maxTodos)))) {
319
+ const stateTag = worker.state === "running"
320
+ ? style.purple("▶")
321
+ : worker.state === "done"
322
+ ? style.mint("✓")
323
+ : worker.state === "failed"
324
+ ? style.red("✕")
325
+ : worker.state === "skipped"
326
+ ? style.gray("⊘")
327
+ : style.gray("□");
328
+ const live = worker.liveStatus && worker.liveStatus !== worker.state ? style.gray(` ${worker.liveStatus}`) : "";
329
+ lines.push(` ${stateTag}${live} ${truncateText(sanitizeForDisplay(worker.label), 32)}`);
330
+ }
331
+ }
332
+ lines.push("", ` ${style.pinkBold("Changed Files")} ${style.gray(`(${changes.length})`)}`);
333
+ if (changes.length === 0) {
334
+ lines.push(` ${style.mint("✓")} ${style.gray("clean worktree")}`);
335
+ }
336
+ else {
337
+ for (const change of changes.slice(0, maxFiles)) {
338
+ lines.push(` ${gitMarker(change.status)} ${truncateText(change.path, 38)}`);
339
+ }
340
+ if (changes.length > maxFiles) {
341
+ lines.push(` ${style.gray(`… ${changes.length - maxFiles} more files`)}`);
342
+ }
343
+ }
344
+ lines.push("");
345
+ const contentLines = options.maxWidth
346
+ ? lines.map((l) => truncateLine(l, Math.max(1, options.maxWidth - 4)))
347
+ : lines;
348
+ return panel(contentLines, gradient("TODO / Changed Files"));
349
+ }
350
+ export function renderHudColumns(mainPanels, sidebar, terminalWidth = defaultHudTerminalWidth()) {
351
+ const left = mainPanels.join("\n\n");
352
+ const leftLines = left.split("\n");
353
+ const rightLines = sidebar.split("\n");
354
+ const leftWidth = blockWidth(left);
355
+ const rightWidth = blockWidth(sidebar);
356
+ const gap = 3;
357
+ if (terminalWidth < 100 || leftWidth + gap + rightWidth > terminalWidth) {
358
+ return `${left}\n\n${sidebar}`;
359
+ }
360
+ const height = Math.max(leftLines.length, rightLines.length);
361
+ const output = [];
362
+ for (let i = 0; i < height; i += 1) {
363
+ const leftLine = leftLines[i] ?? "";
364
+ const rightLine = rightLines[i] ?? "";
365
+ output.push(`${padEndAnsi(leftLine, leftWidth)}${" ".repeat(gap)}${rightLine}`.trimEnd());
366
+ }
367
+ return output.join("\n");
368
+ }
369
+ function defaultHudTerminalWidth() {
370
+ const stdoutWidth = process.stdout.columns;
371
+ if (typeof stdoutWidth === "number" && stdoutWidth > 0)
372
+ return stdoutWidth;
373
+ const envWidth = Number.parseInt(process.env.COLUMNS ?? "", 10);
374
+ return Number.isFinite(envWidth) && envWidth > 0 ? envWidth : 120;
375
+ }
376
+ export function renderHudColumnsWithDetectedWidth(mainPanels, sidebar) {
377
+ return renderHudColumns(mainPanels, sidebar, defaultHudTerminalWidth());
378
+ }
379
+ function normalizeRefreshMs(refreshMs) {
380
+ if (refreshMs === undefined)
381
+ return 2_000;
382
+ if (!Number.isFinite(refreshMs))
383
+ return 2_000;
384
+ return Math.min(60_000, Math.max(250, Math.round(refreshMs)));
385
+ }
386
+ function sleep(ms) {
387
+ return new Promise((resolve) => setTimeout(resolve, ms));
388
+ }
389
+ function renderFooter(refreshMs) {
390
+ const footerLines = [
391
+ separator(50),
392
+ style.mint(t("hud.hint")) + " " + style.gray("omk chat") + " " + t("hud.interactive") + " | " + style.gray("omk plan") + " " + t("hud.plan") + " | " + style.gray("omk run") + " " + t("hud.execute") + " | " + style.gray("omk merge") + " " + t("hud.merge"),
393
+ ];
394
+ if (refreshMs) {
395
+ footerLines.push(style.gray(t("hud.liveRefresh", refreshMs)));
396
+ }
397
+ footerLines.push(style.gray(" " + formatOmkVersionFooter()), separator(50));
398
+ return footerLines.join("\n");
399
+ }
400
+ function clearScreen() {
401
+ process.stdout.write("\x1b[2J\x1b[H");
402
+ }
403
+ function enterAlternateScreen() {
404
+ process.stdout.write("\x1b[?1049h");
405
+ }
406
+ function leaveAlternateScreen() {
407
+ process.stdout.write("\x1b[?1049l");
408
+ }
409
+ function runCandidateScore(candidate) {
410
+ let score = 0;
411
+ if (candidate.schemaVersion === 1)
412
+ score += 1;
413
+ if (candidate.name === "latest")
414
+ score -= 8;
415
+ return score;
416
+ }
417
+ export function selectLatestRunName(candidates) {
418
+ const valid = candidates.filter((candidate) => candidate.hasState || candidate.hasGoal || candidate.hasPlan);
419
+ if (valid.length === 0)
420
+ return null;
421
+ return [...valid]
422
+ .sort((a, b) => {
423
+ const activity = (b.stateUpdatedAtMs ?? b.mtimeMs ?? 0) - (a.stateUpdatedAtMs ?? a.mtimeMs ?? 0);
424
+ if (activity !== 0)
425
+ return activity;
426
+ const mtime = b.mtimeMs - a.mtimeMs;
427
+ if (mtime !== 0)
428
+ return mtime;
429
+ const score = runCandidateScore(b) - runCandidateScore(a);
430
+ if (score !== 0)
431
+ return score;
432
+ return b.name.localeCompare(a.name);
433
+ })[0].name;
434
+ }
435
+ export async function listRunCandidates(runsDir) {
436
+ const entries = await readdir(runsDir, { withFileTypes: true });
437
+ const dirs = entries.filter((entry) => entry.isDirectory());
438
+ return Promise.all(dirs.map(async (entry) => {
439
+ const runDir = join(runsDir, entry.name);
440
+ const info = await fsStat(runDir).catch(() => null);
441
+ const statePath = getRunPath(entry.name, "state.json");
442
+ const [hasState, hasGoal, hasPlan] = await Promise.all([
443
+ pathExists(statePath),
444
+ pathExists(getRunPath(entry.name, "goal.md")),
445
+ pathExists(getRunPath(entry.name, "plan.md")),
446
+ ]);
447
+ let schemaVersion;
448
+ let stateUpdatedAtMs = info?.mtimeMs ?? 0;
449
+ if (hasState) {
450
+ try {
451
+ const stateContent = await readFile(statePath, "utf-8");
452
+ const parsed = JSON.parse(stateContent);
453
+ if (parsed && typeof parsed === "object") {
454
+ if (typeof parsed.schemaVersion === "number") {
455
+ schemaVersion = parsed.schemaVersion;
456
+ }
457
+ if (typeof parsed.updatedAt === "string") {
458
+ const parsedTime = Date.parse(parsed.updatedAt);
459
+ if (!Number.isNaN(parsedTime)) {
460
+ stateUpdatedAtMs = parsedTime;
461
+ }
462
+ }
463
+ }
464
+ }
465
+ catch {
466
+ // ignore parse errors; fall back to directory mtime
467
+ }
468
+ // If state.json exists but updatedAt is missing, use the file's own mtime
469
+ // so long-running runs with an old directory mtime still rank correctly.
470
+ if (stateUpdatedAtMs === (info?.mtimeMs ?? 0)) {
471
+ try {
472
+ const stateStat = await fsStat(statePath);
473
+ stateUpdatedAtMs = stateStat.mtimeMs;
474
+ }
475
+ catch {
476
+ // ignore
477
+ }
478
+ }
479
+ }
480
+ return {
481
+ name: entry.name,
482
+ mtimeMs: info?.mtimeMs ?? 0,
483
+ stateUpdatedAtMs,
484
+ hasState,
485
+ hasGoal,
486
+ hasPlan,
487
+ schemaVersion,
488
+ };
489
+ }));
490
+ }
491
+ // ── System panel cache (avoids redundant fs/shell calls within refresh interval) ──
492
+ let cachedSystemPanel;
493
+ let cachedSystemPanelTime = 0;
494
+ async function buildSystemPanel(options = {}) {
495
+ const now = Date.now();
496
+ const refreshMs = options.systemRefreshMs ?? 5000;
497
+ if (cachedSystemPanel && now - cachedSystemPanelTime < refreshMs) {
498
+ return cachedSystemPanel;
499
+ }
500
+ const usage = getSystemUsage();
501
+ const disk = options.showDisk !== false ? getDiskUsage() : null;
502
+ const resources = await getOmkResourceSettings();
503
+ const sysLines = [
504
+ "",
505
+ gauge("CPU Load", usage.cpuPercent, 100, 20),
506
+ gauge("Memory ", usage.memPercent, 100, 20),
507
+ disk ? gauge("Disk ", disk.percent, 100, 20) : "",
508
+ "",
509
+ stat("Load Avg", usage.loadAvg.map((v) => v.toFixed(2)).join(", "), ""),
510
+ stat("Memory", `${usage.memUsedGB} / ${usage.memTotalGB}`, " GB"),
511
+ options.showHeap !== false ? stat("Heap", `${usage.heapUsedMB} / ${usage.heapTotalMB}`, " MB") : "",
512
+ options.showHeap !== false ? stat("Heap Ext", `${usage.heapExternalMB}`, " MB") : "",
513
+ stat("Event Loop", `${usage.eventLoopLagMs.toFixed(1)}`, " ms"),
514
+ stat("OMK Buffer", formatBytes(resources.shellMaxBufferBytes), ""),
515
+ disk ? stat("Disk", `${(disk.used / 1024 / 1024 / 1024).toFixed(1)} / ${(disk.total / 1024 / 1024 / 1024).toFixed(1)}`, " GB") : "",
516
+ options.showUptime !== false ? stat("Uptime", formatUptime(usage.uptimeSeconds), "") : "",
517
+ "",
518
+ ].filter(Boolean);
519
+ const result = panel(sysLines, gradient("System Usage"));
520
+ cachedSystemPanel = result;
521
+ cachedSystemPanelTime = now;
522
+ return result;
523
+ }
524
+ async function buildProviderUsagePanel(providerUsage, fetchQuota = true) {
525
+ const usage = providerUsage ?? await getProviderUsage({ fetchQuota });
526
+ const LIMIT_HOURS = 5;
527
+ const limitSeconds = LIMIT_HOURS * 3600;
528
+ const vm = buildUsageViewModel(usage);
529
+ const fiveHourGaugePercent = vm.fiveHour.percent ??
530
+ Math.min(100, Math.round((usage.totalSecondsLast5Hours / limitSeconds) * 100));
531
+ const weekGaugePercent = vm.weekly.percent ??
532
+ Math.min(100, Math.round((usage.totalSecondsWeek / (limitSeconds * 7)) * 100));
533
+ const loginLine = vm.source === "missingAuth"
534
+ ? stat("OAuth Login", "login required; showing local sessions only", "")
535
+ : stat("OAuth Login", `${vm.accountLabel} (${vm.authStatus})`, "");
536
+ const planLines = [
537
+ "",
538
+ gauge("5h Window", fiveHourGaugePercent, 100, 20),
539
+ gauge("This Week", weekGaugePercent, 100, 20),
540
+ "",
541
+ loginLine,
542
+ stat("5h Usage", vm.fiveHour.label, ""),
543
+ stat("5h Sessions", `${usage.sessionCountLast5Hours}`, ""),
544
+ stat("Today Used", vm.today.label, ""),
545
+ stat("Today Sessions", `${vm.today.sessionCount}`, ""),
546
+ stat("Week Usage", vm.weekly.label, ""),
547
+ stat("Week Sessions", `${usage.sessionCountWeek}`, ""),
548
+ vm.error ? stat("Quota Source", `local fallback (${vm.error})`, "") : "",
549
+ "",
550
+ ].filter(Boolean);
551
+ return panel(planLines, gradient("Provider Usage"));
552
+ }
553
+ async function buildProjectStatusPanel(gitChangesResult) {
554
+ const root = getProjectRoot();
555
+ const gitChanges = gitChangesResult ?? [];
556
+ const projLines = [""];
557
+ projLines.push(` ${style.purple("🌿 Git")} ${gitChangesResult === null ? status.warn("unavailable") : gitChanges.length === 0 ? status.ok("clean") : status.warn(`${gitChanges.length} changes`)}`);
558
+ const [omkExists, agentsMdExists, designMdExists] = await Promise.all([
559
+ pathExists(join(root, ".omk")),
560
+ pathExists(join(root, "AGENTS.md")),
561
+ pathExists(join(root, "DESIGN.md")),
562
+ ]);
563
+ projLines.push(` ${style.purple("📁 OMK")} ${omkExists ? status.ok("initialized") : status.warn("omk init needed")}`);
564
+ projLines.push(` ${style.purple("📝 AGENTS")} ${agentsMdExists ? status.ok("exists") : status.warn("missing")}`);
565
+ projLines.push(` ${style.purple("🎨 DESIGN")} ${designMdExists ? status.ok("exists") : status.info("optional")}`);
566
+ projLines.push("");
567
+ return panel(projLines, gradient("Project Status"));
568
+ }
569
+ function workerLiveness(ageMs) {
570
+ if (ageMs === undefined)
571
+ return { label: "active", color: style.mint };
572
+ if (ageMs > 180_000)
573
+ return { label: "stale", color: style.red };
574
+ if (ageMs > 90_000)
575
+ return { label: "quiet", color: style.orange };
576
+ if (ageMs > 30_000)
577
+ return { label: "slow", color: style.cream };
578
+ return { label: "active", color: style.mint };
579
+ }
580
+ function formatDurationMs(ms) {
581
+ const totalSeconds = Math.max(0, Math.round(ms / 1000));
582
+ const h = Math.floor(totalSeconds / 3600);
583
+ const m = Math.floor((totalSeconds % 3600) / 60);
584
+ const s = totalSeconds % 60;
585
+ if (h > 0)
586
+ return `${h}h ${m}m`;
587
+ if (m > 0)
588
+ return `${m}m ${s}s`;
589
+ return `${s}s`;
590
+ }
591
+ async function buildLatestRunPanel(options, vm, stateError, _gitChanges, maxWidth, sessionMeta, todos) {
592
+ const runsDir = getRunsDir();
593
+ let runLines = [];
594
+ if (await pathExists(runsDir)) {
595
+ let latestRunName = options?.runId ?? null;
596
+ if (!latestRunName) {
597
+ const runCandidates = await listRunCandidates(runsDir);
598
+ latestRunName = selectLatestRunName(runCandidates);
599
+ }
600
+ if (latestRunName) {
601
+ let goalTitle = null;
602
+ let goalData = null;
603
+ if (vm.runId && stateError === "ok") {
604
+ try {
605
+ const stateContent = await readFile(getRunPath(latestRunName, "state.json"), "utf-8");
606
+ const { state } = parseRunStateResult(stateContent);
607
+ if (state?.goalId) {
608
+ goalData = await loadGoalData(state.goalId);
609
+ if (goalData)
610
+ goalTitle = goalData.title;
611
+ }
612
+ if (!goalData && state?.goalSnapshot?.title) {
613
+ goalTitle = state.goalSnapshot.title;
614
+ }
615
+ }
616
+ catch {
617
+ // ignore
618
+ }
619
+ }
620
+ const [goalMd, plan] = await Promise.all([
621
+ readFile(getRunPath(latestRunName, "goal.md"), "utf-8").catch(() => null),
622
+ readFile(getRunPath(latestRunName, "plan.md"), "utf-8").catch(() => null),
623
+ ]);
624
+ if (!goalTitle && goalMd) {
625
+ goalTitle = goalMd.replace(/# Goal\n\n?/, "").split("\n")[0].trim();
626
+ }
627
+ if (!goalTitle)
628
+ goalTitle = "N/A";
629
+ // ── Top summary bar: Run / Goal / Health / Progress / ETA / Stale count ──
630
+ const staleWorkers = vm.workers.filter((w) => w.state === "running" && (w.lastActivityAgeMs ?? 0) > 90_000).length;
631
+ const chatBadge = sessionMeta?.type === "chat" ? ` ${style.cream("💬 Chat")}` : "";
632
+ const providerLine = formatProviderMetricLine(vm.providerRouting);
633
+ runLines = [
634
+ "",
635
+ ` ${style.gray("Run:")} ${style.creamBold(latestRunName)}${chatBadge}`,
636
+ ` ${style.gray("Goal:")} ${style.cream(goalTitle)}`,
637
+ ` ${style.gray("Health:")} ${healthColor(vm.health)(vm.health.toUpperCase())}`,
638
+ ` ${style.gray("Progress:")} ${style.mintBold(`${vm.progress.settled}/${vm.progress.total}`)} ${style.gray(`(${vm.progress.percent}%)`)}`,
639
+ ];
640
+ if (providerLine) {
641
+ runLines.push(` ${style.gray("Provider:")} ${style.cream(providerLine)}`);
642
+ }
643
+ if (vm.eta) {
644
+ runLines.push(` ${style.gray("ETA:")} ${style.cream(vm.eta)}`);
645
+ }
646
+ if (staleWorkers > 0) {
647
+ runLines.push(` ${style.gray("Stale:")} ${style.redBold(`${staleWorkers} worker${staleWorkers > 1 ? "s" : ""}`)}`);
648
+ }
649
+ if (sessionMeta) {
650
+ const statusColor = sessionStatusColor(sessionMeta.status);
651
+ runLines.push(` ${style.gray("Session:")} ${statusColor(sessionMeta.status.toUpperCase())}`);
652
+ if (sessionMeta.todoCount > 0) {
653
+ runLines.push(` ${style.gray("Todos:")} ${style.mintBold(`${sessionMeta.todoDoneCount}/${sessionMeta.todoCount}`)} ${style.gray("completed")}`);
654
+ }
655
+ }
656
+ runLines.push("");
657
+ if (goalData) {
658
+ if (goalData.status) {
659
+ runLines.push(` ${style.gray("Goal Status:")} ${style.creamBold(goalData.status)}`);
660
+ }
661
+ if (goalData.requiredTotal > 0) {
662
+ runLines.push(` ${style.gray("Criteria:")} ${style.mintBold(`${goalData.requiredPassed}/${goalData.requiredTotal}`)} ${style.gray("required passed")}`);
663
+ }
664
+ if (goalData.firstUnmet) {
665
+ runLines.push(` ${style.gray("Next Up:")} ${style.orange(truncateText(goalData.firstUnmet.description, 50))}`);
666
+ }
667
+ runLines.push("");
668
+ }
669
+ else if (vm.goalTitle) {
670
+ if (vm.goalScore != null) {
671
+ runLines.push(` ${style.gray("Score:")} ${style.mintBold(`${vm.goalScore}%`)}`);
672
+ }
673
+ runLines.push("");
674
+ }
675
+ if (vm.teamRuntime) {
676
+ const team = vm.teamRuntime;
677
+ const presentWindows = team.windows.filter((w) => w.status === "present").length;
678
+ const missingWindows = team.windows.filter((w) => w.status === "missing").length;
679
+ runLines.push(` ${style.pinkBold("Team Runtime")}`);
680
+ runLines.push(` ${style.gray("session")} ${style.cream(team.session)} ${style.gray("status")} ${healthColor(missingWindows > 0 ? "warn" : "ok")(team.status)}`);
681
+ runLines.push(` ${style.gray("windows")} ${style.mintBold(`${presentWindows}/${team.windows.length}`)} ${style.gray(`present · workers ${team.workerCount} · reviewer ${team.reviewerCount}`)}`);
682
+ if (team.coordinatorPanes > 0) {
683
+ runLines.push(` ${style.gray("coordinator panes")} ${style.mint(String(team.coordinatorPanes))}`);
684
+ }
685
+ if (missingWindows > 0) {
686
+ runLines.push(` ${style.orange(`${missingWindows} expected window(s) missing`)}`);
687
+ }
688
+ runLines.push("");
689
+ }
690
+ // ── Worker table ──
691
+ if (vm.workers.length > 0) {
692
+ runLines.push(` ${style.pinkBold("Workers")}`);
693
+ for (const w of vm.workers) {
694
+ const live = workerLiveness(w.lastActivityAgeMs);
695
+ const stateTag = w.state === "running"
696
+ ? `${live.color("▶")} ${live.color(w.state)}`
697
+ : w.state === "done"
698
+ ? `${style.mintBold("✓")} ${style.mint(w.state)}`
699
+ : w.state === "failed"
700
+ ? `${style.red("✕")} ${style.red(w.state)}`
701
+ : w.state === "skipped"
702
+ ? `${style.gray("⊘")} ${style.gray(w.state)}`
703
+ : `${style.gray("□")} ${style.gray(w.state)}`;
704
+ const elapsed = w.elapsedMs > 0 ? style.gray(` · ${formatDurationMs(w.elapsedMs)}`) : "";
705
+ const activity = w.lastActivityAgeMs != null
706
+ ? style.gray(` · activity ${formatDurationMs(w.lastActivityAgeMs)} ago`)
707
+ : "";
708
+ const phaseLine = w.phase ? style.gray(` · ${truncateText(w.phase, 50)}`) : "";
709
+ runLines.push(` ${stateTag}${elapsed}${activity}${phaseLine}`);
710
+ runLines.push(` ${style.gray(truncateText(w.label, 40))}`);
711
+ }
712
+ runLines.push("");
713
+ }
714
+ // ── Blockers / Next Action ──
715
+ if (vm.blocker) {
716
+ runLines.push(` ${style.redBold("Blocker:")} ${style.red(vm.blocker.reason)}`);
717
+ runLines.push(` ${style.gray("Action:")} ${style.cream(vm.blocker.nextAction)}`);
718
+ runLines.push("");
719
+ }
720
+ else if (vm.nextAction && vm.nextAction !== "Ready") {
721
+ runLines.push(` ${style.gray("Next:")} ${style.cream(vm.nextAction)}`);
722
+ runLines.push("");
723
+ }
724
+ if (plan) {
725
+ runLines.push(` ${style.gray("Plan:")} ${style.mint("✔ generated")}`);
726
+ runLines.push("");
727
+ }
728
+ // ── TODO mini-section ──
729
+ if (!options.compact && todos && todos.length > 0) {
730
+ runLines.push(` ${style.pinkBold("TODOs")}`);
731
+ for (const todo of todos.slice(0, 5)) {
732
+ const marker = todoItemMarker(todo.status);
733
+ const title = truncateText(todo.title, 50);
734
+ runLines.push(` ${marker} ${title}`);
735
+ }
736
+ if (todos.length > 5) {
737
+ runLines.push(` ${style.gray(`… ${todos.length - 5} more`)}`);
738
+ }
739
+ runLines.push("");
740
+ }
741
+ }
742
+ }
743
+ if (runLines.length === 0) {
744
+ runLines = ["", ` ${style.gray(t("hud.noRunHistory"))}`, ""];
745
+ }
746
+ if (maxWidth) {
747
+ const contentMaxWidth = Math.max(1, maxWidth - 4);
748
+ runLines = runLines.map((l) => truncateLine(l, contentMaxWidth));
749
+ }
750
+ return panel(runLines, gradient("Latest Run"));
751
+ }
752
+ async function renderCompactDashboard(options) {
753
+ const width = options.terminalWidth ?? defaultHudTerminalWidth();
754
+ const effectiveWidth = Math.max(40, width - 4);
755
+ const root = getProjectRoot();
756
+ const gitChangesResult = await getGitChanges(root);
757
+ const gitChanges = gitChangesResult ?? [];
758
+ const runsDir = getRunsDir();
759
+ let vm = buildRunViewModel(null);
760
+ let stateError = "missing";
761
+ let latestRunName = options.runId ?? null;
762
+ if (await pathExists(runsDir)) {
763
+ if (!latestRunName) {
764
+ const candidates = await listRunCandidates(runsDir);
765
+ latestRunName = selectLatestRunName(candidates);
766
+ }
767
+ if (latestRunName) {
768
+ const stateContent = await readFile(getRunPath(latestRunName, "state.json"), "utf-8").catch(() => null);
769
+ if (stateContent) {
770
+ const result = parseRunStateResult(stateContent);
771
+ stateError = result.error;
772
+ vm = buildRunViewModel(result.state, { changedFiles: gitChanges.map((c) => c.path) });
773
+ }
774
+ }
775
+ }
776
+ let sessionMeta = null;
777
+ let todos = null;
778
+ if (latestRunName) {
779
+ sessionMeta = await readSessionMeta(latestRunName).catch(() => null);
780
+ todos = await loadTodos(latestRunName).catch(() => null);
781
+ }
782
+ const goalTitle = vm.goalTitle ?? null;
783
+ const output = [];
784
+ output.push(omkHudHeader(options.runId));
785
+ const summary = buildSummaryBar(vm, stateError, goalTitle, effectiveWidth);
786
+ output.push(summary);
787
+ output.push("");
788
+ const systemPanel = await buildSystemPanel(options);
789
+ output.push(systemPanel);
790
+ const runPanel = await buildLatestRunPanel(options, vm, stateError, gitChanges, effectiveWidth, sessionMeta, todos);
791
+ output.push(runPanel);
792
+ output.push("");
793
+ if (stateError !== "ok" && latestRunName) {
794
+ output.push(buildStateErrorPanel(stateError, latestRunName));
795
+ output.push("");
796
+ }
797
+ const sidebar = buildHudSidebar(null, gitChanges, { viewModel: vm, maxWidth: effectiveWidth, todos });
798
+ output.push(sidebar);
799
+ output.push("");
800
+ output.push(renderFooter(options.footerRefreshMs));
801
+ output.push("");
802
+ return output.join("\n");
803
+ }
804
+ async function renderMediumDashboard(options) {
805
+ const width = options.terminalWidth ?? defaultHudTerminalWidth();
806
+ const root = getProjectRoot();
807
+ const gitChangesResult = await getGitChanges(root);
808
+ const gitChanges = gitChangesResult ?? [];
809
+ const mainPanels = [];
810
+ const output = [];
811
+ output.push(omkHudHeader(options.runId));
812
+ const runsDir = getRunsDir();
813
+ let vm = buildRunViewModel(null);
814
+ let stateError = "missing";
815
+ let latestRunName = options.runId ?? null;
816
+ if (await pathExists(runsDir)) {
817
+ if (!latestRunName) {
818
+ const candidates = await listRunCandidates(runsDir);
819
+ latestRunName = selectLatestRunName(candidates);
820
+ }
821
+ if (latestRunName) {
822
+ const stateContent = await readFile(getRunPath(latestRunName, "state.json"), "utf-8").catch(() => null);
823
+ if (stateContent) {
824
+ const result = parseRunStateResult(stateContent);
825
+ stateError = result.error;
826
+ vm = buildRunViewModel(result.state, { changedFiles: gitChanges.map((c) => c.path) });
827
+ }
828
+ }
829
+ }
830
+ let sessionMeta = null;
831
+ let todos = null;
832
+ if (latestRunName) {
833
+ sessionMeta = await readSessionMeta(latestRunName).catch(() => null);
834
+ todos = await loadTodos(latestRunName).catch(() => null);
835
+ }
836
+ const goalTitle = vm.goalTitle ?? null;
837
+ const summary = buildSummaryBar(vm, stateError, goalTitle, width - 4);
838
+ output.push(summary);
839
+ output.push("");
840
+ const projPanel = await buildProjectStatusPanel(gitChangesResult);
841
+ mainPanels.push(projPanel);
842
+ const runPanel = await buildLatestRunPanel(options, vm, stateError, gitChanges, undefined, sessionMeta, todos);
843
+ mainPanels.push(runPanel);
844
+ if (stateError !== "ok" && latestRunName) {
845
+ mainPanels.push(buildStateErrorPanel(stateError, latestRunName));
846
+ }
847
+ const sidebar = buildHudSidebar(null, gitChanges, { viewModel: vm, todos });
848
+ output.push(renderHudColumns(mainPanels, sidebar, width));
849
+ output.push("");
850
+ output.push(renderFooter(options.footerRefreshMs));
851
+ output.push("");
852
+ return output.join("\n");
853
+ }
854
+ async function renderFullDashboard(options) {
855
+ const width = options.terminalWidth ?? defaultHudTerminalWidth();
856
+ const root = getProjectRoot();
857
+ const gitChangesResult = await getGitChanges(root);
858
+ const gitChanges = gitChangesResult ?? [];
859
+ const mainPanels = [];
860
+ const output = [];
861
+ output.push(omkHudHeader(options.runId));
862
+ const runsDir = getRunsDir();
863
+ let vm = buildRunViewModel(null);
864
+ let stateError = "missing";
865
+ let latestRunName = options.runId ?? null;
866
+ if (await pathExists(runsDir)) {
867
+ if (!latestRunName) {
868
+ const candidates = await listRunCandidates(runsDir);
869
+ latestRunName = selectLatestRunName(candidates);
870
+ }
871
+ if (latestRunName) {
872
+ const stateContent = await readFile(getRunPath(latestRunName, "state.json"), "utf-8").catch(() => null);
873
+ if (stateContent) {
874
+ const result = parseRunStateResult(stateContent);
875
+ stateError = result.error;
876
+ vm = buildRunViewModel(result.state, { changedFiles: gitChanges.map((c) => c.path) });
877
+ }
878
+ }
879
+ }
880
+ let sessionMeta = null;
881
+ let todos = null;
882
+ if (latestRunName) {
883
+ sessionMeta = await readSessionMeta(latestRunName).catch(() => null);
884
+ todos = await loadTodos(latestRunName).catch(() => null);
885
+ }
886
+ const goalTitle = vm.goalTitle ?? null;
887
+ const summary = buildSummaryBar(vm, stateError, goalTitle, width - 4);
888
+ output.push(summary);
889
+ output.push("");
890
+ mainPanels.push(await buildSystemPanel(options));
891
+ mainPanels.push(await buildProviderUsagePanel(options.providerUsage, options.fetchQuota ?? true));
892
+ mainPanels.push(await buildProjectStatusPanel(gitChangesResult));
893
+ const runPanel = await buildLatestRunPanel(options, vm, stateError, gitChanges, undefined, sessionMeta, todos);
894
+ mainPanels.push(runPanel);
895
+ if (stateError !== "ok" && latestRunName) {
896
+ mainPanels.push(buildStateErrorPanel(stateError, latestRunName));
897
+ }
898
+ const sidebar = buildHudSidebar(null, gitChanges, { viewModel: vm, todos });
899
+ output.push(renderHudColumns(mainPanels, sidebar, width));
900
+ output.push("");
901
+ output.push(renderFooter(options.footerRefreshMs));
902
+ output.push("");
903
+ return output.join("\n");
904
+ }
905
+ async function renderSectionDashboard(options) {
906
+ const width = options.terminalWidth ?? defaultHudTerminalWidth();
907
+ const root = getProjectRoot();
908
+ const gitChangesResult = await getGitChanges(root);
909
+ const gitChanges = gitChangesResult ?? [];
910
+ const output = [];
911
+ output.push(omkHudHeader(options.runId));
912
+ const runsDir = getRunsDir();
913
+ let vm = buildRunViewModel(null);
914
+ let stateError = "missing";
915
+ let latestRunName = options.runId ?? null;
916
+ if (await pathExists(runsDir)) {
917
+ if (!latestRunName) {
918
+ const candidates = await listRunCandidates(runsDir);
919
+ latestRunName = selectLatestRunName(candidates);
920
+ }
921
+ if (latestRunName) {
922
+ const stateContent = await readFile(getRunPath(latestRunName, "state.json"), "utf-8").catch(() => null);
923
+ if (stateContent) {
924
+ const result = parseRunStateResult(stateContent);
925
+ stateError = result.error;
926
+ vm = buildRunViewModel(result.state, { changedFiles: gitChanges.map((c) => c.path) });
927
+ }
928
+ }
929
+ }
930
+ let sessionMeta = null;
931
+ let todos = null;
932
+ if (latestRunName) {
933
+ sessionMeta = await readSessionMeta(latestRunName).catch(() => null);
934
+ todos = await loadTodos(latestRunName).catch(() => null);
935
+ }
936
+ const goalTitle = vm.goalTitle ?? null;
937
+ const summary = buildSummaryBar(vm, stateError, goalTitle, width - 4);
938
+ output.push(summary);
939
+ output.push("");
940
+ switch (options.section) {
941
+ case "run": {
942
+ const runPanel = await buildLatestRunPanel(options, vm, stateError, gitChanges, undefined, sessionMeta, todos);
943
+ output.push(runPanel);
944
+ output.push("");
945
+ if (stateError !== "ok" && latestRunName) {
946
+ output.push(buildStateErrorPanel(stateError, latestRunName));
947
+ output.push("");
948
+ }
949
+ const sidebar = buildHudSidebar(null, gitChanges, { viewModel: vm, todos });
950
+ output.push(sidebar);
951
+ break;
952
+ }
953
+ case "project": {
954
+ const projPanel = await buildProjectStatusPanel(gitChangesResult);
955
+ output.push(projPanel);
956
+ break;
957
+ }
958
+ case "resources": {
959
+ output.push(await buildSystemPanel(options));
960
+ output.push("");
961
+ output.push(await buildProviderUsagePanel(options.providerUsage, options.fetchQuota ?? true));
962
+ break;
963
+ }
964
+ }
965
+ output.push("");
966
+ output.push(renderFooter(options.footerRefreshMs));
967
+ output.push("");
968
+ return output.join("\n");
969
+ }
970
+ export async function renderHudDashboard(options = {}) {
971
+ const width = options.terminalWidth ?? defaultHudTerminalWidth();
972
+ if (options.section) {
973
+ return renderSectionDashboard(options);
974
+ }
975
+ if (options.compact || width < 90) {
976
+ return renderCompactDashboard(options);
977
+ }
978
+ if (width < 120) {
979
+ return renderMediumDashboard(options);
980
+ }
981
+ return renderFullDashboard(options);
982
+ }
983
+ export async function hudCommand(options = {}) {
984
+ const refreshMs = normalizeRefreshMs(options.refreshMs);
985
+ if (!options.watch) {
986
+ console.log(await renderHudDashboard(options));
987
+ return;
988
+ }
989
+ let stopped = false;
990
+ const stop = () => {
991
+ stopped = true;
992
+ };
993
+ process.once("SIGINT", stop);
994
+ process.once("SIGTERM", stop);
995
+ let cachedUsage;
996
+ let lastUsageRefreshMs = 0;
997
+ const usageRefreshMs = Math.max(60_000, refreshMs);
998
+ const useAlternateScreen = options.alternateScreen ?? false;
999
+ const shouldClear = !(options.noClear ?? false) && (options.clear ?? true);
1000
+ if (useAlternateScreen) {
1001
+ enterAlternateScreen();
1002
+ }
1003
+ try {
1004
+ let lastFrame = "";
1005
+ while (!stopped) {
1006
+ const now = Date.now();
1007
+ if (!cachedUsage || now - lastUsageRefreshMs >= usageRefreshMs) {
1008
+ cachedUsage = await getProviderUsage();
1009
+ lastUsageRefreshMs = now;
1010
+ }
1011
+ const frame = await renderHudDashboard({ ...options, providerUsage: cachedUsage, footerRefreshMs: refreshMs });
1012
+ if (frame !== lastFrame) {
1013
+ lastFrame = frame;
1014
+ if (shouldClear)
1015
+ clearScreen();
1016
+ process.stdout.write(frame + "\n");
1017
+ }
1018
+ if (stopped)
1019
+ break;
1020
+ await sleep(refreshMs);
1021
+ }
1022
+ }
1023
+ finally {
1024
+ process.off("SIGINT", stop);
1025
+ process.off("SIGTERM", stop);
1026
+ if (useAlternateScreen) {
1027
+ leaveAlternateScreen();
1028
+ }
1029
+ }
1030
+ process.stdout.write("\n");
1031
+ }