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,1052 @@
1
+ import { BannerReplacer } from "./banner.js";
2
+ import { KimiBugFilter } from "./bug-filter.js";
3
+ import { KimiContinuePromptGuard } from "../adapters/kimi/continue-prompt-guard.js";
4
+ import { omkBanner, style, loadThemeConfig } from "../util/theme.js";
5
+ import { ensureDir, injectKimiGlobals, getProjectRoot, getUserHome, pathExists } from "../util/fs.js";
6
+ import { pasteScreenshot } from "../util/screenshot-store.js";
7
+ import { isAbsolute, join, relative, resolve } from "path";
8
+ import { runShellStreaming } from "../util/shell.js";
9
+ import { resolveTimeoutMs } from "../util/timeout-config.js";
10
+ import { getOmkResourceSettings } from "../util/resource-profile.js";
11
+ import { KimiStatusLineEnhancer } from "./statusline.js";
12
+ import { formatOmkVersionFooter } from "../util/version.js";
13
+ import { prepareIsolatedKimiHome, cleanupIsolatedKimiHome, resolveOriginalHome } from "./isolated-home.js";
14
+ import { enableRawTerminalInput, restoreTerminalInputState } from "../util/terminal-input.js";
15
+ import { checkCommand, resolveKimiBin } from "../util/shell.js";
16
+ import { defaultScopedRoleAgentFile, writeScopedAgentFile } from "../util/scoped-agent-file.js";
17
+ import { terminateProcessTree } from "../util/process-tree.js";
18
+ import { isDeniedChildEnvName } from "../runtime/child-env.js";
19
+ import { contextPreflightErrorMessage, preflightProviderInput, } from "../providers/context-preflight.js";
20
+ const REQUIRED_KIMI_ENV_KEYS = new Set([
21
+ "PATH",
22
+ "HOME",
23
+ "USERPROFILE",
24
+ "HOMEDRIVE",
25
+ "HOMEPATH",
26
+ "SHELL",
27
+ "TERM",
28
+ "COLORTERM",
29
+ "TMP",
30
+ "TMPDIR",
31
+ "TEMP",
32
+ "USER",
33
+ "LOGNAME",
34
+ "PWD",
35
+ "LANG",
36
+ "LC_ALL",
37
+ ]);
38
+ const SECRET_ENV_KEY_PATTERN = /(?:^|[_-])(?:SECRET|TOKEN|PASSWORD|PASSWD|API[_-]?KEY|ACCESS[_-]?KEY|PRIVATE[_-]?KEY|CREDENTIAL|AUTHORIZATION|AUTH|COOKIE|SESSION(?:[_-]?(?:ID|TOKEN|SECRET))?|JSESSIONID|PHPSESSID|BEARER|DATABASE[_-]?URL|REDIS[_-]?URL|MONGO(?:DB)?[_-]?URI|CONNECTION[_-]?STRING|DSN)(?:[_-]|$)/i;
39
+ const NON_SECRET_KIMI_METADATA_ENV_KEYS = new Set([
40
+ "KIMI_SESSION_ID",
41
+ "OMK_RUN_ID",
42
+ "OMK_SESSION_ID",
43
+ "OMK_INHERIT_LOCAL_AUTH",
44
+ "OMK_ISOLATED_HOME_INHERIT_AUTH",
45
+ "OMK_TOTAL_TOKENS",
46
+ "OMK_NODE_PROVIDER_AUTHORITY",
47
+ ]);
48
+ const TRUSTED_KIMI_EXPLICIT_SECRET_ENV_PATTERN = /^(1|true|yes)$/i;
49
+ const KIMI_EXPLICIT_SECRET_ENV_WARNED = new Set();
50
+ function isAllowedInheritedKimiEnvKey(key) {
51
+ if (isDeniedChildEnvName(key))
52
+ return false;
53
+ if (NON_SECRET_KIMI_METADATA_ENV_KEYS.has(key))
54
+ return true;
55
+ if (SECRET_ENV_KEY_PATTERN.test(key))
56
+ return false;
57
+ return REQUIRED_KIMI_ENV_KEYS.has(key) || key.startsWith("LC_") || key.startsWith("KIMI_") || key.startsWith("OMK_");
58
+ }
59
+ export function isSecretLikeKimiEnvKey(key) {
60
+ if (NON_SECRET_KIMI_METADATA_ENV_KEYS.has(key))
61
+ return false;
62
+ return SECRET_ENV_KEY_PATTERN.test(key);
63
+ }
64
+ function isTrustedExplicitSecretEnvEnabled(env) {
65
+ return TRUSTED_KIMI_EXPLICIT_SECRET_ENV_PATTERN.test(env.OMK_TRUST_KIMI_EXPLICIT_SECRET_ENV ?? "");
66
+ }
67
+ function warnExplicitSecretLikeKimiEnvKey(key, context, onWarning) {
68
+ const warningKey = `${context}:${key}`;
69
+ if (KIMI_EXPLICIT_SECRET_ENV_WARNED.has(warningKey))
70
+ return;
71
+ KIMI_EXPLICIT_SECRET_ENV_WARNED.add(warningKey);
72
+ onWarning(`[omk] Warning: explicit Kimi child env includes secret-like key "${key}" in ${context}; ` +
73
+ "the key was dropped. Set OMK_TRUST_KIMI_EXPLICIT_SECRET_ENV=1 only inside an isolated runner to pass it through.");
74
+ }
75
+ export function buildSafeKimiChildEnv(inheritedEnv = process.env, explicitEnv = {}, forcedEnv = {}, options = {}) {
76
+ const safeEnv = {};
77
+ for (const [key, value] of Object.entries(inheritedEnv)) {
78
+ if (value !== undefined && isAllowedInheritedKimiEnvKey(key)) {
79
+ safeEnv[key] = value;
80
+ }
81
+ }
82
+ const trustedExplicitSecretEnv = isTrustedExplicitSecretEnvEnabled({ ...inheritedEnv, ...explicitEnv, ...forcedEnv });
83
+ const explicitEnvContext = options.explicitEnvContext ?? "kimi child env";
84
+ const onWarning = options.onWarning ?? ((message) => process.stderr.write(`${message}\n`));
85
+ for (const [key, value] of Object.entries(explicitEnv)) {
86
+ if (value === undefined) {
87
+ delete safeEnv[key];
88
+ continue;
89
+ }
90
+ if (isDeniedChildEnvName(key)) {
91
+ delete safeEnv[key];
92
+ continue;
93
+ }
94
+ if (isSecretLikeKimiEnvKey(key) && !trustedExplicitSecretEnv) {
95
+ if (options.warnExplicitSecrets) {
96
+ warnExplicitSecretLikeKimiEnvKey(key, explicitEnvContext, onWarning);
97
+ }
98
+ delete safeEnv[key];
99
+ continue;
100
+ }
101
+ safeEnv[key] = value;
102
+ }
103
+ for (const [key, value] of Object.entries(forcedEnv)) {
104
+ if (value === undefined)
105
+ delete safeEnv[key];
106
+ else
107
+ safeEnv[key] = value;
108
+ }
109
+ return safeEnv;
110
+ }
111
+ function readFlagValue(args, longName, shortName) {
112
+ for (let index = 0; index < args.length; index += 1) {
113
+ const arg = args[index];
114
+ if (arg === longName || (shortName && arg === shortName)) {
115
+ return args[index + 1];
116
+ }
117
+ if (arg.startsWith(`${longName}=`)) {
118
+ return arg.slice(longName.length + 1);
119
+ }
120
+ if (shortName && arg.startsWith(`${shortName}=`)) {
121
+ return arg.slice(shortName.length + 1);
122
+ }
123
+ }
124
+ return undefined;
125
+ }
126
+ export function parseKimiLaunchMeta(args, env = process.env, cwd = process.cwd()) {
127
+ return {
128
+ directory: cwd,
129
+ session: env.KIMI_SESSION_ID ?? env.OMK_SESSION_ID ?? env.OMK_RUN_ID,
130
+ model: readFlagValue([...args], "--model", "-m") ?? env.OMK_KIMI_MODEL ?? env.OMK_MODEL,
131
+ };
132
+ }
133
+ export function classifyKimiProviderFailure(output) {
134
+ const normalized = output.toLowerCase();
135
+ const isMonthlyQuota = normalized.includes("exceeded_current_quota_error") ||
136
+ normalized.includes("monthly usage limit") ||
137
+ (normalized.includes("billing cycle") && (normalized.includes("quota") || normalized.includes("usage limit"))) ||
138
+ (normalized.includes("quota") && normalized.includes("refreshed in the next cycle"));
139
+ const isRateLimit = normalized.includes("error code: 429") ||
140
+ normalized.includes("rate limit") ||
141
+ (/\b429\b/.test(normalized) &&
142
+ (normalized.includes("llm") || normalized.includes("provider") || normalized.includes("kimi") || normalized.includes("moonshot")));
143
+ const isProviderError = normalized.includes("llm provider error") ||
144
+ normalized.includes("provider error") ||
145
+ isMonthlyQuota ||
146
+ isRateLimit;
147
+ if (!isProviderError)
148
+ return null;
149
+ if (isMonthlyQuota) {
150
+ return {
151
+ kind: "monthly-quota",
152
+ title: "Kimi monthly quota exhausted",
153
+ remediation: [
154
+ "Login/auth can be valid while the Kimi account's monthly provider quota is exhausted.",
155
+ "This is a provider quota/billing limit, not an MCP or repository failure.",
156
+ "Use a non-Kimi provider/profile until the quota refreshes, or upgrade Kimi Code quota.",
157
+ "For this repo, try: omk provider deepseek enable (if configured) or rerun with a non-Kimi provider.",
158
+ "If Kimi support asks for diagnostics, run: kimi export — keep the exported file private.",
159
+ ],
160
+ };
161
+ }
162
+ if (isRateLimit) {
163
+ return {
164
+ kind: "rate-limit",
165
+ title: "Kimi provider rate limit reached",
166
+ remediation: [
167
+ "Wait and retry later, reduce parallel workers, or switch to a configured fallback provider.",
168
+ "For worker runs, reduce concurrency with --workers 1 or OMK_WORKERS=1.",
169
+ ],
170
+ };
171
+ }
172
+ return {
173
+ kind: "provider",
174
+ title: "Kimi provider unavailable",
175
+ remediation: [
176
+ "Check Kimi account/provider status and retry, or switch to a configured fallback provider.",
177
+ ],
178
+ };
179
+ }
180
+ export function formatKimiProviderFailureHint(output) {
181
+ const diagnosis = classifyKimiProviderFailure(output);
182
+ if (!diagnosis)
183
+ return null;
184
+ const lines = [
185
+ `[omk] ${diagnosis.title}.`,
186
+ ...diagnosis.remediation.map((line) => ` - ${line}`),
187
+ ];
188
+ return lines.join("\n") + "\n";
189
+ }
190
+ export function shouldFailOnMcpError(input) {
191
+ if (input.failurePolicy === "strict")
192
+ return true;
193
+ return input.requiredServers.includes(input.serverName);
194
+ }
195
+ export function extractKimiMcpConnectionFailureNames(output) {
196
+ if (!/Failed to connect MCP servers/i.test(output))
197
+ return [];
198
+ const names = new Set();
199
+ const objectMatches = output.matchAll(/['"]([^'"]+)['"]\s*:/g);
200
+ for (const match of objectMatches) {
201
+ const name = match[1]?.trim();
202
+ if (name)
203
+ names.add(name);
204
+ }
205
+ const fallbackMatches = output.matchAll(/\b(?:server|MCP)\s+([a-zA-Z0-9_.-]+)\s+(?:failed|unavailable|closed)/gi);
206
+ for (const match of fallbackMatches) {
207
+ const name = match[1]?.trim();
208
+ if (name && name.toLowerCase() !== "servers")
209
+ names.add(name);
210
+ }
211
+ return [...names];
212
+ }
213
+ function isOptionalMcpFailureResult(node, output, hasStdout) {
214
+ const failedNames = extractKimiMcpConnectionFailureNames(output);
215
+ if (failedNames.length === 0 || !hasStdout)
216
+ return false;
217
+ const requiredServers = node.routing?.requiresMcp ? node.routing.mcpServers ?? [] : [];
218
+ return failedNames.every((serverName) => !shouldFailOnMcpError({
219
+ serverName,
220
+ requiredServers,
221
+ failurePolicy: node.routing?.requiresMcp ? "strict" : "required-only",
222
+ }));
223
+ }
224
+ const DEFAULT_KIMI_FAST_EXIT_MS = 1500;
225
+ const DEFAULT_KIMI_STARTUP_TIMEOUT_MS = 45_000;
226
+ function resolveKimiFastExitThresholdMs(env) {
227
+ const raw = env.OMK_CHAT_FAST_EXIT_MS;
228
+ if (!raw)
229
+ return DEFAULT_KIMI_FAST_EXIT_MS;
230
+ const parsed = Number.parseInt(raw, 10);
231
+ if (!Number.isFinite(parsed))
232
+ return DEFAULT_KIMI_FAST_EXIT_MS;
233
+ return Math.max(0, parsed);
234
+ }
235
+ export function resolveKimiStartupTimeoutMs(env) {
236
+ const raw = env.OMK_CHAT_STARTUP_TIMEOUT_MS;
237
+ if (raw === undefined || raw.trim() === "")
238
+ return DEFAULT_KIMI_STARTUP_TIMEOUT_MS;
239
+ if (raw.trim() === "0")
240
+ return 0;
241
+ const parsed = Number.parseInt(raw, 10);
242
+ if (!Number.isFinite(parsed) || parsed < 1000)
243
+ return DEFAULT_KIMI_STARTUP_TIMEOUT_MS;
244
+ return Math.min(parsed, 10 * 60_000);
245
+ }
246
+ function stripAnsiControls(value) {
247
+ return value.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "");
248
+ }
249
+ function isKimiPromptReadyLine(line) {
250
+ const trimmed = stripAnsiControls(line).trim();
251
+ return /(?:^|\s)(?:waiting for input|ready for input|enter your prompt|prompt ready)(?:\s|$)/i.test(trimmed)
252
+ || /^kimi[❯>›]\s*$/i.test(trimmed);
253
+ }
254
+ export function isKimiStartupReadyData(data) {
255
+ const clean = stripAnsiControls(data);
256
+ if (/(?:^|\n)\s*(?:Kimi\s+)?Session(?:\s*ID)?\s*:/i.test(clean))
257
+ return true;
258
+ return clean.split(/\r?\n/).some(isKimiPromptReadyLine);
259
+ }
260
+ function createPtyProcessTreeTarget(ptyProcess) {
261
+ let exitCode = null;
262
+ const exitListeners = new Set();
263
+ const disposable = ptyProcess.onExit((event) => {
264
+ exitCode = event.exitCode;
265
+ for (const listener of exitListeners) {
266
+ listener(event.exitCode, event.signal);
267
+ }
268
+ exitListeners.clear();
269
+ disposable.dispose();
270
+ });
271
+ return {
272
+ pid: ptyProcess.pid,
273
+ get exitCode() {
274
+ return exitCode;
275
+ },
276
+ signalCode: null,
277
+ kill(signal) {
278
+ try {
279
+ ptyProcess.kill(typeof signal === "string" ? signal : undefined);
280
+ return true;
281
+ }
282
+ catch {
283
+ return false;
284
+ }
285
+ },
286
+ once(event, listener) {
287
+ if (event === "error")
288
+ return undefined;
289
+ if (exitCode !== null) {
290
+ queueMicrotask(() => listener(exitCode));
291
+ return undefined;
292
+ }
293
+ exitListeners.add(listener);
294
+ return {
295
+ dispose: () => exitListeners.delete(listener),
296
+ };
297
+ },
298
+ };
299
+ }
300
+ export function classifyKimiStartupExit(exitCode, elapsedMs, env = process.env) {
301
+ const allowFastExit = /^(1|true|yes)$/i.test(env.OMK_ALLOW_FAST_CHAT_EXIT ?? "");
302
+ if (allowFastExit || exitCode !== 0)
303
+ return null;
304
+ const thresholdMs = resolveKimiFastExitThresholdMs(env);
305
+ if (thresholdMs <= 0 || elapsedMs > thresholdMs)
306
+ return null;
307
+ return {
308
+ elapsedMs,
309
+ thresholdMs,
310
+ message: `Kimi exited immediately after ${elapsedMs}ms before an interactive chat could start.`,
311
+ };
312
+ }
313
+ /** args 배열에서 --mcp-config-file 경로들을 찾아 존재 여부 검증 (fail-fast, 3s timeout) */
314
+ async function preflightMcpConfigs(args) {
315
+ const MCP_PREFLIGHT_TIMEOUT_MS = 3000;
316
+ const start = Date.now();
317
+ for (let i = 0; i < args.length - 1; i++) {
318
+ if (args[i] === "--mcp-config-file") {
319
+ const configPath = args[i + 1];
320
+ if (!configPath)
321
+ continue;
322
+ if (Date.now() - start > MCP_PREFLIGHT_TIMEOUT_MS) {
323
+ console.warn(style.orange(`[omk] ⚠️ MCP preflight timed out after ${MCP_PREFLIGHT_TIMEOUT_MS}ms`));
324
+ break;
325
+ }
326
+ if (!(await pathExists(configPath))) {
327
+ console.warn(style.orange(`[omk] ⚠️ MCP config not found: ${configPath}`) +
328
+ "\n Kimi may fail to start. Run `omk doctor` to check MCP configuration.");
329
+ }
330
+ }
331
+ }
332
+ }
333
+ export async function runKimiInteractive(args, options) {
334
+ const resources = await getOmkResourceSettings();
335
+ // Debug: log args so we can verify MCP/skills flags are present
336
+ if (process.env.OMK_DEBUG === "1") {
337
+ process.stderr.write(`[omk-debug] runKimiInteractive args: ${JSON.stringify(args)}\n`);
338
+ }
339
+ const noBanner = process.env.OMK_CHAT_NO_BANNER === "1";
340
+ const theme = await loadThemeConfig();
341
+ const launchMeta = parseKimiLaunchMeta(args, { ...process.env, ...(options?.env ?? {}) }, options?.cwd ?? process.cwd());
342
+ let observedKimiSession;
343
+ let startupReady = false;
344
+ const markStartupReady = () => {
345
+ startupReady = true;
346
+ };
347
+ const replacer = new BannerReplacer((meta) => {
348
+ if (noBanner)
349
+ return;
350
+ writeStdout(omkBanner(meta, formatOmkVersionFooter(), theme ?? undefined) + "\n");
351
+ options?.onMeta?.(meta);
352
+ }, true, (rawMeta) => {
353
+ const kimiSession = rawMeta.session?.trim();
354
+ if (!kimiSession || kimiSession === observedKimiSession)
355
+ return;
356
+ observedKimiSession = kimiSession;
357
+ process.env.KIMI_SESSION_ID = kimiSession;
358
+ options?.onKimiMeta?.(rawMeta);
359
+ markStartupReady();
360
+ if (!noBanner) {
361
+ const omkSession = launchMeta.session;
362
+ const suffix = omkSession && omkSession !== kimiSession ? ` ${style.gray(`(OMK session: ${omkSession})`)}` : "";
363
+ writeStdout(`${style.gray("[omk] Kimi session:")} ${style.cream(kimiSession)}${suffix}\n`);
364
+ }
365
+ });
366
+ const bugFilter = new KimiBugFilter();
367
+ const statusLine = await KimiStatusLineEnhancer.create();
368
+ const baseEnv = buildSafeKimiChildEnv(process.env, options?.env ?? {}, {}, {
369
+ warnExplicitSecrets: true,
370
+ explicitEnvContext: "interactive Kimi options.env",
371
+ });
372
+ const originalHome = resolveOriginalHome(baseEnv);
373
+ const tmpHome = await prepareIsolatedKimiHome({
374
+ originalHome,
375
+ env: baseEnv,
376
+ skillsScope: resources.skillsScope,
377
+ hooksScope: resources.hooksScope,
378
+ });
379
+ const env = buildSafeKimiChildEnv({}, baseEnv, {
380
+ KIMI_HIDE_BANNER: "1",
381
+ KIMI_NO_BANNER: "1",
382
+ OMK_RESOURCE_PROFILE_EFFECTIVE: resources.profile,
383
+ OMK_ORIGINAL_HOME: originalHome,
384
+ HOME: tmpHome,
385
+ USERPROFILE: tmpHome,
386
+ HOMEDRIVE: "",
387
+ HOMEPATH: tmpHome,
388
+ PWD: options?.cwd ?? process.cwd(),
389
+ CODEX_HOME: join(tmpHome, ".codex"),
390
+ });
391
+ const kimiBin = resolveKimiBin(env);
392
+ // Binary resolution guard: verify `kimi` is reachable before spawn
393
+ const kimiAvailable = await checkCommand(kimiBin);
394
+ if (!kimiAvailable) {
395
+ await cleanupIsolatedKimiHome(tmpHome);
396
+ throw new Error("[omk] `kimi` command not found in PATH. " +
397
+ "Install Kimi CLI first: npm i -g @anthropic-ai/kimi-code\n" +
398
+ "If already installed, check your PATH or set KIMI_BIN env var.");
399
+ }
400
+ // MCP preflight: verify config files exist before spawn
401
+ await preflightMcpConfigs(args);
402
+ // ── Backpressure-safe stdout writer (circular buffer) ──
403
+ // Prevents process.stdout.write from blocking the event loop when the
404
+ // TTY is slow, which in turn starves stdin keypress handlers.
405
+ const rawMaxLines = parseInt(process.env.OMK_MAX_STDOUT_LINES ?? "10000", 10);
406
+ const MAX_STDOUT_LINES = Number.isNaN(rawMaxLines) ? 10000 : Math.max(1000, Math.min(20000, rawMaxLines));
407
+ const MAX_CHUNK_BYTES = 65536; // cap individual chunks to avoid memory spikes
408
+ const stdoutQueue = [];
409
+ let stdoutHead = 0;
410
+ let stdoutCount = 0;
411
+ let stdoutWriting = false;
412
+ function circularPush(data) {
413
+ // Limit individual chunk size to prevent memory spikes from huge single writes
414
+ const chunks = data.length > MAX_CHUNK_BYTES
415
+ ? [data.slice(0, MAX_CHUNK_BYTES), data.slice(MAX_CHUNK_BYTES)]
416
+ : [data];
417
+ for (const chunk of chunks) {
418
+ const idx = (stdoutHead + stdoutCount) % MAX_STDOUT_LINES;
419
+ if (stdoutCount < MAX_STDOUT_LINES) {
420
+ stdoutQueue[idx] = chunk;
421
+ stdoutCount++;
422
+ }
423
+ else {
424
+ stdoutQueue[stdoutHead] = chunk;
425
+ stdoutHead = (stdoutHead + 1) % MAX_STDOUT_LINES;
426
+ }
427
+ }
428
+ }
429
+ function circularShift() {
430
+ if (stdoutCount === 0)
431
+ return undefined;
432
+ const data = stdoutQueue[stdoutHead];
433
+ stdoutQueue[stdoutHead] = "";
434
+ stdoutHead = (stdoutHead + 1) % MAX_STDOUT_LINES;
435
+ stdoutCount--;
436
+ return data;
437
+ }
438
+ function flushStdoutQueue() {
439
+ stdoutWriting = true;
440
+ while (stdoutCount > 0) {
441
+ const chunk = circularShift();
442
+ if (!process.stdout.write(chunk)) {
443
+ process.stdout.once("drain", () => {
444
+ stdoutWriting = false;
445
+ flushStdoutQueue();
446
+ });
447
+ return;
448
+ }
449
+ }
450
+ stdoutWriting = false;
451
+ }
452
+ function writeStdout(data) {
453
+ circularPush(data);
454
+ if (!stdoutWriting) {
455
+ flushStdoutQueue();
456
+ }
457
+ }
458
+ // Print OMK banner BEFORE spawning Kimi
459
+ const meta = launchMeta;
460
+ if (!noBanner) {
461
+ writeStdout(omkBanner(meta, formatOmkVersionFooter(), theme ?? undefined) + "\n");
462
+ }
463
+ options?.onMeta?.(meta);
464
+ let ptyModule;
465
+ try {
466
+ ptyModule = await import("node-pty");
467
+ }
468
+ catch (err) {
469
+ await cleanupIsolatedKimiHome(tmpHome);
470
+ const message = err instanceof Error ? err.message : String(err);
471
+ throw new Error("[omk] Failed to load node-pty native module. " +
472
+ `(${message})\n` +
473
+ "This usually happens when installed with --ignore-scripts.\n" +
474
+ "Fix: npm rebuild -g open-multi-agent-kit\n" +
475
+ "Or reinstall: npm uninstall -g open-multi-agent-kit && npm install -g open-multi-agent-kit");
476
+ }
477
+ let ptyProcess;
478
+ try {
479
+ ptyProcess = ptyModule.spawn(kimiBin, args, {
480
+ name: "xterm-256color",
481
+ cols: process.stdout.columns || 80,
482
+ rows: process.stdout.rows || 24,
483
+ cwd: options?.cwd ?? process.cwd(),
484
+ env,
485
+ });
486
+ }
487
+ catch (err) {
488
+ await cleanupIsolatedKimiHome(tmpHome);
489
+ throw err;
490
+ }
491
+ const spawnedAt = Date.now();
492
+ const ptyTarget = createPtyProcessTreeTarget(ptyProcess);
493
+ // ── Signal handlers registered inside Promise below ──
494
+ let recentProviderOutput = "";
495
+ const rememberProviderOutput = (chunk) => {
496
+ recentProviderOutput = (recentProviderOutput + chunk).slice(-8000);
497
+ };
498
+ // stdout → 터미널 (버그 필터 → 배너 필터링 적용)
499
+ ptyProcess.onData((data) => {
500
+ options?.onData?.(data);
501
+ if (isKimiStartupReadyData(data))
502
+ markStartupReady();
503
+ rememberProviderOutput(data);
504
+ // Strip terminal sequences that break scrollback / native mouse scrolling:
505
+ // - alternate-screen buffer enter/exit (1049, legacy 47)
506
+ // - mouse tracking (1000, 1002, 1006)
507
+ // - scroll-region setting (r) — prevents partial-screen redraws that confuse scrollback
508
+ data = data
509
+ .replace(/\x1b\[\?1049[hl]/g, "")
510
+ .replace(/\x1b\[\?47[hl]/g, "")
511
+ .replace(/\x1b\[\?(1000|1002|1003|1006)[hl]/g, "")
512
+ .replace(/\x1b\[\d+;\d+[r]/g, "");
513
+ const bugResult = bugFilter.process(data);
514
+ if (bugResult.sendEnter) {
515
+ ptyProcess.write("\n");
516
+ }
517
+ if (bugResult.output === null) {
518
+ return;
519
+ }
520
+ const output = replacer.process(bugResult.output);
521
+ if (output !== null) {
522
+ writeStdout(statusLine.process(output));
523
+ }
524
+ });
525
+ // stdin → pty (Buffer passthrough for lower latency)
526
+ const terminalInputState = enableRawTerminalInput(process.stdin);
527
+ const handleStdinData = (data) => {
528
+ const text = typeof data === "string" ? data : data.toString("utf8");
529
+ // Ctrl+V (0x16) — auto-attach a clipboard image if Windows Capture/Snipping Tool
530
+ // copied one via Ctrl+C. Text paste still falls through to Kimi unchanged.
531
+ // Set OMK_IMAGE_PASTE_MODE=native/off to disable, or managed to show clipboard errors.
532
+ if (text.includes("\x16")) {
533
+ const mode = (process.env.OMK_IMAGE_PASTE_MODE ?? "auto").toLowerCase();
534
+ const remaining = text.replace(/\x16/g, "");
535
+ if (!["native", "off", "disabled", "0"].includes(mode)) {
536
+ const result = pasteScreenshot(getProjectRoot());
537
+ if (result.ok && result.relativePath) {
538
+ // Insert path but do NOT auto-submit; user must press Enter.
539
+ ptyProcess.write(`Image file: ${result.relativePath}`);
540
+ if (remaining) {
541
+ ptyProcess.write(remaining);
542
+ }
543
+ return;
544
+ }
545
+ if (mode === "managed" && remaining.trim().length === 0) {
546
+ ptyProcess.write(`[Clipboard: ${result.error ?? "no image found"}]`);
547
+ return;
548
+ }
549
+ }
550
+ ptyProcess.write(text);
551
+ return;
552
+ }
553
+ // /paste-image — explicit command to save clipboard image and insert path
554
+ if (text.trim() === "/paste-image") {
555
+ const result = pasteScreenshot(getProjectRoot());
556
+ if (result.ok && result.relativePath) {
557
+ // Insert path but do NOT auto-submit; user must press Enter.
558
+ ptyProcess.write(`Image file: ${result.relativePath}`);
559
+ }
560
+ else {
561
+ ptyProcess.write(`[Screenshot error: ${result.error ?? "No image found"}]`);
562
+ }
563
+ return;
564
+ }
565
+ ptyProcess.write(text);
566
+ };
567
+ process.stdin.on("data", handleStdinData);
568
+ // 터미널 리사이즈 → pty 동기화
569
+ const handleStdoutResize = () => {
570
+ ptyProcess.resize(process.stdout.columns || 80, process.stdout.rows || 24);
571
+ };
572
+ process.stdout.on("resize", handleStdoutResize);
573
+ // 종료 대기
574
+ return new Promise((resolve) => {
575
+ let cleaned = false;
576
+ let settled = false;
577
+ let startupTimer;
578
+ let terminationStarted;
579
+ const clearWatchdogs = () => {
580
+ if (startupTimer)
581
+ clearTimeout(startupTimer);
582
+ };
583
+ const cleanupRuntime = async () => {
584
+ if (cleaned)
585
+ return;
586
+ cleaned = true;
587
+ clearWatchdogs();
588
+ try {
589
+ process.stdin.off("data", handleStdinData);
590
+ process.stdout.off("resize", handleStdoutResize);
591
+ process.removeListener("SIGINT", signalHandler);
592
+ process.removeListener("SIGTERM", signalHandler);
593
+ }
594
+ finally {
595
+ try {
596
+ statusLine.dispose();
597
+ }
598
+ finally {
599
+ restoreTerminalInputState(process.stdin, terminalInputState);
600
+ }
601
+ }
602
+ await cleanupIsolatedKimiHome(tmpHome);
603
+ };
604
+ const resolveOnce = (code) => {
605
+ if (settled)
606
+ return;
607
+ settled = true;
608
+ clearWatchdogs();
609
+ resolve(code);
610
+ };
611
+ const forceTerminate = (exitCode) => {
612
+ if (!terminationStarted) {
613
+ terminationStarted = terminateProcessTree(ptyTarget, { graceMs: 1000, waitMs: 5000 })
614
+ .catch((err) => {
615
+ const message = err instanceof Error ? err.message : String(err);
616
+ process.stderr.write(`[omk] PTY termination warning: ${message}\n`);
617
+ try {
618
+ process.kill(-ptyProcess.pid, "SIGKILL");
619
+ }
620
+ catch {
621
+ try {
622
+ ptyProcess.kill("SIGKILL");
623
+ }
624
+ catch { /* pty already dead */ }
625
+ }
626
+ });
627
+ }
628
+ terminationStarted
629
+ .then(() => cleanupRuntime())
630
+ .catch((err) => {
631
+ const message = err instanceof Error ? err.message : String(err);
632
+ process.stderr.write(`[omk] PTY cleanup warning: ${message}\n`);
633
+ })
634
+ .finally(() => resolveOnce(exitCode));
635
+ };
636
+ const startupTimeoutMs = resolveKimiStartupTimeoutMs(env);
637
+ if (startupTimeoutMs > 0) {
638
+ startupTimer = setTimeout(() => {
639
+ if (startupReady || settled)
640
+ return;
641
+ const runId = options?.env?.OMK_RUN_ID;
642
+ const resumeHint = runId ? ` • resume: omk chat --run-id ${runId}` : "";
643
+ process.stderr.write(style.red(`[omk] Kimi startup timed out after ${startupTimeoutMs}ms without session or prompt-ready signal${resumeHint}\n`));
644
+ forceTerminate(1);
645
+ }, startupTimeoutMs);
646
+ startupTimer.unref?.();
647
+ }
648
+ const signalHandler = (signal) => {
649
+ // Remove listeners first to prevent re-entry
650
+ process.removeListener("SIGINT", signalHandler);
651
+ process.removeListener("SIGTERM", signalHandler);
652
+ process.exitCode = signal === "SIGINT" ? 130 : 143; // 128+2, 128+15
653
+ forceTerminate(process.exitCode);
654
+ };
655
+ process.once("SIGINT", signalHandler);
656
+ process.once("SIGTERM", signalHandler);
657
+ ptyProcess.onExit(({ exitCode }) => {
658
+ if (settled)
659
+ return;
660
+ void (async () => {
661
+ const elapsedMs = Date.now() - spawnedAt;
662
+ const bugRest = bugFilter.forceFlush();
663
+ if (bugRest)
664
+ writeStdout(statusLine.process(bugRest));
665
+ const replacerRest = replacer.forceFlush();
666
+ if (replacerRest)
667
+ writeStdout(statusLine.process(replacerRest));
668
+ await cleanupRuntime().catch((err) => {
669
+ const message = err instanceof Error ? err.message : String(err);
670
+ process.stderr.write(`[omk] PTY cleanup warning: ${message}\n`);
671
+ });
672
+ const runId = options?.env?.OMK_RUN_ID;
673
+ const resumeHint = runId ? ` • resume: omk chat --run-id ${runId}` : "";
674
+ const startupExit = classifyKimiStartupExit(exitCode, elapsedMs, env);
675
+ if (startupExit) {
676
+ process.stderr.write(style.red(`[omk] ${startupExit.message}${resumeHint}\n`));
677
+ process.stderr.write(style.orange(`[omk] Treating this as a startup failure so OMK does not silently close the chat.\n` +
678
+ ` Run 'kimi' directly or 'omk doctor --fix' to diagnose startup configuration.\n`));
679
+ }
680
+ else if (exitCode !== 0) {
681
+ process.stderr.write(style.red(`[omk] kimi exited with code ${exitCode}${resumeHint}\n`));
682
+ // Detect MCP connection failures from stderr that was buffered in PTY
683
+ const providerHint = formatKimiProviderFailureHint(recentProviderOutput);
684
+ if (providerHint) {
685
+ process.stderr.write(style.orange(providerHint));
686
+ }
687
+ else if (exitCode === 1) {
688
+ process.stderr.write(style.orange(`[omk] If this was caused by MCP server connection failure, run 'omk doctor' to diagnose.\n` +
689
+ ` You can also try: OMK_MCP_SCOPE=none omk chat --provider kimi\n`));
690
+ }
691
+ }
692
+ resolveOnce(startupExit ? 1 : exitCode);
693
+ })();
694
+ });
695
+ });
696
+ }
697
+ function createLiveThinkingHandler(onThinking) {
698
+ if (!onThinking)
699
+ return undefined;
700
+ let recentLine = "";
701
+ let debounceTimer = null;
702
+ const flush = () => {
703
+ if (recentLine)
704
+ onThinking(`📝 ${recentLine}`);
705
+ };
706
+ return (chunk) => {
707
+ const lines = chunk.split("\n");
708
+ for (const raw of lines) {
709
+ const line = raw.trim();
710
+ if (!line || line.length < 3)
711
+ continue;
712
+ // Explicit thinking markers
713
+ const explicit = line.match(/^<think(?:ing)?>[\s:]*(.+?)(?:<\/think(?:ing)?>)?$/i);
714
+ if (explicit) {
715
+ onThinking(`🧠 ${explicit[1].trim().slice(0, 100)}`);
716
+ continue;
717
+ }
718
+ // Tool/file activity
719
+ if (/read_file|write_file|edit_file|search_files|glob|grep|ctx_read/i.test(line)) {
720
+ const m = line.match(/["']([^"']{1,60})["']/);
721
+ onThinking(m ? `📄 ${m[1].split("/").pop() ?? m[1]}` : `🔧 ${line.slice(0, 60)}`);
722
+ continue;
723
+ }
724
+ if (line.length > 5 && line.length < 120 && !line.startsWith("```")) {
725
+ recentLine = line.slice(0, 80);
726
+ }
727
+ }
728
+ if (debounceTimer)
729
+ clearTimeout(debounceTimer);
730
+ debounceTimer = setTimeout(flush, 400);
731
+ };
732
+ }
733
+ function isPathInside(parent, child) {
734
+ const rel = relative(resolve(parent), resolve(child));
735
+ return rel === "" || (!rel.startsWith("..") && !isAbsolute(rel));
736
+ }
737
+ function formatFallbackAgentFilePath(fallback, projectRoot) {
738
+ const normalizedFallback = resolve(fallback);
739
+ if (isPathInside(projectRoot, normalizedFallback)) {
740
+ return `project fallback ${relative(projectRoot, normalizedFallback).replace(/\\/g, "/") || "."}`;
741
+ }
742
+ const userHome = getUserHome();
743
+ if (isPathInside(userHome, normalizedFallback)) {
744
+ return `global fallback ~/${relative(userHome, normalizedFallback).replace(/\\/g, "/")}`;
745
+ }
746
+ return `external fallback ${fallback}`;
747
+ }
748
+ function resolveProjectRootForAgentFallback(fallback) {
749
+ if (fallback) {
750
+ const normalized = resolve(fallback).replace(/\\/g, "/");
751
+ const marker = normalized.match(/^(.*)\/\.(?:omk|kimi)\/agents(?:\/|$)/);
752
+ if (marker?.[1])
753
+ return marker[1];
754
+ }
755
+ return getProjectRoot();
756
+ }
757
+ export async function resolveAgentFileForRole(role, fallback) {
758
+ const projectRoot = resolveProjectRootForAgentFallback(fallback);
759
+ const candidates = [
760
+ join(projectRoot, ".omk", "agents", `${role}.yaml`),
761
+ join(projectRoot, ".omk", "agents", `${role}.yml`),
762
+ join(projectRoot, ".omk", "agents", "roles", `${role}.yaml`),
763
+ join(projectRoot, ".omk", "agents", "roles", `${role}.yml`),
764
+ join(projectRoot, ".kimi", "agents", `${role}.yaml`),
765
+ join(projectRoot, ".kimi", "agents", `${role}.yml`),
766
+ join(projectRoot, ".kimi", "agents", "roles", `${role}.yaml`),
767
+ join(projectRoot, ".kimi", "agents", "roles", `${role}.yml`),
768
+ ];
769
+ for (const candidate of candidates) {
770
+ if (await pathExists(candidate))
771
+ return candidate;
772
+ }
773
+ if (fallback) {
774
+ const searched = candidates.map((candidate) => relative(projectRoot, candidate).replace(/\\/g, "/"));
775
+ console.warn(`[omk] No agent file found for role "${role}" in ${searched.join(", ")}; ` +
776
+ `falling back to ${formatFallbackAgentFilePath(fallback, projectRoot)}. ` +
777
+ `Run "omk doctor --fix" to restore missing generated role files and root aliases.`);
778
+ }
779
+ return fallback;
780
+ }
781
+ export function createKimiTaskRunner(options = {}) {
782
+ const { cwd, timeout = 120000, env, agentFile, promptPrefix, mcpScope, skillsScope, hooksScope, mcpNames, skillNames, hookNames, toolNames, onThinking, roleAgentFiles } = options;
783
+ let currentOnThinking = onThinking;
784
+ const runner = {
785
+ get onThinking() {
786
+ return currentOnThinking;
787
+ },
788
+ set onThinking(fn) {
789
+ currentOnThinking = fn;
790
+ },
791
+ fork(newOnThinking) {
792
+ return createKimiTaskRunner({ ...options, onThinking: newOnThinking });
793
+ },
794
+ async run(node, nodeEnv, signal) {
795
+ const baseEnv = buildSafeKimiChildEnv(process.env, { ...(env ?? {}), ...nodeEnv }, {}, {
796
+ warnExplicitSecrets: true,
797
+ explicitEnvContext: "Kimi DAG env/nodeEnv",
798
+ });
799
+ const resources = await getOmkResourceSettings();
800
+ const effectiveMcpScope = mcpScope ?? resources.mcpScope;
801
+ const effectiveSkillsScope = skillsScope ?? resources.skillsScope;
802
+ const effectiveHooksScope = hooksScope ?? resources.hooksScope;
803
+ const originalHome = resolveOriginalHome(baseEnv);
804
+ const tmpHome = await prepareIsolatedKimiHome({
805
+ originalHome,
806
+ env: baseEnv,
807
+ skillsScope: effectiveSkillsScope,
808
+ hooksScope: effectiveHooksScope,
809
+ });
810
+ const worktree = node.worktree ?? cwd;
811
+ const mergedEnv = buildSafeKimiChildEnv({}, baseEnv, {
812
+ OMK_ORIGINAL_HOME: originalHome,
813
+ HOME: tmpHome,
814
+ USERPROFILE: tmpHome,
815
+ HOMEDRIVE: "",
816
+ HOMEPATH: tmpHome,
817
+ PWD: worktree ?? process.cwd(),
818
+ CODEX_HOME: join(tmpHome, ".codex"),
819
+ });
820
+ const args = [];
821
+ const mcpAllowlist = nodeEnv.OMK_MCP_HINTS !== undefined
822
+ ? nodeEnv.OMK_MCP_HINTS.split(",").map((s) => s.trim()).filter(Boolean)
823
+ : node.routing?.mcpServers ?? mcpNames;
824
+ await injectKimiGlobals(args, { mcpScope: effectiveMcpScope, skillsScope: effectiveSkillsScope, hooksScope: effectiveHooksScope, role: node.role, mcpAllowlist });
825
+ await preflightMcpConfigs(args);
826
+ const resolvedAgentFile = roleAgentFiles
827
+ ? await resolveAgentFileForRole(node.role, agentFile)
828
+ : agentFile;
829
+ if (resolvedAgentFile) {
830
+ const scopedAgentFile = await writeScopedAgentFile({
831
+ baseAgentFile: resolvedAgentFile,
832
+ outputFile: defaultScopedRoleAgentFile(getProjectRoot(), mergedEnv.OMK_RUN_ID ?? mergedEnv.OMK_SESSION_ID, node.role, node.id),
833
+ role: node.role,
834
+ resources: {
835
+ mcpScope: effectiveMcpScope,
836
+ skillsScope: effectiveSkillsScope,
837
+ hooksScope: effectiveHooksScope,
838
+ mcpNames: node.routing?.mcpServers ?? mcpNames ?? [],
839
+ skillNames: node.routing?.skills ?? skillNames ?? [],
840
+ hookNames: node.routing?.hooks ?? hookNames ?? [],
841
+ toolNames: node.routing?.tools ?? toolNames ?? [],
842
+ },
843
+ });
844
+ args.push("--agent-file", scopedAgentFile);
845
+ }
846
+ const rawPromptInput = `${buildNodeMessage(node, mergedEnv, promptPrefix)}\n`;
847
+ args.push("--print", "--input-format", "text");
848
+ if (worktree) {
849
+ await ensureDir(worktree);
850
+ }
851
+ const runId = mergedEnv.OMK_RUN_ID;
852
+ const logPath = runId
853
+ ? join(getProjectRoot(), ".omk", "runs", runId, `${node.id}.log`)
854
+ : undefined;
855
+ const thinkingHandler = createLiveThinkingHandler(currentOnThinking);
856
+ const effectiveTimeout = await resolveTimeoutMs({ timeoutMs: timeout, timeoutPreset: node.timeoutPreset });
857
+ // Binary resolution guard for DAG mode
858
+ const kimiBin = resolveKimiBin(mergedEnv);
859
+ const kimiAvailable = await checkCommand(kimiBin);
860
+ if (!kimiAvailable) {
861
+ return {
862
+ success: false,
863
+ exitCode: 1,
864
+ stdout: "",
865
+ stderr: `[omk] Kimi CLI not found: ${kimiBin}. Install Kimi CLI or set KIMI_BIN to an executable path.`,
866
+ };
867
+ }
868
+ let result;
869
+ let promptInput = rawPromptInput;
870
+ let contextPreflightMetadata;
871
+ try {
872
+ const preflight = await preflightProviderInput(rawPromptInput, {
873
+ provider: "kimi",
874
+ model: mergedEnv.OMK_KIMI_MODEL ?? mergedEnv.OMK_MODEL,
875
+ contextWindow: options.contextWindow,
876
+ reservedOutputTokens: options.reservedOutputTokens,
877
+ safetyMarginTokens: options.safetyMarginTokens,
878
+ runId,
879
+ nodeId: node.id,
880
+ projectRoot: getProjectRoot(),
881
+ });
882
+ if (!preflight.ok) {
883
+ return {
884
+ success: false,
885
+ exitCode: 1,
886
+ stdout: "",
887
+ stderr: contextPreflightErrorMessage(preflight.report),
888
+ metadata: { contextPreflight: preflight.report },
889
+ };
890
+ }
891
+ promptInput = `${preflight.input.trimEnd()}\n`;
892
+ contextPreflightMetadata = preflight.report.compacted
893
+ ? { contextPreflight: preflight.report }
894
+ : undefined;
895
+ const continuePromptGuard = new KimiContinuePromptGuard({
896
+ maxAutoEnters: Number(process.env.OMK_KIMI_MAX_AUTO_ENTER ?? 5),
897
+ });
898
+ result = await runShellStreaming(kimiBin, args, {
899
+ cwd: worktree,
900
+ timeout: effectiveTimeout,
901
+ env: mergedEnv,
902
+ logPath,
903
+ input: promptInput,
904
+ onStdout: (chunk, io) => {
905
+ thinkingHandler?.(chunk);
906
+ const decision = continuePromptGuard.process(chunk);
907
+ if (decision.sendEnter) {
908
+ io?.writeStdin("\n");
909
+ }
910
+ if (decision.exceeded) {
911
+ process.stderr.write(`[omk] ${decision.reason}\n`);
912
+ }
913
+ },
914
+ onStderr: (chunk, io) => {
915
+ const decision = continuePromptGuard.process(chunk);
916
+ if (decision.sendEnter) {
917
+ io?.writeStdin("\n");
918
+ }
919
+ if (decision.exceeded) {
920
+ process.stderr.write(`[omk] ${decision.reason}\n`);
921
+ }
922
+ },
923
+ signal,
924
+ });
925
+ }
926
+ finally {
927
+ await cleanupIsolatedKimiHome(tmpHome);
928
+ }
929
+ // Debug: log runner result so we can diagnose unexpected failures
930
+ if (result.failed || result.exitCode !== 0) {
931
+ const stderrPreview = result.stderr.slice(0, 500).replace(/\n/g, "\\n");
932
+ process.stderr.write(`[omk-debug] node=${node.id} exitCode=${result.exitCode} failed=${result.failed} stdoutLen=${result.stdout.length} stderrLen=${result.stderr.length} stderrPreview=${stderrPreview}\n`);
933
+ if (result.stderr.includes("Failed to connect MCP servers")) {
934
+ process.stderr.write(style.red(`[omk] MCP server connection failure detected in node ${node.id}.\n` +
935
+ ` Run 'omk doctor' to check MCP status, or disable the failing server in ~/.kimi/mcp.json.\n`));
936
+ }
937
+ if (result.stderr.includes("text content is empty")) {
938
+ process.stderr.write(style.red(`[omk] Kimi API returned 400 "text content is empty" in node ${node.id}.\n` +
939
+ ` This is a known Kimi CLI bug (fixed in v1.39.0, 2026-04-24).\n` +
940
+ ` Upgrade Kimi CLI: npm i -g @anthropic-ai/kimi-code\n`));
941
+ }
942
+ const providerHint = formatKimiProviderFailureHint(`${result.stderr}\n${result.stdout}`);
943
+ if (providerHint) {
944
+ process.stderr.write(style.orange(providerHint));
945
+ }
946
+ }
947
+ const providerHint = formatKimiProviderFailureHint(`${result.stderr}\n${result.stdout}`);
948
+ if (providerHint && !result.stderr.includes("[omk] Kimi monthly quota exhausted")) {
949
+ result = {
950
+ ...result,
951
+ stderr: result.stderr ? `${result.stderr}\n${providerHint}` : providerHint,
952
+ };
953
+ }
954
+ const prefix = `[${node.id}:${node.role}] `;
955
+ const prefixStdout = result.stdout
956
+ .split("\n")
957
+ .map((line) => (line.trim() ? prefix + line : line))
958
+ .join("\n");
959
+ const prefixStderr = result.stderr
960
+ .split("\n")
961
+ .map((line) => (line.trim() ? prefix + line : line))
962
+ .join("\n");
963
+ // Known MCP soft-failure: Kimi CLI may return exit code 1 when an MCP
964
+ // server fails to connect, even though it produced meaningful stdout.
965
+ // Only allow this specific exception; all other non-zero exits are failures.
966
+ const optionalMcpFailure = isOptionalMcpFailureResult(node, `${result.stderr}\n${result.stdout}`, result.stdout.trim().length > 0);
967
+ const stderrWithOptionalWarning = optionalMcpFailure
968
+ ? [
969
+ prefixStderr,
970
+ `${prefix}[omk] Warning: optional MCP server startup failed; continuing because this node does not require MCP.`,
971
+ ].filter(Boolean).join("\n")
972
+ : prefixStderr;
973
+ return {
974
+ success: (!result.failed && result.exitCode === 0) || optionalMcpFailure,
975
+ exitCode: result.exitCode,
976
+ stdout: prefixStdout,
977
+ stderr: stderrWithOptionalWarning,
978
+ metadata: contextPreflightMetadata,
979
+ };
980
+ },
981
+ };
982
+ return runner;
983
+ }
984
+ function buildNodeMessage(node, env, promptPrefix) {
985
+ const routing = node.routing;
986
+ const mandatoryRouting = [];
987
+ if (routing?.skills?.length) {
988
+ mandatoryRouting.push(`- Skills (MUST use): ${routing.skills.join(", ")}`);
989
+ }
990
+ if (routing?.mcpServers?.length) {
991
+ mandatoryRouting.push(`- MCP servers (MUST activate): ${routing.mcpServers.join(", ")}`);
992
+ }
993
+ if (routing?.tools?.length) {
994
+ mandatoryRouting.push(`- Tools (MUST call when relevant): ${routing.tools.join(", ")}`);
995
+ }
996
+ if (routing?.rationale) {
997
+ mandatoryRouting.push(`- Rationale: ${routing.rationale}`);
998
+ }
999
+ const deepseekAdvisory = env.OMK_DEEPSEEK_ADVISORY?.trim();
1000
+ const actionAtom = routing?.actionAtom;
1001
+ const actionAtomSection = actionAtom
1002
+ ? [
1003
+ "ActionAtom contract (source of truth for this node):",
1004
+ `- id: ${actionAtom.id}`,
1005
+ `- label: ${actionAtom.label}`,
1006
+ `- verb: ${actionAtom.verb}`,
1007
+ `- object: ${actionAtom.object ?? "assigned scope"}`,
1008
+ `- evidence target: ${actionAtom.evidenceTarget}`,
1009
+ `- done condition: ${actionAtom.doneCondition}`,
1010
+ ].join("\n")
1011
+ : undefined;
1012
+ const sections = [
1013
+ promptPrefix?.trim(),
1014
+ [
1015
+ `Execute DAG node: ${node.id}`,
1016
+ `Name: ${node.name}`,
1017
+ `Role: ${node.role}`,
1018
+ `Run ID: ${env.OMK_RUN_ID ?? ""}`,
1019
+ `Dependencies: ${node.dependsOn.length > 0 ? node.dependsOn.join(", ") : "none"}`,
1020
+ `Context budget: ${routing?.contextBudget ?? env.OMK_CONTEXT_BUDGET ?? "small"}`,
1021
+ `Evidence required: ${String(routing?.evidenceRequired ?? env.OMK_ROUTE_EVIDENCE_REQUIRED ?? false)}`,
1022
+ ].join("\n"),
1023
+ actionAtomSection,
1024
+ mandatoryRouting.length > 0
1025
+ ? [
1026
+ "Routing directives (MANDATORY — activate these skills/MCP/tools explicitly):",
1027
+ ...mandatoryRouting,
1028
+ "- Do not ignore the routing hints above.",
1029
+ "- If a skill or MCP server is listed, prefer its capabilities over generic reasoning.",
1030
+ ].join("\n")
1031
+ : undefined,
1032
+ deepseekAdvisory
1033
+ ? [
1034
+ "DeepSeek advisory (non-authoritative — verify before editing):",
1035
+ `- Status: ${env.OMK_DEEPSEEK_ADVISORY_STATUS ?? "success"}`,
1036
+ `- Model: ${env.OMK_DEEPSEEK_ADVISORY_MODEL ?? "deepseek-v4-pro"}`,
1037
+ deepseekAdvisory,
1038
+ "The configured authority provider remains responsible for actual file edits, shell execution, evidence, and final acceptance.",
1039
+ ].join("\n")
1040
+ : undefined,
1041
+ [
1042
+ "Instructions:",
1043
+ "- Treat the prompt prefix as the active provider-neutral orchestration contract; turn it into concrete node work, not a repeated summary.",
1044
+ "- Preserve completed work and continue only the unresolved scope named by this node.",
1045
+ "- Keep context small and read only the files needed for this node.",
1046
+ "- Use the listed skills/MCP/tools when they fit the node.",
1047
+ "- Produce concrete evidence, changed files, blockers, and verification result.",
1048
+ "- Do not silently skip required gates.",
1049
+ ].join("\n"),
1050
+ ].filter((section) => Boolean(section));
1051
+ return sections.join("\n\n");
1052
+ }