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,2058 @@
1
+ # OMK CLI v2 Runtime Architecture
2
+
3
+ > 목적: 현재 OMK interactive chat/runtime에서 발생하는 **prompt envelope 비대화**, **MCP 전체 강제 활성화**, **theme 미적용**, **NLP 비활성화**, **slash command 비대화형 유지**, **optional MCP 실패 fatal 처리** 문제를 해결하기 위한 CLI/runtime 아키텍처 문서.
4
+
5
+ - 대상 저장소: `dmae97/open-multi-agent-kit`
6
+ - 기준 관찰 로그: `붙여넣은 마크다운(1)(3).md`
7
+ - 기준 공개 커밋 맥락: `main` 최신 공개 커밋이 `fix(runtime): reuse fallback provider default in env` 계열로 확인된 상태
8
+ - 핵심 방향: **CLI 프레임워크 교체보다 먼저 `CapabilityPlan + RuntimeSidecar + OutputRouter + ProviderEventNormalizer`를 도입한다.**
9
+
10
+ ---
11
+
12
+ ## 0. Executive Summary
13
+
14
+ 현재 OMK의 문제는 개별 provider, Kimi, theme palette, slash command handler 하나의 문제가 아니다. 근본 원인은 다음 한 줄이다.
15
+
16
+ ```txt
17
+ OMK control-plane envelope가 machine sidecar로 분리되지 않고 provider model prompt와 provider runtime config로 그대로 누수되고 있다.
18
+ ```
19
+
20
+ 그 결과 다음 장애가 동시에 발생한다.
21
+
22
+ ```txt
23
+ 1. 사용자 요청은 짧은데 provider prompt는 수만 글자까지 비대해진다.
24
+ 2. available MCP/skills가 required activation으로 오인된다.
25
+ 3. unrelated MCP 하나가 실패해도 전체 turn이 exit=1로 죽는다.
26
+ 4. provider raw stdout/event가 ThemeRenderer와 NlpRenderer를 우회한다.
27
+ 5. slash command가 CommandBus와 session state에 연결되지 않고 one-shot local print로 남는다.
28
+ 6. runtime preset을 줄여도 Kimi isolated HOME 또는 ~/.kimi/mcp.json 전체가 다시 로딩된다.
29
+ ```
30
+
31
+ 해결책은 CLI를 다음 구조로 재설계하는 것이다.
32
+
33
+ ```txt
34
+ User Input / Slash Command
35
+
36
+ CommandBus
37
+
38
+ IntentClassifier
39
+
40
+ CapabilitySelector
41
+
42
+ RuntimeSidecar Builder
43
+ ↓ ↓
44
+ NLP Prompt Compiler Filtered MCP Config
45
+ ↓ ↓
46
+ ProviderAdapter Provider Runtime
47
+
48
+ ProviderEventNormalizer
49
+
50
+ OmkEventBus
51
+
52
+ OutputRouter
53
+
54
+ ThemeRenderer / NlpRenderer / JsonRenderer
55
+ ```
56
+
57
+ 핵심 원칙은 다음과 같다.
58
+
59
+ ```txt
60
+ available ≠ required
61
+ inventory ≠ activation
62
+ prompt ≠ sidecar
63
+ provider stdout ≠ user output
64
+ slash command ≠ plain text print
65
+ optional failure ≠ fatal error
66
+ ```
67
+
68
+ ---
69
+
70
+ ## 1. 현재 증상 정리
71
+
72
+ ### 1.1 관찰된 사용자 입력
73
+
74
+ 사용자는 interactive shell에서 다음을 입력했다.
75
+
76
+ ```txt
77
+ /model
78
+ 현재 상태는 어때
79
+ ```
80
+
81
+ `/model`은 다음처럼 단순 텍스트를 출력했다.
82
+
83
+ ```txt
84
+ Current model: kimi-code default
85
+ Usage: /model codex/codex-cli
86
+ ```
87
+
88
+ 그리고 `현재 상태는 어때`라는 9자 요청에 대해 OMK는 아래 상태를 구성했다.
89
+
90
+ ```txt
91
+ Selected provider: kimi
92
+ Selected runtime: kimi-print
93
+ Selected model: kimi-code default
94
+ Turn risk: read
95
+ Sandbox: read-only
96
+ MCP: enabled (21); live-required=false
97
+ Skills: enabled (67)
98
+ Tools: disabled; tool-calling-required=false
99
+ ```
100
+
101
+ 하지만 이후 prompt에는 다음 directive가 들어갔다.
102
+
103
+ ```txt
104
+ Routing directives (MANDATORY — activate these skills/MCP/tools explicitly):
105
+ - Skills (MUST use): 67개 전부
106
+ - MCP servers (MUST activate): 21개 전부
107
+ ```
108
+
109
+ 여기서 구조적 모순이 발생한다.
110
+
111
+ ```txt
112
+ live-required=false
113
+ requiresMcp=false
114
+ requiresToolCalling=false
115
+
116
+ 하지만
117
+
118
+ MCP servers MUST activate: all 21
119
+ Skills MUST use: all 67
120
+ ```
121
+
122
+ ### 1.2 실제 실패
123
+
124
+ MCP loading 결과는 다음과 같았다.
125
+
126
+ ```txt
127
+ connected=20
128
+ total=21
129
+ omk-web-bridge status=failed
130
+ ```
131
+
132
+ 그러나 `omk-web-bridge`가 현재 status query에 required capability가 아님에도 전체 turn은 실패했다.
133
+
134
+ ```txt
135
+ Unknown error: Failed to connect MCP servers: {'omk-web-bridge': McpError('Connection closed')}
136
+ exit=1
137
+ ```
138
+
139
+ ### 1.3 핵심 판정
140
+
141
+ 이건 Kimi 자체의 추론 실패가 아니라, OMK runtime envelope 설계 문제다.
142
+
143
+ ```txt
144
+ P0 원인:
145
+ - Capability inventory와 required activation이 섞임
146
+ - prompt envelope가 provider input으로 누수됨
147
+ - provider raw event가 renderer를 우회함
148
+ - optional failure가 hard failure로 승격됨
149
+ ```
150
+
151
+ ---
152
+
153
+ ## 2. 목표 아키텍처
154
+
155
+ ### 2.1 High-Level Architecture
156
+
157
+ ```txt
158
+ ┌──────────────────────────────────────────────────────────────┐
159
+ │ CLI Entrypoint │
160
+ │ omk / omk chat / omk run │
161
+ └──────────────────────────────┬───────────────────────────────┘
162
+
163
+ ┌──────────────────────────────▼───────────────────────────────┐
164
+ │ Input Layer │
165
+ │ argv / stdin / REPL line / slash command / file / goal prompt │
166
+ └──────────────────────────────┬───────────────────────────────┘
167
+
168
+ ┌──────────────────────────────▼───────────────────────────────┐
169
+ │ CommandBus │
170
+ │ normal command, slash command, agent turn을 하나의 command로 │
171
+ │ 정규화한다. │
172
+ └──────────────────────────────┬───────────────────────────────┘
173
+
174
+ ┌──────────────────────────────▼───────────────────────────────┐
175
+ │ Intent + Risk Classifier │
176
+ │ status / resume / memory / repo_read / code_edit / web │
177
+ └──────────────────────────────┬───────────────────────────────┘
178
+
179
+ ┌──────────────────────────────▼───────────────────────────────┐
180
+ │ Capability Selector │
181
+ │ available inventory에서 required/optional/disabled만 선별 │
182
+ └──────────────────────────────┬───────────────────────────────┘
183
+
184
+ ┌─────────────────┴─────────────────┐
185
+ │ │
186
+ ┌────────────▼────────────┐ ┌─────────────▼─────────────┐
187
+ │ RuntimeSidecar Builder │ │ Debloat-to-NLP Compiler │
188
+ │ machine execution plan │ │ model-facing prompt only │
189
+ └────────────┬────────────┘ └─────────────┬─────────────┘
190
+ │ │
191
+ ┌────────────▼────────────┐ ┌─────────────▼─────────────┐
192
+ │ Filtered MCP Config │ │ Provider Prompt │
193
+ │ per-turn mcp.json │ │ short, natural instruction│
194
+ └────────────┬────────────┘ └─────────────┬─────────────┘
195
+ │ │
196
+ └─────────────────┬─────────────────┘
197
+
198
+ ┌──────────────────────────────▼───────────────────────────────┐
199
+ │ ProviderAdapter │
200
+ │ Kimi / Codex / Claude / DeepSeek / local model adapter │
201
+ └──────────────────────────────┬───────────────────────────────┘
202
+
203
+ ┌──────────────────────────────▼───────────────────────────────┐
204
+ │ ProviderEventNormalizer │
205
+ │ raw TurnBegin/StatusUpdate/MCP snapshots → OMK UI events │
206
+ └──────────────────────────────┬───────────────────────────────┘
207
+
208
+ ┌──────────────────────────────▼───────────────────────────────┐
209
+ │ OmkEventBus │
210
+ │ progress / warning / result / error / trace / memory events │
211
+ └──────────────────────────────┬───────────────────────────────┘
212
+
213
+ ┌──────────────────────────────▼───────────────────────────────┐
214
+ │ OutputRouter │
215
+ │ stdout/stderr/file 분리 + renderer 강제 │
216
+ └──────────────┬────────────────┬────────────────┬─────────────┘
217
+ │ │ │
218
+ ┌──────────────▼─────┐ ┌────────▼────────┐ ┌─────▼─────────────┐
219
+ │ ThemeRenderer │ │ NlpRenderer │ │ Json/JsonlRenderer│
220
+ │ terminal UI │ │ human report │ │ machine output │
221
+ └────────────────────┘ └─────────────────┘ └───────────────────┘
222
+ ```
223
+
224
+ ### 2.2 Control Plane vs Data Plane
225
+
226
+ OMK v2에서 가장 중요한 분리는 다음이다.
227
+
228
+ | Layer | 내용 | 모델 prompt에 들어가는가? | runtime sidecar에 들어가는가? |
229
+ |---|---|---:|---:|
230
+ | User request | 사용자가 입력한 실제 요청 | Yes | Yes |
231
+ | Intent | status/code_edit/web 등 | Limited | Yes |
232
+ | Required MCP | 없으면 작업 불가능한 capability | Limited | Yes |
233
+ | Optional MCP | 있으면 도움 되는 capability | Limited | Yes |
234
+ | Available MCP inventory | 현재 설치된 전체 MCP 목록 | No | Yes 또는 hidden |
235
+ | Skill inventory | 전체 skill 목록 | No | Yes 또는 hidden |
236
+ | Provider env | HOME, mcp config, fallback provider | No | Yes |
237
+ | Telemetry | TurnBegin, StatusUpdate raw dump | No | Event stream only |
238
+ | Theme/NLP 설정 | 출력 렌더링 정책 | No | Yes |
239
+
240
+ 정책:
241
+
242
+ ```txt
243
+ 모델에게는 “지금 무엇을 해야 하는지”만 말한다.
244
+ 런타임에는 “어떤 capability를 어떻게 붙일지”를 sidecar로 넘긴다.
245
+ 전체 inventory는 모델 prompt에 절대 직접 넣지 않는다.
246
+ ```
247
+
248
+ ---
249
+
250
+ ## 3. 핵심 Invariants
251
+
252
+ 다음 invariant는 테스트로 강제해야 한다.
253
+
254
+ ```txt
255
+ I-001. availableMcp는 prompt의 MUST activate로 변환되면 안 된다.
256
+ I-002. availableSkills는 prompt의 MUST use로 변환되면 안 된다.
257
+ I-003. requiredMcp만 hard failure 조건이 될 수 있다.
258
+ I-004. optionalMcp failure는 warning이어야 한다.
259
+ I-005. provider raw TurnBegin/StatusUpdate는 user-facing stdout에 출력되면 안 된다.
260
+ I-006. status intent는 requiredMcp=[]가 기본값이어야 한다.
261
+ I-007. status intent는 MCP optional 후보를 최대 2~3개로 제한한다.
262
+ I-008. slash command도 CommandBus와 OutputRouter를 반드시 탄다.
263
+ I-009. theme 출력은 모든 human-facing output에 적용되어야 한다.
264
+ I-010. machine output JSON은 stdout, progress/warning은 stderr에만 쓴다.
265
+ I-011. `kimi-print`는 debug raw mode에서만 허용한다.
266
+ I-012. prompt envelope schema는 model prompt가 아니라 runtime sidecar로 취급한다.
267
+ ```
268
+
269
+ ---
270
+
271
+ ## 4. Package / Directory Structure
272
+
273
+ 추천 구조는 다음과 같다.
274
+
275
+ ```txt
276
+ packages/
277
+ cli/
278
+ src/
279
+ main.ts
280
+ bootstrap/
281
+ detect-terminal.ts
282
+ load-config.ts
283
+ resolve-theme.ts
284
+ resolve-runtime.ts
285
+ command-bus/
286
+ command-bus.ts
287
+ command-result.ts
288
+ command-context.ts
289
+ handlers/
290
+ chat-command.ts
291
+ run-command.ts
292
+ status-command.ts
293
+ model-command.ts
294
+ memory-command.ts
295
+ theme-command.ts
296
+ doctor-command.ts
297
+ repl/
298
+ repl-loop.ts
299
+ slash-command-parser.ts
300
+ interactive-state.ts
301
+ input/
302
+ argv-parser.ts
303
+ stdin-reader.ts
304
+ goal-file-reader.ts
305
+ command-envelope.ts
306
+ intent/
307
+ classify-intent.ts
308
+ classify-risk.ts
309
+ intent-types.ts
310
+ capability/
311
+ capability-inventory.ts
312
+ capability-selector.ts
313
+ capability-plan.ts
314
+ failure-policy.ts
315
+ mcp-config-filter.ts
316
+ prompt/
317
+ prompt-envelope.ts
318
+ debloat-to-nlp.ts
319
+ prompt-budget.ts
320
+ prompt-validator.ts
321
+ runtime/
322
+ runtime-sidecar.ts
323
+ runtime-orchestrator.ts
324
+ provider-router.ts
325
+ providers/
326
+ provider-adapter.ts
327
+ kimi/
328
+ kimi-adapter.ts
329
+ kimi-mcp-config.ts
330
+ kimi-event-parser.ts
331
+ kimi-runtime-selector.ts
332
+ codex/
333
+ codex-adapter.ts
334
+ claude/
335
+ claude-adapter.ts
336
+ events/
337
+ omk-event.ts
338
+ event-bus.ts
339
+ provider-event-normalizer.ts
340
+ output/
341
+ output-router.ts
342
+ output-profile.ts
343
+ theme-renderer.ts
344
+ nlp-renderer.ts
345
+ json-renderer.ts
346
+ error-renderer.ts
347
+ theme/
348
+ theme-definition.ts
349
+ theme-registry.ts
350
+ theme-writer.ts
351
+ builtins/
352
+ omk.ts
353
+ mono.ts
354
+ minimal.ts
355
+ memory/
356
+ project-memory.ts
357
+ session-ledger.ts
358
+ memory-capsule.ts
359
+ resume-policy.ts
360
+ tests/
361
+ regression-status-no-all-mcp.test.ts
362
+ regression-optional-mcp-warning.test.ts
363
+ regression-no-raw-provider-output.test.ts
364
+ ```
365
+
366
+ ---
367
+
368
+ ## 5. Core Data Models
369
+
370
+ ### 5.1 Command Envelope
371
+
372
+ `CommandEnvelope`는 CLI 입력을 runtime이 이해할 수 있는 구조로 정규화한다. 단, 이것은 그대로 provider prompt가 되면 안 된다.
373
+
374
+ ```ts
375
+ export type CommandKind =
376
+ | 'chat'
377
+ | 'run'
378
+ | 'status'
379
+ | 'model'
380
+ | 'memory'
381
+ | 'theme'
382
+ | 'doctor';
383
+
384
+ export type InputSource =
385
+ | 'argv'
386
+ | 'stdin'
387
+ | 'file'
388
+ | 'repl'
389
+ | 'slash-command';
390
+
391
+ export interface CommandEnvelope {
392
+ readonly kind: CommandKind;
393
+ readonly source: InputSource;
394
+ readonly rawText: string;
395
+ readonly decodedUserRequest: string;
396
+ readonly cwd: string;
397
+ readonly sessionId: string;
398
+ readonly projectId?: string;
399
+ readonly providerPolicy: 'auto' | 'kimi' | 'codex' | 'claude' | 'deepseek';
400
+ readonly outputProfile: OutputProfile;
401
+ readonly debug: {
402
+ readonly rawProvider: boolean;
403
+ readonly explainRouting: boolean;
404
+ };
405
+ }
406
+ ```
407
+
408
+ ### 5.2 Intent
409
+
410
+ ```ts
411
+ export type RequestIntent =
412
+ | 'status'
413
+ | 'resume'
414
+ | 'memory_query'
415
+ | 'repo_read'
416
+ | 'code_edit'
417
+ | 'debug_error'
418
+ | 'web_research'
419
+ | 'plan'
420
+ | 'chat'
421
+ | 'unknown';
422
+ ```
423
+
424
+ ### 5.3 Capability Inventory
425
+
426
+ Inventory는 “설치/발견된 목록”일 뿐이다.
427
+
428
+ ```ts
429
+ export interface CapabilityInventory {
430
+ readonly mcp: readonly McpServerDescriptor[];
431
+ readonly skills: readonly SkillDescriptor[];
432
+ readonly hooks: readonly HookDescriptor[];
433
+ readonly toolsEnabled: boolean;
434
+ }
435
+
436
+ export interface McpServerDescriptor {
437
+ readonly name: string;
438
+ readonly scope: 'project' | 'user' | 'global' | 'runtime';
439
+ readonly status: 'unknown' | 'available' | 'connected' | 'failed' | 'disabled';
440
+ readonly tools?: readonly string[];
441
+ readonly lastError?: string;
442
+ }
443
+ ```
444
+
445
+ ### 5.4 Capability Plan
446
+
447
+ `CapabilityPlan`은 현재 turn에서 실제로 사용할 capability만 선별한다.
448
+
449
+ ```ts
450
+ export interface CapabilityPlan {
451
+ readonly availableMcp: readonly string[];
452
+ readonly requiredMcp: readonly string[];
453
+ readonly optionalMcp: readonly string[];
454
+ readonly disabledMcp: readonly string[];
455
+
456
+ readonly availableSkills: readonly string[];
457
+ readonly selectedSkills: readonly string[];
458
+
459
+ readonly toolCallingRequired: boolean;
460
+ readonly liveMcpRequired: boolean;
461
+ readonly failurePolicy: 'required-only' | 'strict';
462
+ }
463
+ ```
464
+
465
+ 정책:
466
+
467
+ ```txt
468
+ availableMcp는 prompt에 출력하지 않는다.
469
+ requiredMcp와 optionalMcp만 prompt에 제한적으로 출력한다.
470
+ disabledMcp는 warning으로만 출력한다.
471
+ ```
472
+
473
+ ### 5.5 Runtime Sidecar
474
+
475
+ Provider 실행기는 prompt 문자열이 아니라 sidecar를 보고 runtime을 구성한다.
476
+
477
+ ```ts
478
+ export interface RuntimeSidecar {
479
+ readonly provider: 'kimi' | 'codex' | 'claude' | 'deepseek' | 'local';
480
+ readonly model: string;
481
+ readonly runtime: 'kimi-event' | 'kimi-wire' | 'kimi-print' | 'codex' | 'claude';
482
+
483
+ readonly intent: RequestIntent;
484
+ readonly risk: 'read' | 'write' | 'network' | 'dangerous';
485
+ readonly sandbox: 'read-only' | 'workspace-write' | 'full-access';
486
+
487
+ readonly requiredMcp: readonly string[];
488
+ readonly optionalMcp: readonly string[];
489
+ readonly disabledMcp: readonly string[];
490
+ readonly selectedSkills: readonly string[];
491
+
492
+ readonly failurePolicy: 'required-only' | 'strict';
493
+ readonly outputProfile: OutputProfile;
494
+ readonly projectId?: string;
495
+ readonly sessionId: string;
496
+ }
497
+ ```
498
+
499
+ ### 5.6 Output Profile
500
+
501
+ ```ts
502
+ export type OutputFormat = 'theme' | 'nlp' | 'json' | 'jsonl' | 'markdown' | 'silent';
503
+
504
+ export interface OutputProfile {
505
+ readonly format: OutputFormat;
506
+ readonly progress: 'none' | 'live' | 'compact' | 'jsonl';
507
+ readonly color: 'auto' | 'always' | 'never';
508
+ readonly rawProvider: boolean;
509
+ readonly explainRouting: boolean;
510
+ readonly stdoutMode: 'human' | 'machine';
511
+ }
512
+ ```
513
+
514
+ ---
515
+
516
+ ## 6. Intent Classification
517
+
518
+ ### 6.1 Rule-Based MVP
519
+
520
+ 처음부터 LLM classifier를 쓰지 않는다. CLI control-plane은 deterministic해야 한다.
521
+
522
+ ```ts
523
+ export function classifyIntent(userRequest: string): RequestIntent {
524
+ const text = userRequest.trim().toLowerCase();
525
+
526
+ if (/현재 상태|상태|status|progress|어때|어디까지|진행|뭐 했/.test(text)) {
527
+ return 'status';
528
+ }
529
+
530
+ if (/이어|resume|계속|이전|마지막|left off|where we left/.test(text)) {
531
+ return 'resume';
532
+ }
533
+
534
+ if (/기억|memory|remember|잊어|forget|전에/.test(text)) {
535
+ return 'memory_query';
536
+ }
537
+
538
+ if (/파일|읽어|구조|repo|repository|코드베이스|찾아/.test(text)) {
539
+ return 'repo_read';
540
+ }
541
+
542
+ if (/수정|고쳐|구현|패치|edit|fix|implement|refactor/.test(text)) {
543
+ return 'code_edit';
544
+ }
545
+
546
+ if (/검색|웹|최신|news|github|x에서|찾아봐/.test(text)) {
547
+ return 'web_research';
548
+ }
549
+
550
+ if (/계획|설계|plan|architecture|알고리즘/.test(text)) {
551
+ return 'plan';
552
+ }
553
+
554
+ return 'chat';
555
+ }
556
+ ```
557
+
558
+ ### 6.2 Risk Classification
559
+
560
+ ```ts
561
+ export function classifyRisk(intent: RequestIntent, userRequest: string) {
562
+ if (intent === 'code_edit') return 'write';
563
+ if (intent === 'web_research') return 'network';
564
+ if (/삭제|delete|rm -rf|drop table|credential|token/.test(userRequest)) {
565
+ return 'dangerous';
566
+ }
567
+ return 'read';
568
+ }
569
+ ```
570
+
571
+ ---
572
+
573
+ ## 7. Capability Selection Algorithm
574
+
575
+ ### 7.1 기본 정책
576
+
577
+ ```txt
578
+ status:
579
+ requiredMcp: []
580
+ optionalMcp: [omk-project, memory]
581
+ selectedSkills: [omk-context-broker, omk-project-rules]
582
+
583
+ resume:
584
+ requiredMcp: []
585
+ optionalMcp: [omk-project, memory, sqlite]
586
+ selectedSkills: [agentmemory, omk-context-broker, omk-project-rules]
587
+
588
+ repo_read:
589
+ requiredMcp: [filesystem-readonly] if available
590
+ optionalMcp: [omk-project, memory]
591
+
592
+ code_edit:
593
+ requiredMcp: [filesystem]
594
+ optionalMcp: [omk-project, memory, sqlite]
595
+ selectedSkills: [omk-flow-feature-dev, omk-typescript-strict, omk-quality-gate]
596
+
597
+ web_research:
598
+ requiredMcp: [fetch] if available and task explicitly requires network
599
+ optionalMcp: [web-reader, playwright]
600
+ ```
601
+
602
+ ### 7.2 Implementation
603
+
604
+ ```ts
605
+ export function selectCapabilities(input: {
606
+ readonly intent: RequestIntent;
607
+ readonly inventory: CapabilityInventory;
608
+ readonly failedMcp: readonly string[];
609
+ }): CapabilityPlan {
610
+ const availableMcp = input.inventory.mcp.map(server => server.name);
611
+ const availableSkills = input.inventory.skills.map(skill => skill.name);
612
+
613
+ const hasMcp = (name: string) => availableMcp.includes(name);
614
+ const hasSkill = (name: string) => availableSkills.includes(name);
615
+ const notFailed = (name: string) => !input.failedMcp.includes(name);
616
+
617
+ const optionalMcp = (...names: string[]) =>
618
+ names.filter(name => hasMcp(name) && notFailed(name));
619
+
620
+ const selectedSkills = (...names: string[]) =>
621
+ names.filter(name => hasSkill(name));
622
+
623
+ switch (input.intent) {
624
+ case 'status':
625
+ return {
626
+ availableMcp,
627
+ requiredMcp: [],
628
+ optionalMcp: optionalMcp('omk-project', 'memory'),
629
+ disabledMcp: input.failedMcp,
630
+ availableSkills,
631
+ selectedSkills: selectedSkills('omk-context-broker', 'omk-project-rules'),
632
+ toolCallingRequired: false,
633
+ liveMcpRequired: false,
634
+ failurePolicy: 'required-only',
635
+ };
636
+
637
+ case 'repo_read':
638
+ return {
639
+ availableMcp,
640
+ requiredMcp: hasMcp('filesystem-readonly') ? ['filesystem-readonly'] : [],
641
+ optionalMcp: optionalMcp('omk-project', 'memory'),
642
+ disabledMcp: input.failedMcp,
643
+ availableSkills,
644
+ selectedSkills: selectedSkills('omk-repo-explorer', 'omk-project-rules'),
645
+ toolCallingRequired: hasMcp('filesystem-readonly'),
646
+ liveMcpRequired: hasMcp('filesystem-readonly'),
647
+ failurePolicy: 'required-only',
648
+ };
649
+
650
+ case 'code_edit':
651
+ return {
652
+ availableMcp,
653
+ requiredMcp: hasMcp('filesystem') ? ['filesystem'] : [],
654
+ optionalMcp: optionalMcp('omk-project', 'memory', 'sqlite'),
655
+ disabledMcp: input.failedMcp,
656
+ availableSkills,
657
+ selectedSkills: selectedSkills(
658
+ 'omk-flow-feature-dev',
659
+ 'omk-typescript-strict',
660
+ 'omk-quality-gate',
661
+ 'omk-test-debug-loop',
662
+ ),
663
+ toolCallingRequired: true,
664
+ liveMcpRequired: true,
665
+ failurePolicy: 'required-only',
666
+ };
667
+
668
+ case 'web_research':
669
+ return {
670
+ availableMcp,
671
+ requiredMcp: hasMcp('fetch') ? ['fetch'] : [],
672
+ optionalMcp: optionalMcp('web-reader', 'playwright', 'omk-project'),
673
+ disabledMcp: input.failedMcp,
674
+ availableSkills,
675
+ selectedSkills: selectedSkills('omk-research-verify'),
676
+ toolCallingRequired: true,
677
+ liveMcpRequired: true,
678
+ failurePolicy: 'required-only',
679
+ };
680
+
681
+ default:
682
+ return {
683
+ availableMcp,
684
+ requiredMcp: [],
685
+ optionalMcp: optionalMcp('omk-project', 'memory'),
686
+ disabledMcp: input.failedMcp,
687
+ availableSkills,
688
+ selectedSkills: selectedSkills('omk-context-broker'),
689
+ toolCallingRequired: false,
690
+ liveMcpRequired: false,
691
+ failurePolicy: 'required-only',
692
+ };
693
+ }
694
+ }
695
+ ```
696
+
697
+ ---
698
+
699
+ ## 8. Failure Policy
700
+
701
+ ### 8.1 잘못된 현재 정책
702
+
703
+ ```txt
704
+ mcpFailures.length > 0 → exit=1
705
+ ```
706
+
707
+ 이 정책은 status/query/chat에서 치명적이다. optional MCP failure가 전체 turn failure로 승격된다.
708
+
709
+ ### 8.2 올바른 정책
710
+
711
+ ```ts
712
+ export interface FailurePolicyResult {
713
+ readonly blockers: readonly string[];
714
+ readonly warnings: readonly string[];
715
+ readonly exitCode: 0 | 1;
716
+ }
717
+
718
+ export function applyMcpFailurePolicy(input: {
719
+ readonly requiredMcp: readonly string[];
720
+ readonly failedMcp: readonly string[];
721
+ readonly failurePolicy: 'required-only' | 'strict';
722
+ }): FailurePolicyResult {
723
+ if (input.failurePolicy === 'strict') {
724
+ return {
725
+ blockers: input.failedMcp,
726
+ warnings: [],
727
+ exitCode: input.failedMcp.length > 0 ? 1 : 0,
728
+ };
729
+ }
730
+
731
+ const blockers = input.failedMcp.filter(name => input.requiredMcp.includes(name));
732
+ const warnings = input.failedMcp.filter(name => !input.requiredMcp.includes(name));
733
+
734
+ return {
735
+ blockers,
736
+ warnings,
737
+ exitCode: blockers.length > 0 ? 1 : 0,
738
+ };
739
+ }
740
+ ```
741
+
742
+ ### 8.3 status query의 기대 결과
743
+
744
+ 입력:
745
+
746
+ ```txt
747
+ intent=status
748
+ requiredMcp=[]
749
+ optionalMcp=[omk-project, memory]
750
+ failedMcp=[omk-web-bridge]
751
+ ```
752
+
753
+ 결과:
754
+
755
+ ```txt
756
+ blockers=[]
757
+ warnings=[omk-web-bridge]
758
+ exitCode=0
759
+ ```
760
+
761
+ ---
762
+
763
+ ## 9. Debloat-to-NLP Compiler
764
+
765
+ ### 9.1 목적
766
+
767
+ 비대한 OMK prompt envelope를 provider model이 읽기 위한 짧은 자연어 prompt와 runtime sidecar로 분리한다.
768
+
769
+ ```txt
770
+ Raw OMK Envelope
771
+ ├─ modelPrompt: short natural language instruction
772
+ └─ runtimeSidecar: machine execution metadata
773
+ ```
774
+
775
+ ### 9.2 Compiler Input / Output
776
+
777
+ ```ts
778
+ export interface DebloatInput {
779
+ readonly envelope: CommandEnvelope;
780
+ readonly intent: RequestIntent;
781
+ readonly risk: 'read' | 'write' | 'network' | 'dangerous';
782
+ readonly capabilityPlan: CapabilityPlan;
783
+ readonly provider: string;
784
+ readonly model: string;
785
+ }
786
+
787
+ export interface DebloatOutput {
788
+ readonly modelPrompt: string;
789
+ readonly runtimeSidecar: RuntimeSidecar;
790
+ readonly diagnostics: DebloatDiagnostics;
791
+ }
792
+
793
+ export interface DebloatDiagnostics {
794
+ readonly originalChars: number;
795
+ readonly finalChars: number;
796
+ readonly compressionRatio: number;
797
+ readonly removedSections: readonly string[];
798
+ readonly warnings: readonly string[];
799
+ }
800
+ ```
801
+
802
+ ### 9.3 Prompt Renderer
803
+
804
+ ```ts
805
+ export function renderModelPrompt(input: {
806
+ readonly userRequest: string;
807
+ readonly intent: RequestIntent;
808
+ readonly provider: string;
809
+ readonly model: string;
810
+ readonly risk: string;
811
+ readonly sandbox: string;
812
+ readonly plan: CapabilityPlan;
813
+ readonly warnings: readonly string[];
814
+ }): string {
815
+ const lines: string[] = [];
816
+
817
+ lines.push('You are the OMK root coordinator.');
818
+ lines.push('');
819
+ lines.push(`User request: ${JSON.stringify(input.userRequest)}`);
820
+ lines.push('');
821
+ lines.push(`Intent: ${input.intent}`);
822
+ lines.push(`Risk: ${input.risk}`);
823
+ lines.push(`Sandbox: ${input.sandbox}`);
824
+ lines.push('');
825
+
826
+ if (input.plan.requiredMcp.length > 0) {
827
+ lines.push(`Required capabilities: ${input.plan.requiredMcp.join(', ')}`);
828
+ } else {
829
+ lines.push('Required capabilities: none');
830
+ }
831
+
832
+ if (input.plan.optionalMcp.length > 0) {
833
+ lines.push(`Optional capabilities: ${input.plan.optionalMcp.join(', ')}`);
834
+ }
835
+
836
+ if (input.plan.selectedSkills.length > 0) {
837
+ lines.push(`Selected skills: ${input.plan.selectedSkills.join(', ')}`);
838
+ }
839
+
840
+ if (input.warnings.length > 0) {
841
+ lines.push('');
842
+ lines.push(`Warnings: ${input.warnings.join(', ')} unavailable; continue unless required.`);
843
+ }
844
+
845
+ lines.push('');
846
+ lines.push('Instructions:');
847
+ lines.push('- Answer the user request directly.');
848
+ lines.push('- Do not activate unrelated capabilities.');
849
+ lines.push('- Treat optional capability failures as warnings.');
850
+ lines.push('- If project state is unavailable, say so briefly.');
851
+ lines.push('- Keep the answer concise and operational.');
852
+
853
+ return lines.join('\n');
854
+ }
855
+ ```
856
+
857
+ ### 9.4 Example: 현재 상태는 어때
858
+
859
+ Before:
860
+
861
+ ```txt
862
+ - User request: 9 characters
863
+ - Prompt: OMK envelope + 67 skills + 21 MCP + raw TurnBegin + StatusUpdate
864
+ - Runtime: kimi-print
865
+ - Result: omk-web-bridge failure exits turn
866
+ ```
867
+
868
+ After:
869
+
870
+ ```txt
871
+ You are the OMK root coordinator.
872
+
873
+ User request: "현재 상태는 어때"
874
+
875
+ Intent: status
876
+ Risk: read
877
+ Sandbox: read-only
878
+
879
+ Required capabilities: none
880
+ Optional capabilities: omk-project, memory
881
+ Selected skills: omk-context-broker, omk-project-rules
882
+
883
+ Warnings: omk-web-bridge unavailable; continue unless required.
884
+
885
+ Instructions:
886
+ - Report current OMK project/runtime status concisely.
887
+ - Do not activate unrelated capabilities.
888
+ - Treat optional capability failures as warnings.
889
+ - If no active project state is available, say so briefly.
890
+ ```
891
+
892
+ ---
893
+
894
+ ## 10. Per-Turn MCP Config Filtering
895
+
896
+ ### 10.1 문제
897
+
898
+ Preset에서 MCP를 줄여도 provider runtime이 `~/.kimi/mcp.json` 전체를 읽으면 다시 21개가 켜진다.
899
+
900
+ ### 10.2 정책
901
+
902
+ 매 turn마다 sidecar 기준으로 임시 MCP config를 생성한다.
903
+
904
+ ```txt
905
+ Allowed MCP = requiredMcp ∪ optionalMcp - disabledMcp
906
+ ```
907
+
908
+ ### 10.3 Implementation
909
+
910
+ ```ts
911
+ export interface McpConfig {
912
+ readonly mcpServers: Record<string, unknown>;
913
+ }
914
+
915
+ export function filterMcpConfigForTurn(input: {
916
+ readonly userMcpConfig: McpConfig;
917
+ readonly projectMcpConfig: McpConfig;
918
+ readonly sidecar: RuntimeSidecar;
919
+ }): McpConfig {
920
+ const allowed = new Set([
921
+ ...input.sidecar.requiredMcp,
922
+ ...input.sidecar.optionalMcp,
923
+ ]);
924
+
925
+ const disabled = new Set(input.sidecar.disabledMcp);
926
+
927
+ const merged = {
928
+ ...input.userMcpConfig.mcpServers,
929
+ ...input.projectMcpConfig.mcpServers,
930
+ };
931
+
932
+ return {
933
+ mcpServers: Object.fromEntries(
934
+ Object.entries(merged).filter(([name]) => {
935
+ return allowed.has(name) && !disabled.has(name);
936
+ }),
937
+ ),
938
+ };
939
+ }
940
+ ```
941
+
942
+ ### 10.4 status query의 기대 임시 mcp.json
943
+
944
+ ```json
945
+ {
946
+ "mcpServers": {
947
+ "omk-project": {},
948
+ "memory": {}
949
+ }
950
+ }
951
+ ```
952
+
953
+ 혹은 memory가 unavailable이면:
954
+
955
+ ```json
956
+ {
957
+ "mcpServers": {
958
+ "omk-project": {}
959
+ }
960
+ }
961
+ ```
962
+
963
+ 아예 상태를 local runtime에서 알 수 있다면:
964
+
965
+ ```json
966
+ {
967
+ "mcpServers": {}
968
+ }
969
+ ```
970
+
971
+ ---
972
+
973
+ ## 11. Provider Runtime Selection
974
+
975
+ ### 11.1 문제
976
+
977
+ 현재 관찰 로그에서는 `Selected runtime: kimi-print`로 선택된다. 이 runtime은 provider stdout/raw event를 그대로 print하는 경향이 있으므로 theme/NLP를 우회한다.
978
+
979
+ ### 11.2 정책
980
+
981
+ ```txt
982
+ kimi-event 또는 kimi-wire:
983
+ default interactive runtime
984
+
985
+ kimi-print:
986
+ --debug-raw 또는 OMK_DEBUG_RAW_PROVIDER=1에서만 허용
987
+ ```
988
+
989
+ ### 11.3 Implementation
990
+
991
+ ```ts
992
+ export function selectProviderRuntime(input: {
993
+ readonly provider: string;
994
+ readonly intent: RequestIntent;
995
+ readonly debugRaw: boolean;
996
+ }): RuntimeSidecar['runtime'] {
997
+ if (input.provider === 'kimi') {
998
+ if (input.debugRaw) return 'kimi-print';
999
+ return 'kimi-event';
1000
+ }
1001
+
1002
+ if (input.provider === 'codex') return 'codex';
1003
+ if (input.provider === 'claude') return 'claude';
1004
+
1005
+ return 'kimi-event';
1006
+ }
1007
+ ```
1008
+
1009
+ ### 11.4 Regression Rule
1010
+
1011
+ ```ts
1012
+ expect(selectProviderRuntime({ provider: 'kimi', intent: 'status', debugRaw: false }))
1013
+ .not.toBe('kimi-print');
1014
+
1015
+ expect(selectProviderRuntime({ provider: 'kimi', intent: 'status', debugRaw: true }))
1016
+ .toBe('kimi-print');
1017
+ ```
1018
+
1019
+ ---
1020
+
1021
+ ## 12. ProviderEventNormalizer
1022
+
1023
+ ### 12.1 목적
1024
+
1025
+ Provider raw event를 사용자에게 그대로 보여주지 않는다.
1026
+
1027
+ 금지되는 raw output:
1028
+
1029
+ ```txt
1030
+ TurnBegin(...)
1031
+ StatusUpdate(...)
1032
+ MCPLoadingBegin()
1033
+ MCPLoadingEnd()
1034
+ MCPStatusSnapshot(...)
1035
+ TextPart(...)
1036
+ ```
1037
+
1038
+ 이들은 다음 OMK UI event로 정규화되어야 한다.
1039
+
1040
+ ```ts
1041
+ export type OmkEvent =
1042
+ | { type: 'turn_started'; nodeId: string; provider: string; model: string }
1043
+ | { type: 'progress'; message: string }
1044
+ | { type: 'mcp_status'; connected: number; total: number; failed: readonly string[] }
1045
+ | { type: 'warning'; message: string; code?: string }
1046
+ | { type: 'result'; content: string }
1047
+ | { type: 'error'; message: string; code: string; fatal: boolean }
1048
+ | { type: 'turn_finished'; exitCode: number; durationMs: number };
1049
+ ```
1050
+
1051
+ ### 12.2 Normalizer Interface
1052
+
1053
+ ```ts
1054
+ export interface ProviderEventNormalizer {
1055
+ normalize(chunk: ProviderRawChunk): readonly OmkEvent[];
1056
+ flush(): readonly OmkEvent[];
1057
+ }
1058
+
1059
+ export interface ProviderRawChunk {
1060
+ readonly stream: 'stdout' | 'stderr';
1061
+ readonly text: string;
1062
+ readonly at: string;
1063
+ }
1064
+ ```
1065
+
1066
+ ### 12.3 Kimi Normalizer Example
1067
+
1068
+ ```ts
1069
+ export class KimiEventNormalizer implements ProviderEventNormalizer {
1070
+ normalize(chunk: ProviderRawChunk): readonly OmkEvent[] {
1071
+ const events: OmkEvent[] = [];
1072
+
1073
+ if (chunk.text.includes('MCPLoadingBegin')) {
1074
+ events.push({ type: 'progress', message: 'Loading selected MCP servers...' });
1075
+ }
1076
+
1077
+ const failure = parseMcpFailure(chunk.text);
1078
+ if (failure) {
1079
+ events.push({
1080
+ type: 'warning',
1081
+ code: 'OPTIONAL_MCP_UNAVAILABLE',
1082
+ message: `Optional MCP unavailable: ${failure.serverName}`,
1083
+ });
1084
+ }
1085
+
1086
+ const status = parseMcpStatusSnapshot(chunk.text);
1087
+ if (status) {
1088
+ events.push({
1089
+ type: 'mcp_status',
1090
+ connected: status.connected,
1091
+ total: status.total,
1092
+ failed: status.failedServers,
1093
+ });
1094
+ }
1095
+
1096
+ return events;
1097
+ }
1098
+
1099
+ flush(): readonly OmkEvent[] {
1100
+ return [];
1101
+ }
1102
+ }
1103
+ ```
1104
+
1105
+ ---
1106
+
1107
+ ## 13. OutputRouter
1108
+
1109
+ ### 13.1 stdout/stderr 정책
1110
+
1111
+ ```txt
1112
+ stdout:
1113
+ - 최종 답변
1114
+ - JSON/JSONL machine output
1115
+ - markdown/nlp report
1116
+
1117
+ stderr:
1118
+ - progress
1119
+ - warnings
1120
+ - debug routing
1121
+ - MCP loading status
1122
+ - provider diagnostics
1123
+ ```
1124
+
1125
+ ### 13.2 Interface
1126
+
1127
+ ```ts
1128
+ export interface OutputRouter {
1129
+ onEvent(event: OmkEvent): void;
1130
+ complete(result: CommandResult): void;
1131
+ fail(error: OmkError): void;
1132
+ }
1133
+ ```
1134
+
1135
+ ### 13.3 Implementation Sketch
1136
+
1137
+ ```ts
1138
+ export class DefaultOutputRouter implements OutputRouter {
1139
+ constructor(
1140
+ private readonly profile: OutputProfile,
1141
+ private readonly theme: ThemeRenderer,
1142
+ private readonly nlp: NlpRenderer,
1143
+ private readonly json: JsonRenderer,
1144
+ private readonly streams: { stdout: NodeJS.WriteStream; stderr: NodeJS.WriteStream },
1145
+ ) {}
1146
+
1147
+ onEvent(event: OmkEvent): void {
1148
+ if (this.profile.rawProvider) {
1149
+ return;
1150
+ }
1151
+
1152
+ if (event.type === 'progress') {
1153
+ this.streams.stderr.write(this.theme.renderProgress(event) + '\n');
1154
+ return;
1155
+ }
1156
+
1157
+ if (event.type === 'warning') {
1158
+ this.streams.stderr.write(this.theme.renderWarning(event) + '\n');
1159
+ return;
1160
+ }
1161
+
1162
+ if (event.type === 'error') {
1163
+ this.streams.stderr.write(this.theme.renderError(event) + '\n');
1164
+ return;
1165
+ }
1166
+ }
1167
+
1168
+ complete(result: CommandResult): void {
1169
+ if (this.profile.format === 'json') {
1170
+ this.streams.stdout.write(this.json.render(result) + '\n');
1171
+ return;
1172
+ }
1173
+
1174
+ if (this.profile.format === 'nlp') {
1175
+ this.streams.stdout.write(this.nlp.render(result) + '\n');
1176
+ return;
1177
+ }
1178
+
1179
+ this.streams.stdout.write(this.theme.renderResult(result) + '\n');
1180
+ }
1181
+
1182
+ fail(error: OmkError): void {
1183
+ this.streams.stderr.write(this.theme.renderFatal(error) + '\n');
1184
+ }
1185
+ }
1186
+ ```
1187
+
1188
+ ---
1189
+
1190
+ ## 14. Theme Architecture
1191
+
1192
+ ### 14.1 원칙
1193
+
1194
+ Theme는 색상 함수가 아니라 semantic renderer다.
1195
+
1196
+ 나쁜 방식:
1197
+
1198
+ ```ts
1199
+ console.log(chalk.green('Done'));
1200
+ ```
1201
+
1202
+ 좋은 방식:
1203
+
1204
+ ```ts
1205
+ writer.success('Done');
1206
+ writer.warning('Optional MCP unavailable: omk-web-bridge');
1207
+ writer.status({ provider, model, runtime });
1208
+ ```
1209
+
1210
+ ### 14.2 Theme Schema
1211
+
1212
+ ```ts
1213
+ export interface ThemeDefinition {
1214
+ readonly name: string;
1215
+ readonly displayName: string;
1216
+ readonly mode: 'dark' | 'light' | 'auto' | 'mono';
1217
+ readonly tokens: ThemeTokens;
1218
+ readonly icons: ThemeIcons;
1219
+ readonly layout: ThemeLayout;
1220
+ }
1221
+
1222
+ export interface ThemeTokens {
1223
+ readonly text: string;
1224
+ readonly muted: string;
1225
+ readonly primary: string;
1226
+ readonly success: string;
1227
+ readonly warning: string;
1228
+ readonly error: string;
1229
+ readonly info: string;
1230
+ readonly border: string;
1231
+ readonly provider: string;
1232
+ readonly mcp: string;
1233
+ readonly skill: string;
1234
+ readonly memory: string;
1235
+ readonly trace: string;
1236
+ }
1237
+
1238
+ export interface ThemeIcons {
1239
+ readonly success: string;
1240
+ readonly warning: string;
1241
+ readonly error: string;
1242
+ readonly info: string;
1243
+ readonly running: string;
1244
+ readonly provider: string;
1245
+ readonly mcp: string;
1246
+ }
1247
+
1248
+ export interface ThemeLayout {
1249
+ readonly compact: boolean;
1250
+ readonly useUnicode: boolean;
1251
+ readonly maxWidth: number;
1252
+ }
1253
+ ```
1254
+
1255
+ ### 14.3 Terminal Capability
1256
+
1257
+ ```ts
1258
+ export interface TerminalCapability {
1259
+ readonly isTty: boolean;
1260
+ readonly supportsColor: boolean;
1261
+ readonly colorDepth: 1 | 4 | 8 | 24;
1262
+ readonly supportsUnicode: boolean;
1263
+ readonly width: number;
1264
+ readonly noColor: boolean;
1265
+ readonly ci: boolean;
1266
+ }
1267
+ ```
1268
+
1269
+ 정책:
1270
+
1271
+ ```txt
1272
+ NO_COLOR=true → mono
1273
+ TERM=dumb → mono
1274
+ CI=true → compact + no spinner
1275
+ stdout non-TTY → progress stderr only
1276
+ --color=always → force color
1277
+ --no-color → mono
1278
+ ```
1279
+
1280
+ ---
1281
+
1282
+ ## 15. NLP Renderer
1283
+
1284
+ ### 15.1 목적
1285
+
1286
+ NLP renderer는 provider prompt compiler와 다르다.
1287
+
1288
+ ```txt
1289
+ Debloat-to-NLP Compiler:
1290
+ provider에게 보낼 짧은 자연어 지시문 생성
1291
+
1292
+ NlpRenderer:
1293
+ 사용자에게 보여줄 자연어 결과/상태 리포트 생성
1294
+ ```
1295
+
1296
+ ### 15.2 Interface
1297
+
1298
+ ```ts
1299
+ export interface NlpRenderer {
1300
+ render(result: CommandResult): string;
1301
+ renderStatus(status: OmkStatusResult): string;
1302
+ renderError(error: OmkError): string;
1303
+ }
1304
+ ```
1305
+
1306
+ ### 15.3 status output 예시
1307
+
1308
+ ```txt
1309
+ OMK is running in read-only chat mode.
1310
+
1311
+ Provider:
1312
+ - kimi / kimi-code default
1313
+
1314
+ Runtime:
1315
+ - kimi-event
1316
+
1317
+ MCP:
1318
+ - Required: none
1319
+ - Optional: omk-project, memory
1320
+ - Warning: omk-web-bridge is unavailable and was ignored for this status request.
1321
+
1322
+ No active run state was found.
1323
+ ```
1324
+
1325
+ ---
1326
+
1327
+ ## 16. Slash Command Architecture
1328
+
1329
+ ### 16.1 문제
1330
+
1331
+ 현재 `/model`은 단순 local print로 보인다.
1332
+
1333
+ ```txt
1334
+ /model
1335
+ Current model: kimi-code default
1336
+ Usage: /model codex/codex-cli
1337
+ ```
1338
+
1339
+ 이 구조에서는 theme, NLP, session state, runtime sidecar와 연결되지 않는다.
1340
+
1341
+ ### 16.2 목표 구조
1342
+
1343
+ ```txt
1344
+ REPL input: /model
1345
+
1346
+ SlashCommandParser
1347
+
1348
+ CommandBus.dispatch({ kind: 'model.show' })
1349
+
1350
+ ModelCommandHandler
1351
+
1352
+ CommandResult
1353
+
1354
+ OutputRouter
1355
+
1356
+ ThemeRenderer or NlpRenderer
1357
+ ```
1358
+
1359
+ ### 16.3 Slash Command Result
1360
+
1361
+ ```ts
1362
+ export interface SlashCommandResult {
1363
+ readonly kind: 'status' | 'mutation' | 'error';
1364
+ readonly command: string;
1365
+ readonly payload: unknown;
1366
+ readonly renderMode: 'theme' | 'nlp' | 'json';
1367
+ readonly sideEffects: readonly RuntimeSideEffect[];
1368
+ }
1369
+
1370
+ export type RuntimeSideEffect =
1371
+ | { type: 'provider_changed'; provider: string; model: string }
1372
+ | { type: 'session_updated'; sessionId: string }
1373
+ | { type: 'memory_written'; memoryId: string }
1374
+ | { type: 'theme_changed'; theme: string };
1375
+ ```
1376
+
1377
+ ### 16.4 `/model` Handler
1378
+
1379
+ ```ts
1380
+ export class ModelCommandHandler {
1381
+ async execute(input: SlashCommandInput): Promise<SlashCommandResult> {
1382
+ if (!input.args[0]) {
1383
+ return {
1384
+ kind: 'status',
1385
+ command: 'model.show',
1386
+ payload: {
1387
+ currentProvider: input.state.provider,
1388
+ currentModel: input.state.model,
1389
+ usage: '/model <provider>/<model>',
1390
+ },
1391
+ renderMode: 'theme',
1392
+ sideEffects: [],
1393
+ };
1394
+ }
1395
+
1396
+ const parsed = parseProviderModel(input.args[0]);
1397
+
1398
+ return {
1399
+ kind: 'mutation',
1400
+ command: 'model.set',
1401
+ payload: parsed,
1402
+ renderMode: 'theme',
1403
+ sideEffects: [
1404
+ { type: 'provider_changed', provider: parsed.provider, model: parsed.model },
1405
+ { type: 'session_updated', sessionId: input.state.sessionId },
1406
+ ],
1407
+ };
1408
+ }
1409
+ }
1410
+ ```
1411
+
1412
+ ---
1413
+
1414
+ ## 17. Persistent Project Memory Integration
1415
+
1416
+ ### 17.1 목표
1417
+
1418
+ 프로젝트 폴더로 들어가면 이전 세션의 상태를 자동 복원한다.
1419
+
1420
+ ```txt
1421
+ cd project
1422
+ omk
1423
+
1424
+ → last session, open todos, decisions, current branch, known failure patterns를 자동 로드
1425
+ ```
1426
+
1427
+ ### 17.2 Memory Mount Flow
1428
+
1429
+ ```txt
1430
+ cwd
1431
+
1432
+ ProjectRootResolver
1433
+
1434
+ ProjectIdResolver
1435
+
1436
+ MemoryStore.open(projectId)
1437
+
1438
+ ProjectStateCapsule load
1439
+
1440
+ Intent-specific retrieval
1441
+
1442
+ Context injection to planner/provider prompt
1443
+ ```
1444
+
1445
+ ### 17.3 State Capsule
1446
+
1447
+ ```ts
1448
+ export interface ProjectStateCapsule {
1449
+ readonly projectId: string;
1450
+ readonly rootPath: string;
1451
+ readonly projectName: string;
1452
+ readonly currentBranch?: string;
1453
+
1454
+ readonly lastSession?: {
1455
+ readonly sessionId: string;
1456
+ readonly endedAt: string;
1457
+ readonly summary: string;
1458
+ readonly lastGoal?: string;
1459
+ };
1460
+
1461
+ readonly activeTodos: readonly CapsuleTodo[];
1462
+ readonly recentDecisions: readonly CapsuleDecision[];
1463
+ readonly projectInvariants: readonly string[];
1464
+ readonly preferredCommands: readonly string[];
1465
+ readonly knownFailurePatterns: readonly string[];
1466
+ readonly importantFiles: readonly string[];
1467
+ readonly openQuestions: readonly string[];
1468
+
1469
+ readonly updatedAt: string;
1470
+ }
1471
+ ```
1472
+
1473
+ ### 17.4 Memory as Runtime State
1474
+
1475
+ Memory는 provider prompt에 무식하게 전부 넣지 않는다.
1476
+
1477
+ ```txt
1478
+ Planner:
1479
+ capsule summary + relevant decisions
1480
+
1481
+ Status:
1482
+ last session + active todos + runtime state
1483
+
1484
+ Code edit:
1485
+ task-local memory + project rules + failure patterns
1486
+
1487
+ Reviewer:
1488
+ decisions + quality gate + known regressions
1489
+ ```
1490
+
1491
+ ---
1492
+
1493
+ ## 18. End-to-End Flow Examples
1494
+
1495
+ ### 18.1 `현재 상태는 어때`
1496
+
1497
+ ```txt
1498
+ Input: 현재 상태는 어때
1499
+
1500
+ CommandBus: chat.turn
1501
+
1502
+ IntentClassifier: status
1503
+
1504
+ RiskClassifier: read
1505
+
1506
+ CapabilitySelector:
1507
+ requiredMcp=[]
1508
+ optionalMcp=[omk-project, memory]
1509
+ selectedSkills=[omk-context-broker, omk-project-rules]
1510
+
1511
+ RuntimeSidecar:
1512
+ provider=kimi
1513
+ runtime=kimi-event
1514
+ failurePolicy=required-only
1515
+
1516
+ Filtered MCP config:
1517
+ omk-project, memory only
1518
+
1519
+ Model prompt:
1520
+ concise status request
1521
+
1522
+ ProviderEventNormalizer:
1523
+ raw events → warning/status/progress
1524
+
1525
+ OutputRouter:
1526
+ theme or nlp result
1527
+ ```
1528
+
1529
+ Expected result:
1530
+
1531
+ ```txt
1532
+ OMK status
1533
+
1534
+ Provider: kimi / kimi-code default
1535
+ Runtime: kimi-event
1536
+ Mode: read-only
1537
+
1538
+ MCP:
1539
+ - Required: none
1540
+ - Optional: omk-project, memory
1541
+
1542
+ No active run state found.
1543
+ ```
1544
+
1545
+ ### 18.2 `CLI input parser 고쳐줘`
1546
+
1547
+ ```txt
1548
+ Intent: code_edit
1549
+ Risk: write
1550
+ Required MCP: filesystem
1551
+ Optional MCP: omk-project, memory, sqlite
1552
+ Selected skills: omk-flow-feature-dev, omk-typescript-strict, omk-quality-gate
1553
+ Sandbox: workspace-write
1554
+ Failure policy: required-only
1555
+ ```
1556
+
1557
+ Expected behavior:
1558
+
1559
+ ```txt
1560
+ filesystem unavailable → blocker
1561
+ memory unavailable → warning
1562
+ omk-web-bridge unavailable → ignored
1563
+ ```
1564
+
1565
+ ### 18.3 `/model codex/codex-cli`
1566
+
1567
+ ```txt
1568
+ SlashCommandParser
1569
+
1570
+ CommandBus: model.set
1571
+
1572
+ Session state mutation
1573
+
1574
+ Runtime sidecar update
1575
+
1576
+ OutputRouter
1577
+ ```
1578
+
1579
+ Expected output:
1580
+
1581
+ ```txt
1582
+ Model switched.
1583
+
1584
+ Provider: codex
1585
+ Model: codex-cli
1586
+ This change applies to the current OMK session.
1587
+ ```
1588
+
1589
+ ---
1590
+
1591
+ ## 19. Migration Plan
1592
+
1593
+ ### Phase 0 — Hotfix
1594
+
1595
+ 목표: 현재 장애를 즉시 줄인다.
1596
+
1597
+ ```txt
1598
+ 1. `MUST activate all` 제거
1599
+ 2. available/required/optional capability 분리
1600
+ 3. optional MCP failure warning 처리
1601
+ 4. status intent requiredMcp=[] 강제
1602
+ 5. `kimi-print`를 debug raw에서만 사용
1603
+ ```
1604
+
1605
+ Suggested commits:
1606
+
1607
+ ```txt
1608
+ fix(runtime): split capability inventory from required activation
1609
+ fix(kimi): demote optional mcp connection failures
1610
+ fix(chat): stop emitting all skills and mcp as mandatory routing hints
1611
+ fix(runtime): avoid kimi-print outside debug raw mode
1612
+ ```
1613
+
1614
+ ### Phase 1 — RuntimeSidecar
1615
+
1616
+ ```txt
1617
+ 1. RuntimeSidecar type 추가
1618
+ 2. ProviderAdapter input을 {modelPrompt, sidecar}로 변경
1619
+ 3. per-turn MCP config 생성
1620
+ 4. prompt envelope를 sidecar로 이동
1621
+ ```
1622
+
1623
+ Suggested commits:
1624
+
1625
+ ```txt
1626
+ feat(runtime): introduce runtime sidecar for provider execution
1627
+ feat(kimi): filter mcp config per turn from runtime sidecar
1628
+ ```
1629
+
1630
+ ### Phase 2 — ProviderEventNormalizer + OutputRouter
1631
+
1632
+ ```txt
1633
+ 1. provider raw stdout/stderr 수집
1634
+ 2. Kimi raw event parser 추가
1635
+ 3. OMK event로 normalize
1636
+ 4. OutputRouter로만 출력
1637
+ 5. raw mode는 --debug-raw에서만 허용
1638
+ ```
1639
+
1640
+ Suggested commits:
1641
+
1642
+ ```txt
1643
+ feat(output): route provider events through omk output router
1644
+ feat(kimi): normalize raw kimi status events before rendering
1645
+ ```
1646
+
1647
+ ### Phase 3 — Theme / NLP Renderer Activation
1648
+
1649
+ ```txt
1650
+ 1. ThemeRenderer semantic tokens 정리
1651
+ 2. NlpRenderer status/error/result 구현
1652
+ 3. output profile을 chat path에 강제 적용
1653
+ 4. CI/no-color/non-tty 대응
1654
+ ```
1655
+
1656
+ Suggested commits:
1657
+
1658
+ ```txt
1659
+ feat(theme): apply semantic renderer to interactive chat output
1660
+ feat(nlp): enable deterministic status and error reports
1661
+ ```
1662
+
1663
+ ### Phase 4 — Slash Command CommandBus Migration
1664
+
1665
+ ```txt
1666
+ 1. SlashCommandParser 추가
1667
+ 2. /model, /status, /memory, /theme부터 CommandBus로 이동
1668
+ 3. SlashCommandResult 도입
1669
+ 4. session state mutation과 memory 기록 연결
1670
+ ```
1671
+
1672
+ Suggested commits:
1673
+
1674
+ ```txt
1675
+ refactor(repl): route slash commands through command bus
1676
+ feat(repl): persist provider changes in interactive session state
1677
+ ```
1678
+
1679
+ ### Phase 5 — CLI Framework Migration
1680
+
1681
+ 추천 후보:
1682
+
1683
+ ```txt
1684
+ 1순위: Clipanion + Clack + custom renderer
1685
+ 2순위: oclif + Clack
1686
+ 3순위: Commander/Yargs + Clack
1687
+ 장기 후보: Rust clap + ratatui 또는 Go Cobra + Bubble Tea
1688
+ ```
1689
+
1690
+ 주의:
1691
+
1692
+ ```txt
1693
+ CLI framework만 바꾸면 문제가 해결되지 않는다.
1694
+ 반드시 RuntimeSidecar / OutputRouter / ProviderEventNormalizer를 먼저 넣어야 한다.
1695
+ ```
1696
+
1697
+ ---
1698
+
1699
+ ## 20. Regression Tests
1700
+
1701
+ ### 20.1 status does not load all MCP
1702
+
1703
+ ```ts
1704
+ it('does not load all MCP servers for status intent', () => {
1705
+ const sidecar = buildTurnSidecar({
1706
+ userRequest: '현재 상태는 어때',
1707
+ inventory: inventoryWith21Mcp(),
1708
+ });
1709
+
1710
+ expect(sidecar.intent).toBe('status');
1711
+ expect(sidecar.requiredMcp).toEqual([]);
1712
+ expect(sidecar.optionalMcp.length).toBeLessThanOrEqual(2);
1713
+ expect(sidecar.optionalMcp).toContain('omk-project');
1714
+ });
1715
+ ```
1716
+
1717
+ ### 20.2 no MUST activate leakage
1718
+
1719
+ ```ts
1720
+ it('does not leak full inventory into provider prompt', () => {
1721
+ const { modelPrompt } = compileTurnPrompt({
1722
+ userRequest: '현재 상태는 어때',
1723
+ inventory: inventoryWith21McpAnd67Skills(),
1724
+ });
1725
+
1726
+ expect(modelPrompt).not.toContain('MUST activate');
1727
+ expect(modelPrompt).not.toContain('MUST use');
1728
+ expect(modelPrompt).not.toContain('filesystem, codex, web-reader');
1729
+ expect(modelPrompt.length).toBeLessThan(1200);
1730
+ });
1731
+ ```
1732
+
1733
+ ### 20.3 optional MCP failure is warning
1734
+
1735
+ ```ts
1736
+ it('treats optional MCP failure as warning', () => {
1737
+ const result = applyMcpFailurePolicy({
1738
+ requiredMcp: [],
1739
+ failedMcp: ['omk-web-bridge'],
1740
+ failurePolicy: 'required-only',
1741
+ });
1742
+
1743
+ expect(result.exitCode).toBe(0);
1744
+ expect(result.blockers).toEqual([]);
1745
+ expect(result.warnings).toEqual(['omk-web-bridge']);
1746
+ });
1747
+ ```
1748
+
1749
+ ### 20.4 kimi-print debug only
1750
+
1751
+ ```ts
1752
+ it('does not select kimi-print unless debug raw is enabled', () => {
1753
+ expect(selectProviderRuntime({
1754
+ provider: 'kimi',
1755
+ intent: 'status',
1756
+ debugRaw: false,
1757
+ })).not.toBe('kimi-print');
1758
+
1759
+ expect(selectProviderRuntime({
1760
+ provider: 'kimi',
1761
+ intent: 'status',
1762
+ debugRaw: true,
1763
+ })).toBe('kimi-print');
1764
+ });
1765
+ ```
1766
+
1767
+ ### 20.5 raw provider event not visible
1768
+
1769
+ ```ts
1770
+ it('does not show raw provider event objects in normal output', async () => {
1771
+ const output = await runInteractiveTurn('현재 상태는 어때');
1772
+
1773
+ expect(output.stdout).not.toContain('TurnBegin(');
1774
+ expect(output.stdout).not.toContain('StatusUpdate(');
1775
+ expect(output.stdout).not.toContain('MCPStatusSnapshot(');
1776
+ });
1777
+ ```
1778
+
1779
+ ### 20.6 slash command goes through OutputRouter
1780
+
1781
+ ```ts
1782
+ it('routes slash command through command bus and output router', async () => {
1783
+ const result = await repl.handleLine('/model');
1784
+
1785
+ expect(result.command).toBe('model.show');
1786
+ expect(result.renderedBy).toBe('OutputRouter');
1787
+ expect(result.rawConsoleLogUsed).toBe(false);
1788
+ });
1789
+ ```
1790
+
1791
+ ---
1792
+
1793
+ ## 21. CLI v2 Candidate Recommendation
1794
+
1795
+ ### 21.1 Recommended Stack
1796
+
1797
+ ```txt
1798
+ Parser / Command Tree:
1799
+ Clipanion
1800
+
1801
+ Interactive prompts:
1802
+ Clack
1803
+
1804
+ Rendering:
1805
+ custom OMK ThemeRenderer / NlpRenderer
1806
+
1807
+ Runtime:
1808
+ existing OMK orchestration core + RuntimeSidecar
1809
+
1810
+ Provider layer:
1811
+ ProviderAdapter abstraction
1812
+ ```
1813
+
1814
+ ### 21.2 Why Clipanion + Clack
1815
+
1816
+ ```txt
1817
+ - TypeScript strict와 잘 맞음
1818
+ - nested command tree에 강함
1819
+ - OMK의 /run, /chat, /memory, /doctor, /theme, /provider 구조에 적합
1820
+ - Clack으로 interactive UX를 정리하기 좋음
1821
+ - renderer는 직접 통제해야 theme/NLP가 보장됨
1822
+ ```
1823
+
1824
+ ### 21.3 Non-goal
1825
+
1826
+ ```txt
1827
+ - CLI framework migration으로 P0 runtime bug를 해결하려 하지 않는다.
1828
+ - Kimi 전용 SDK에 CLI 전체를 종속하지 않는다.
1829
+ - provider raw stdout을 user output으로 쓰지 않는다.
1830
+ ```
1831
+
1832
+ ---
1833
+
1834
+ ## 22. Implementation Checklist
1835
+
1836
+ ### P0 Checklist
1837
+
1838
+ ```txt
1839
+ [ ] CapabilityPlan type 추가
1840
+ [ ] available/required/optional split 적용
1841
+ [ ] Prompt에서 full skill/MCP inventory 제거
1842
+ [ ] `MUST activate` / `MUST use` 문구 제거
1843
+ [ ] status intent requiredMcp=[] 테스트 추가
1844
+ [ ] optional MCP failure warning 처리
1845
+ [ ] per-turn filtered mcp.json 생성
1846
+ [ ] kimi-print debug-only 처리
1847
+ ```
1848
+
1849
+ ### P1 Checklist
1850
+
1851
+ ```txt
1852
+ [ ] RuntimeSidecar Builder 추가
1853
+ [ ] Debloat-to-NLP Compiler 추가
1854
+ [ ] ProviderEventNormalizer 추가
1855
+ [ ] OutputRouter 추가
1856
+ [ ] ThemeRenderer를 chat path에 강제 적용
1857
+ [ ] NlpRenderer status/error 구현
1858
+ [ ] `/model` CommandBus migration
1859
+ [ ] `/status` CommandBus migration
1860
+ [ ] raw provider event regression test 추가
1861
+ ```
1862
+
1863
+ ### P2 Checklist
1864
+
1865
+ ```txt
1866
+ [ ] Clipanion 기반 cli-v2 skeleton 추가
1867
+ [ ] Clack 기반 interactive prompt 추가
1868
+ [ ] 기존 CLI와 cli-v2 병렬 실행 플래그 추가
1869
+ [ ] `OMK_CLI_V2=1` smoke test 추가
1870
+ [ ] docs/runtime-architecture.md 추가
1871
+ [ ] docs/cli-v2-migration.md 추가
1872
+ ```
1873
+
1874
+ ---
1875
+
1876
+ ## 23. Final Target Behavior
1877
+
1878
+ ### Before
1879
+
1880
+ ```txt
1881
+ User: 현재 상태는 어때
1882
+
1883
+ OMK:
1884
+ - 67 skills dump
1885
+ - 21 MCP dump
1886
+ - MUST activate all
1887
+ - TurnBegin raw object 출력
1888
+ - StatusUpdate raw object 출력
1889
+ - omk-web-bridge failure
1890
+ - exit=1
1891
+ ```
1892
+
1893
+ ### After
1894
+
1895
+ ```txt
1896
+ User: 현재 상태는 어때
1897
+
1898
+ OMK status
1899
+
1900
+ Provider:
1901
+ - kimi / kimi-code default
1902
+
1903
+ Runtime:
1904
+ - kimi-event
1905
+
1906
+ Mode:
1907
+ - read-only
1908
+
1909
+ Capabilities:
1910
+ - Required MCP: none
1911
+ - Optional MCP: omk-project, memory
1912
+ - Ignored MCP: 19 unrelated servers
1913
+ - Warning: omk-web-bridge unavailable, ignored for this request
1914
+
1915
+ Project:
1916
+ - No active run state found.
1917
+ ```
1918
+
1919
+ Exit code:
1920
+
1921
+ ```txt
1922
+ 0
1923
+ ```
1924
+
1925
+ Provider prompt length:
1926
+
1927
+ ```txt
1928
+ Before: 30k+ chars
1929
+ After: < 1.2k chars for status intent
1930
+ ```
1931
+
1932
+ MCP loading:
1933
+
1934
+ ```txt
1935
+ Before: 21 servers
1936
+ After: 0~2 servers for status intent
1937
+ ```
1938
+
1939
+ ---
1940
+
1941
+ ## 24. Closing Architecture Decision
1942
+
1943
+ 최종 결정은 다음이다.
1944
+
1945
+ ```txt
1946
+ ADR-001:
1947
+ OMK v2는 provider-neutral orchestration envelope를 model prompt로 보내지 않는다.
1948
+ Envelope는 RuntimeSidecar로 컴파일하고,
1949
+ model prompt는 Debloat-to-NLP Compiler가 생성한 최소 자연어 지시문만 사용한다.
1950
+
1951
+ ADR-002:
1952
+ Capability inventory는 activation requirement가 아니다.
1953
+ requiredMcp와 optionalMcp는 IntentClassifier + CapabilitySelector가 turn 단위로 결정한다.
1954
+
1955
+ ADR-003:
1956
+ Provider raw output은 user output이 아니다.
1957
+ 모든 provider event는 ProviderEventNormalizer와 OutputRouter를 통과해야 한다.
1958
+
1959
+ ADR-004:
1960
+ Slash command도 일반 command와 동일하게 CommandBus를 통과한다.
1961
+ Plain console print 기반 slash command는 금지한다.
1962
+
1963
+ ADR-005:
1964
+ kimi-print는 debug raw runtime이다.
1965
+ 기본 interactive runtime은 event-normalized runtime이어야 한다.
1966
+ ```
1967
+
1968
+ ---
1969
+
1970
+ ## 25. Recommended Next Commit Sequence
1971
+
1972
+ ```txt
1973
+ 1. fix(runtime): split capability inventory from required activation
1974
+ 2. fix(chat): remove mandatory all-skill and all-mcp routing directives
1975
+ 3. fix(kimi): filter MCP config per turn from runtime sidecar
1976
+ 4. fix(kimi): demote optional MCP connection failures to warnings
1977
+ 5. fix(runtime): disable kimi-print outside debug raw mode
1978
+ 6. feat(prompt): compile prompt envelope into NLP prompt and runtime sidecar
1979
+ 7. feat(output): normalize provider events before rendering
1980
+ 8. feat(theme): route interactive chat output through theme renderer
1981
+ 9. feat(nlp): add deterministic status and error renderer
1982
+ 10. refactor(repl): route slash commands through command bus
1983
+ 11. test(regression): status turn must not load unrelated MCP servers
1984
+ 12. test(regression): optional omk-web-bridge failure must not exit 1
1985
+ ```
1986
+
1987
+ ---
1988
+
1989
+ ## 26. Success Metrics
1990
+
1991
+ ```txt
1992
+ Metric 1: status prompt size
1993
+ Target: < 1,200 chars
1994
+
1995
+ Metric 2: status MCP count
1996
+ Target: <= 2
1997
+
1998
+ Metric 3: optional MCP failure exit behavior
1999
+ Target: exit=0 for non-required failures
2000
+
2001
+ Metric 4: raw provider event leakage
2002
+ Target: 0 occurrences of TurnBegin/StatusUpdate in normal stdout
2003
+
2004
+ Metric 5: theme application
2005
+ Target: 100% human-facing normal output goes through ThemeRenderer
2006
+
2007
+ Metric 6: slash command integration
2008
+ Target: /model, /status, /memory, /theme all return CommandResult
2009
+
2010
+ Metric 7: JSON machine safety
2011
+ Target: `omk run --output json > result.json` contains valid JSON only
2012
+ ```
2013
+
2014
+ ---
2015
+
2016
+ ## 27. Risk Assessment
2017
+
2018
+ | Risk | Probability | Impact | Mitigation |
2019
+ |---|---:|---:|---|
2020
+ | Provider raw event parser가 불완전함 | Medium | Medium | raw mode 유지, parser fixture test 추가 |
2021
+ | CapabilitySelector가 필요한 MCP를 과소선택함 | Medium | High | intent별 regression, `--explain-routing` 제공 |
2022
+ | Slash command migration 중 기존 UX 깨짐 | Medium | Medium | legacy alias 유지, CommandBus smoke test |
2023
+ | ThemeRenderer가 non-TTY/CI에서 깨짐 | Low | Medium | terminal capability detection |
2024
+ | Kimi isolated HOME이 user config를 다시 읽음 | Medium | High | explicit mcp config file path 강제 |
2025
+ | NLP renderer가 결과를 과장함 | Medium | Medium | deterministic template 우선, source result hash 포함 |
2026
+
2027
+ ---
2028
+
2029
+ ## 28. Decision Summary
2030
+
2031
+ 지금 당장 필요한 것은 “예쁜 테마”나 “NLP 출력 옵션”을 덧붙이는 게 아니다.
2032
+
2033
+ 먼저 runtime을 다음처럼 분리해야 한다.
2034
+
2035
+ ```txt
2036
+ Control-plane:
2037
+ CommandEnvelope, CapabilityInventory, RuntimeSidecar, Provider config
2038
+
2039
+ Data-plane:
2040
+ modelPrompt, provider response, normalized events, rendered output
2041
+ ```
2042
+
2043
+ 이 분리가 끝나야 theme, NLP, slash command, memory, MCP 안정화가 모두 정상 작동한다.
2044
+
2045
+ 최종 권장 순서는 다음이다.
2046
+
2047
+ ```txt
2048
+ 1. CapabilityPlan
2049
+ 2. RuntimeSidecar
2050
+ 3. Per-turn MCP filtering
2051
+ 4. FailurePolicy
2052
+ 5. ProviderEventNormalizer
2053
+ 6. OutputRouter
2054
+ 7. Theme/NLP Renderer
2055
+ 8. Slash Command CommandBus
2056
+ 9. CLI v2 framework migration
2057
+ ```
2058
+