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,1783 @@
1
+ export const OKABE_AGENT_YAML = `version: 1
2
+ agent:
3
+ extend: default
4
+ name: omk-okabe-base
5
+ # Provider adapters may require an explicit non-empty tools list for custom --agent-file configs.
6
+ # Keep the full OMK native tool surface, including Agent for parallel subagents
7
+ # and SendDMail for Okabe checkpoints; MCP/skills/hooks are injected by runtime config.
8
+ tools:
9
+ - "kimi_cli.tools.agent:Agent"
10
+ - "kimi_cli.tools.ask_user:AskUserQuestion"
11
+ - "kimi_cli.tools.todo:SetTodoList"
12
+ - "kimi_cli.tools.shell:Shell"
13
+ - "kimi_cli.tools.file:ReadFile"
14
+ - "kimi_cli.tools.file:ReadMediaFile"
15
+ - "kimi_cli.tools.file:Glob"
16
+ - "kimi_cli.tools.file:Grep"
17
+ - "kimi_cli.tools.file:WriteFile"
18
+ - "kimi_cli.tools.file:StrReplaceFile"
19
+ - "kimi_cli.tools.web:SearchWeb"
20
+ - "kimi_cli.tools.web:FetchURL"
21
+ - "kimi_cli.tools.plan.enter:EnterPlanMode"
22
+ - "kimi_cli.tools.plan:ExitPlanMode"
23
+ - "kimi_cli.tools.background:TaskList"
24
+ - "kimi_cli.tools.background:TaskOutput"
25
+ - "kimi_cli.tools.background:TaskStop"
26
+ - "kimi_cli.tools.dmail:SendDMail"
27
+ system_prompt_args:
28
+ OMK_MCP_ENABLED: "true"
29
+ OMK_SKILLS_ENABLED: "true"
30
+ OMK_HOOKS_ENABLED: "true"
31
+ `;
32
+ export const ROOT_AGENT_YAML = `version: 1
33
+ agent:
34
+ extend: ./okabe.yaml # Inherits OMK adapter tools plus scoped MCP/skills/hooks flags
35
+ name: omk-root
36
+ system_prompt_path: ../prompts/root.md
37
+ system_prompt_args:
38
+ OMK_ROLE: "root-coordinator"
39
+ OMK_MCP_ENABLED: "true"
40
+ OMK_SKILLS_ENABLED: "true"
41
+ OMK_HOOKS_ENABLED: "true"
42
+ subagents:
43
+ explorer:
44
+ path: ./roles/explorer.yaml
45
+ description: "Read-only repository exploration and context mapping with scoped MCP, skills, and hooks access when enabled by runtime scope"
46
+ explore:
47
+ path: ./roles/explorer.yaml
48
+ description: "Alias for explorer; kept for compatibility with older OMK instructions"
49
+ planner:
50
+ path: ./roles/planner.yaml
51
+ description: "Architecture, refactor, migration, and implementation planning with scoped MCP, skills, and hooks access when enabled by runtime scope"
52
+ plan:
53
+ path: ./roles/planner.yaml
54
+ description: "Alias for planner; kept for compatibility with older OMK instructions"
55
+ router:
56
+ path: ./roles/router.yaml
57
+ description: "Task routing, skill/MCP/hook fit, context budgeting, and parallel/sequential lane decisions with scoped MCP, skills, and hooks access when enabled by runtime scope"
58
+ architect:
59
+ path: ./roles/architect.yaml
60
+ description: "Read-only architecture and migration design with scoped MCP, skills, and hooks access when enabled by runtime scope"
61
+ coder:
62
+ path: ./roles/coder.yaml
63
+ description: "Scoped implementation in the current project with scoped MCP, skills, and hooks access when enabled by runtime scope"
64
+ reviewer:
65
+ path: ./roles/reviewer.yaml
66
+ description: "Adversarial code review and risk detection with scoped MCP, skills, and hooks access when enabled by runtime scope"
67
+ security:
68
+ path: ./roles/security.yaml
69
+ description: "Security, secret, permission, and trust-boundary review with scoped MCP, skills, and hooks access when enabled by runtime scope"
70
+ qa:
71
+ path: ./roles/qa.yaml
72
+ description: "Run and analyze lint, typecheck, test, and build results with scoped MCP, skills, and hooks access when enabled by runtime scope"
73
+ tester:
74
+ path: ./roles/tester.yaml
75
+ description: "Focused regression and edge-case testing with scoped MCP, skills, and hooks access when enabled by runtime scope"
76
+ researcher:
77
+ path: ./roles/researcher.yaml
78
+ description: "Reference-backed research and external documentation checks with scoped MCP, skills, and hooks access when enabled by runtime scope"
79
+ integrator:
80
+ path: ./roles/integrator.yaml
81
+ description: "Merge coordination and final synthesis with scoped MCP, skills, and hooks access when enabled by runtime scope"
82
+ aggregator:
83
+ path: ./roles/aggregator.yaml
84
+ description: "Parallel-lane result aggregation with scoped MCP, skills, and hooks access when enabled by runtime scope"
85
+ interviewer:
86
+ path: ./roles/interviewer.yaml
87
+ description: "Requirement clarification and acceptance criteria discovery with scoped MCP, skills, and hooks access when enabled by runtime scope"
88
+ ontology:
89
+ path: ./roles/ontology.yaml
90
+ description: "Project graph memory and ontology curation with scoped MCP, skills, and hooks access when enabled by runtime scope"
91
+ vision-debugger:
92
+ path: ./roles/vision-debugger.yaml
93
+ description: "Screenshot and multimodal debugging with scoped MCP, skills, and hooks access when enabled by runtime scope"
94
+ `;
95
+ export const ROLE_YAMLS = {
96
+ interviewer: `version: 1
97
+ agent:
98
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
99
+ name: omk-interviewer
100
+ system_prompt_args:
101
+ OMK_ROLE: "interviewer"
102
+ OMK_MCP_ENABLED: "true"
103
+ OMK_SKILLS_ENABLED: "true"
104
+ OMK_HOOKS_ENABLED: "true"
105
+ exclude_tools:
106
+ - "kimi_cli.tools.file:WriteFile"
107
+ - "kimi_cli.tools.file:StrReplaceFile"
108
+ - "kimi_cli.tools.shell:Shell"
109
+ `,
110
+ architect: `version: 1
111
+ agent:
112
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
113
+ name: omk-architect
114
+ system_prompt_args:
115
+ OMK_ROLE: "architect"
116
+ OMK_MCP_ENABLED: "true"
117
+ OMK_SKILLS_ENABLED: "true"
118
+ OMK_HOOKS_ENABLED: "true"
119
+ exclude_tools:
120
+ - "kimi_cli.tools.file:WriteFile"
121
+ - "kimi_cli.tools.file:StrReplaceFile"
122
+ - "kimi_cli.tools.shell:Shell"
123
+ `,
124
+ planner: `version: 1
125
+ agent:
126
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
127
+ name: omk-planner
128
+ system_prompt_args:
129
+ OMK_ROLE: "planner"
130
+ OMK_MCP_ENABLED: "true"
131
+ OMK_SKILLS_ENABLED: "true"
132
+ OMK_HOOKS_ENABLED: "true"
133
+ exclude_tools:
134
+ - "kimi_cli.tools.file:WriteFile"
135
+ - "kimi_cli.tools.file:StrReplaceFile"
136
+ - "kimi_cli.tools.shell:Shell"
137
+ `,
138
+ router: `version: 1
139
+ agent:
140
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
141
+ name: omk-router
142
+ system_prompt_args:
143
+ OMK_ROLE: "router"
144
+ OMK_MCP_ENABLED: "true"
145
+ OMK_SKILLS_ENABLED: "true"
146
+ OMK_HOOKS_ENABLED: "true"
147
+ exclude_tools:
148
+ - "kimi_cli.tools.file:WriteFile"
149
+ - "kimi_cli.tools.file:StrReplaceFile"
150
+ - "kimi_cli.tools.shell:Shell"
151
+ `,
152
+ explorer: `version: 1
153
+ agent:
154
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
155
+ name: omk-explorer
156
+ system_prompt_args:
157
+ OMK_ROLE: "explorer"
158
+ OMK_MCP_ENABLED: "true"
159
+ OMK_SKILLS_ENABLED: "true"
160
+ OMK_HOOKS_ENABLED: "true"
161
+ exclude_tools:
162
+ - "kimi_cli.tools.file:WriteFile"
163
+ - "kimi_cli.tools.file:StrReplaceFile"
164
+ - "kimi_cli.tools.shell:Shell"
165
+ `,
166
+ coder: `version: 1
167
+ agent:
168
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
169
+ name: omk-coder
170
+ system_prompt_args:
171
+ OMK_ROLE: "coder"
172
+ OMK_MCP_ENABLED: "true"
173
+ OMK_SKILLS_ENABLED: "true"
174
+ OMK_HOOKS_ENABLED: "true"
175
+ `,
176
+ reviewer: `version: 1
177
+ agent:
178
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
179
+ name: omk-reviewer
180
+ system_prompt_args:
181
+ OMK_ROLE: "reviewer"
182
+ OMK_MCP_ENABLED: "true"
183
+ OMK_SKILLS_ENABLED: "true"
184
+ OMK_HOOKS_ENABLED: "true"
185
+ exclude_tools:
186
+ - "kimi_cli.tools.file:WriteFile"
187
+ - "kimi_cli.tools.file:StrReplaceFile"
188
+ - "kimi_cli.tools.shell:Shell"
189
+ `,
190
+ security: `version: 1
191
+ agent:
192
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
193
+ name: omk-security
194
+ system_prompt_args:
195
+ OMK_ROLE: "security"
196
+ OMK_MCP_ENABLED: "true"
197
+ OMK_SKILLS_ENABLED: "true"
198
+ OMK_HOOKS_ENABLED: "true"
199
+ exclude_tools:
200
+ - "kimi_cli.tools.file:WriteFile"
201
+ - "kimi_cli.tools.file:StrReplaceFile"
202
+ `,
203
+ qa: `version: 1
204
+ agent:
205
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
206
+ name: omk-qa
207
+ system_prompt_args:
208
+ OMK_ROLE: "qa"
209
+ OMK_MCP_ENABLED: "true"
210
+ OMK_SKILLS_ENABLED: "true"
211
+ OMK_HOOKS_ENABLED: "true"
212
+ exclude_tools:
213
+ - "kimi_cli.tools.file:WriteFile"
214
+ - "kimi_cli.tools.file:StrReplaceFile"
215
+ `,
216
+ tester: `version: 1
217
+ agent:
218
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
219
+ name: omk-tester
220
+ system_prompt_args:
221
+ OMK_ROLE: "tester"
222
+ OMK_MCP_ENABLED: "true"
223
+ OMK_SKILLS_ENABLED: "true"
224
+ OMK_HOOKS_ENABLED: "true"
225
+ exclude_tools:
226
+ - "kimi_cli.tools.file:WriteFile"
227
+ - "kimi_cli.tools.file:StrReplaceFile"
228
+ `,
229
+ integrator: `version: 1
230
+ agent:
231
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
232
+ name: omk-integrator
233
+ system_prompt_args:
234
+ OMK_ROLE: "integrator"
235
+ OMK_MCP_ENABLED: "true"
236
+ OMK_SKILLS_ENABLED: "true"
237
+ OMK_HOOKS_ENABLED: "true"
238
+ exclude_tools:
239
+ - "kimi_cli.tools.file:WriteFile"
240
+ - "kimi_cli.tools.file:StrReplaceFile"
241
+ - "kimi_cli.tools.shell:Shell"
242
+ `,
243
+ aggregator: `version: 1
244
+ agent:
245
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
246
+ name: omk-aggregator
247
+ system_prompt_args:
248
+ OMK_ROLE: "aggregator"
249
+ OMK_MCP_ENABLED: "true"
250
+ OMK_SKILLS_ENABLED: "true"
251
+ OMK_HOOKS_ENABLED: "true"
252
+ exclude_tools:
253
+ - "kimi_cli.tools.file:WriteFile"
254
+ - "kimi_cli.tools.file:StrReplaceFile"
255
+ - "kimi_cli.tools.shell:Shell"
256
+ `,
257
+ researcher: `version: 1
258
+ agent:
259
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
260
+ name: omk-researcher
261
+ system_prompt_args:
262
+ OMK_ROLE: "researcher"
263
+ OMK_MCP_ENABLED: "true"
264
+ OMK_SKILLS_ENABLED: "true"
265
+ OMK_HOOKS_ENABLED: "true"
266
+ exclude_tools:
267
+ - "kimi_cli.tools.file:WriteFile"
268
+ - "kimi_cli.tools.file:StrReplaceFile"
269
+ - "kimi_cli.tools.shell:Shell"
270
+ `,
271
+ ontology: `version: 1
272
+ agent:
273
+ extend: ../okabe.yaml
274
+ name: omk-ontology
275
+ system_prompt_args:
276
+ OMK_ROLE: "ontology"
277
+ OMK_MCP_ENABLED: "true"
278
+ OMK_SKILLS_ENABLED: "true"
279
+ OMK_HOOKS_ENABLED: "true"
280
+ exclude_tools:
281
+ - "kimi_cli.tools.file:WriteFile"
282
+ - "kimi_cli.tools.file:StrReplaceFile"
283
+ - "kimi_cli.tools.shell:Shell"
284
+ `,
285
+ "vision-debugger": `version: 1
286
+ agent:
287
+ extend: ../okabe.yaml # Inherits unrestricted default Kimi tools plus MCP/skills/hooks flags
288
+ name: omk-vision-debugger
289
+ system_prompt_args:
290
+ OMK_ROLE: "vision-debugger"
291
+ OMK_MCP_ENABLED: "true"
292
+ OMK_SKILLS_ENABLED: "true"
293
+ OMK_HOOKS_ENABLED: "true"
294
+ exclude_tools:
295
+ - "kimi_cli.tools.file:WriteFile"
296
+ - "kimi_cli.tools.file:StrReplaceFile"
297
+ `,
298
+ };
299
+ export function getDesignMd(version) {
300
+ return `---
301
+ title: "Design System"
302
+ description: "Project visual identity and design system"
303
+ version: "${version}"
304
+ ---
305
+
306
+ # DESIGN.md
307
+
308
+ ## Overview
309
+
310
+ Project visual identity and design system.
311
+
312
+ ## Colors
313
+
314
+ - Primary: #111827
315
+ - Accent: #7C3AED
316
+ - Success: #059669
317
+ - Warning: #D97706
318
+ - Danger: #DC2626
319
+
320
+ ## Typography
321
+
322
+ - Inter, system-ui
323
+
324
+ ## Rules
325
+
326
+ - Use tokens before inventing new values.
327
+ - Keep components compact and status-aware.
328
+ `;
329
+ }
330
+ export const GEMINI_MD = `# GEMINI.md
331
+
332
+ @./AGENTS.md
333
+ @./DESIGN.md
334
+
335
+ Use AGENTS.md as the canonical project instruction source, including current OMK skills, MCP, agents, and harness policy.
336
+ Use DESIGN.md as the canonical visual identity source.
337
+ Do not duplicate runtime inventories; follow AGENTS.md and \`chat-agent-harness.json\` when present.
338
+ `;
339
+ export const CLAUDE_MD = `# CLAUDE.md
340
+
341
+ @./AGENTS.md
342
+ @./DESIGN.md
343
+
344
+ Use AGENTS.md as the canonical project instruction source, including current OMK skills, MCP, agents, and harness policy.
345
+ Use DESIGN.md for UI/frontend work.
346
+ Do not duplicate runtime inventories; follow AGENTS.md and \`chat-agent-harness.json\` when present.
347
+ `;
348
+ export const ROADMAP_MD = `# Roadmap
349
+
350
+ Current source version: v1.1.18
351
+ Last updated: 2026-05-24
352
+
353
+ ## Current runtime stance
354
+
355
+ OMK is the root orchestrator. Kimi is an authority-capable compatibility provider adapter, not the whole runtime or implicit default. Codex, DeepSeek, OpenCode, CommandCode, OpenRouter, Qwen, Gemini, and Claude run as adapter lanes only when provider health, capability, approval, sandbox, and harness policy match the task.
356
+
357
+ - \`omk run\`, \`omk parallel\`, chat harnesses, and DAG replay expose provider routing and evidence-gated lanes.
358
+ - \`omk provider\` / \`omk deepseek\` manage provider enablement, key setup, availability checks, and fallback readiness.
359
+ - DeepSeek is read/review/advisory by default; it must not receive write/shell authority from native chat defaults.
360
+ - The resolved authority provider remains the writer, merger, and final synthesis lane for write/shell/merge work.
361
+ - \`omk graph view\` generates an HTML view from local graph memory.
362
+ - \`omk goal\` has a persisted lifecycle, continue loop, generated plan/evidence criteria, and verification flow.
363
+
364
+ ## v1.2 — Hardening the current surface
365
+
366
+ ### P0: native runtime safety hardening
367
+
368
+ - Remaining: native chat turn capabilities must be intent-based: read-only by default, write only for edits, shell only for explicit command/build/test work, merge only for merge/release operations.
369
+ - Remaining: \`--execution ask|auto|never\` and sandbox mode must propagate into runtime adapter metadata; provider adapters must not silently collapse ask into never.
370
+ - Remaining: \`authority\`, \`primary\`, and \`omk\` provider policy must resolve to a concrete provider before bootstrap/router execution.
371
+ - Remaining: CLI provider bootstrap must distinguish runtime/binary availability from auth/model/quota readiness.
372
+ - Remaining: MCP, skills, hooks, and tool-plane parse or resolution failures must surface as diagnostics; runtime-required MCP failures should hard fail.
373
+
374
+ ### P0: release and contract gates
375
+
376
+ - Done: YAML validation now runs in local \`verify\` plus CI/smoke workflows.
377
+ - Done: package dry-pack, package audit, tarball smoke, native safety build, and release matrix gates were re-verified against v1.1.17 artifacts.
378
+ - Done: provider/deepseek and screenshot JSON command contracts gained hermetic regression tests.
379
+ - Done: current AGENTS/init templates and packaged workflow skills were aligned with the active skills/MCP/agents/harness surface, including all generated agent MCP/skills/hooks flags and parallel subagent orchestration guidance.
380
+ - Remaining: lock broader provider fallback metadata with tests for rate limit, timeout, and authority fallback variants.
381
+ - Remaining: define minimum machine-readable CLI envelopes for the rest of the automation-critical commands.
382
+ - Remaining: release/tag only after local gates, native safety packaging, package audit, smoke-pack, tarball install smoke, GitHub Smoke Test, and GitHub CI pass on the exact target commit.
383
+
384
+ ### P1: observability and diagnostics
385
+
386
+ - Done: provider route/fallback counts are now emitted in run summaries/reports and summary terminal output.
387
+ - Done: invalid MCP JSON is reported as a visible diagnostic without leaking secret-like config values.
388
+ - Done: \`omk mcp doctor --json\` exposes structured server status, command resolution, timeout, permission, and config-source fields.
389
+ - Expand JSON output for graph, DAG, summary, and workflow commands where CI or agents consume results.
390
+ - Link graph nodes back to runs, goals, providers, and evidence so \`omk graph view\` becomes audit evidence, not only visualization.
391
+
392
+ ### P2: execution depth and planner quality
393
+
394
+ - Deepen \`omk team\` runtime reporting: worker state, pane/session health, artifacts, and verification handoff.
395
+ - Done: replace the \`omk goal plan\` stub with a planner that emits steps, acceptance criteria, risks, and evidence gates.
396
+ - Add provider-quality gates before broader non-primary-provider worker pools.
397
+ - Keep primary-provider execution as the safe fallback path for every run.
398
+
399
+ ## Later tracks
400
+
401
+ ### Provider routing maturity
402
+
403
+ - Keep the resolved authority provider as the writer, merger, and final synthesis runtime.
404
+ - Use provider hints for explorer, reviewer, QA, planner, and documentation roles only when preflight is healthy and task risk is low.
405
+ - Record provider attempts, route confidence, fallback reason, and final authority in run evidence.
406
+
407
+ ### Graph and memory maturity
408
+
409
+ - Materialize provider routes, fallback events, goals, evidence gates, and run artifacts in the local graph/Kuzu ontology.
410
+ - Keep \`omk graph view\` local-first and safe for private repositories.
411
+
412
+ ### Historical milestones
413
+
414
+ | Version | Focus |
415
+ |---------|-------|
416
+ | v0.1 | init / doctor / chat, P0 skills, AGENTS.md / DESIGN.md generation, quality gate hooks |
417
+ | v0.2 | wire controller, HUD, run state, worker logs |
418
+ | v0.3 | worktree team, merge queue, reviewer / QA / integrator agents |
419
+ | v0.4 | Google DESIGN.md integration, Stitch skills installer, screenshot UI review, Spec Kit planning + DAG execution, agent registry, project index, run summary |
420
+ | v0.5 | MCP project server, plugin pack, CI agent mode |
421
+ | v1.1.6 | provider/deepseek commands, provider policy flags, graph view, goal lifecycle, expanded run history and update JSON |
422
+ | v1.1.9 | chat harness manifest, capability DAG lanes, Rust native safety loader, Windows clipboard screenshot bridge, release native matrix |
423
+ | v1.1.12 | Replay system, skill assigner, decision trace coverage, evidence gates, and repair policy |
424
+ | v1.1.13 | Bundled MCP server entrypoints, ACP/host transport groundwork, deployment-ready package metadata |
425
+ | v1.1.14 | Current harness docs, external-inspired workflow skills, and release-safe public wording |
426
+ | v1.1.15 | Isolated HOME MCP shell-profile hotfix and persistent fetch MCP entrypoint |
427
+ | v1.1.16 | Deterministic IntentFrame/ActionAtom orchestration, chat schema preflight, MCP duplicate policy, agent capability propagation, and doctor/init/pack smoke fixes |
428
+ | v1.1.17 | Full generated-agent MCP/skills/hooks enablement, parallel subagent orchestration emphasis, and v1.1.17 release docs |
429
+ `;
430
+ export const SECURITY_MD = `# Security Policy
431
+
432
+ ## Reporting Vulnerabilities
433
+
434
+ Please report security issues via GitHub Issues with the \`security\` label.
435
+
436
+ ## Built-in Protections
437
+
438
+ open-multi-agent-kit includes scoped default hooks to block destructive commands and secret leakage when the active runtime/harness enables them.
439
+
440
+ ## Native Runtime Safety Gates
441
+
442
+ - Native chat turns should be read-only by default; write, shell, and merge capabilities must be requested only when task intent requires them.
443
+ - \`--execution ask|auto|never\` and sandbox policy must propagate through routing into runtime adapters.
444
+ - \`authority\`, \`primary\`, and \`omk\` provider policies must resolve to a concrete provider before execution.
445
+ - DeepSeek and other advisory providers are read/review/advisory by default and must not silently receive write/shell authority.
446
+ - Provider bootstrap must distinguish binary/runtime availability from auth, model, and quota readiness.
447
+ - Provider failure previews must be gated behind debug mode and redacted before terminal or artifact output.
448
+ - MCP, skills, hooks, and tool-plane parse/resolution failures must surface as diagnostics; runtime-required MCP failures should block execution.
449
+
450
+ ## MCP and Harness Secret Handling
451
+
452
+ - Fresh init writes project-local \`omk-project\` MCP only; user/global MCP and skills are runtime-only unless explicitly imported by a trusted local user.
453
+ - Never print, commit, or summarize MCP \`env\`, headers, tokens, or provider keys.
454
+ - Treat \`chat-agent-harness.json\` as private run metadata: use it for inventory/gates, but do not paste large inventories or secret-like values into prompts, memory, or reports.
455
+ - Prefer sanitized \`omk mcp doctor --json\`, \`omk verify --json\`, test summaries, and secret scans as shareable evidence.
456
+
457
+ ## Child Runtime Isolation
458
+
459
+ OMK currently provides environment hardening for child runtimes.
460
+
461
+ By default, child runtimes do not inherit the full parent process environment.
462
+ OMK passes an allowlisted environment and drops common secret-bearing variables
463
+ such as cloud provider credentials, GitHub/NPM tokens, SSH agent sockets,
464
+ Kubernetes config, and dotenv/env-file references.
465
+
466
+ This is not a full OS-level sandbox. Filesystem, process, and network isolation
467
+ are future hardening work and must not be assumed unless explicitly provided by
468
+ the selected runtime or host environment.
469
+
470
+ Current security claims:
471
+
472
+ - OMK prevents ambient secret leakage into child runtimes by default.
473
+ - OMK sanitizes child runtime environments.
474
+ - OMK routes tasks according to declared runtime capabilities.
475
+ - OMK forces approval for write-capable Codex workspace runs.
476
+ - OMK exposes sandbox intent/profile metadata for future enforcement.
477
+
478
+ Non-claims:
479
+
480
+ - OMK does not fully sandbox child CLIs.
481
+ - OMK does not prevent all filesystem access outside the workspace.
482
+ - OMK does not prevent network exfiltration.
483
+ - OMK does not enforce OS-level process isolation.
484
+
485
+ ## Best Practices
486
+
487
+ - Review hooks before running in production repositories.
488
+ - Use \`--print\` mode only in disposable worktrees.
489
+ - Never commit secrets into agent memory files.
490
+ `;
491
+ export const ROOT_PROMPT_MD = `# open-multi-agent-kit Root Agent
492
+
493
+ You are the OMK root orchestrator for open-multi-agent-kit — a provider-neutral orchestration control plane that turns a goal into a bounded coding team.
494
+
495
+ Models execute. OMK routes, verifies, measures, and controls.
496
+
497
+ You must operate with OMK identity as the authority layer: summon parallel subagents when scopes are independent, assign each lane scoped MCP, skills, and hooks, and keep the root context focused on goal management, integration, evidence, and verification. The active runtime scope, selected provider adapter, and harness policy decide which resources are actually available.
498
+
499
+ ## Loaded Project Instructions
500
+
501
+ \${KIMI_AGENTS_MD}
502
+
503
+ ## Loaded Skills
504
+
505
+ \${KIMI_SKILLS}
506
+
507
+ ## Global Rules
508
+
509
+ - Apply AGENTS.md silently.
510
+ - Do not repeat boilerplate.
511
+ - Use SetTodoList for multi-step tasks.
512
+ - Use Agent tool for non-trivial tasks. All 15 role agents (explorer, planner, router, architect, coder, reviewer, security, qa, tester, researcher, integrator, aggregator, interviewer, ontology, vision-debugger) are available with MCP, skills, and hooks capability flags.
513
+ - Use skills when relevant.
514
+ - Use MCP tools when configured and useful. All subagents inherit scoped MCP server inventory, skills, and hooks when enabled by runtime scope. Do not hesitate to invoke available capabilities.
515
+ - Treat project-local ontology graph memory as mandatory when the omk-project MCP exposes memory tools.
516
+ - Recall relevant project memory before work, write durable findings through omk_write_memory, and use omk_memory_mindmap/omk_graph_query for graph recall.
517
+ - Prefer plan-first execution.
518
+ - Prefer small, reviewable diffs.
519
+ - Verify before completion.
520
+ - Never claim tests passed unless they were run.
521
+
522
+ ## Active Harness and Resource Inventory
523
+
524
+ - If a run contains chat-agent-harness.json, read it for the full MCP/skills/hooks inventory, virtual DAG, authority boundaries, worker limits, and gate list.
525
+ - Treat compact prompt resource counts as summaries only.
526
+ - Default runtime scope is project MCP/skills; all-scope may read user ~/.kimi resources at runtime without copying personal files.
527
+ - Do not paste huge global MCP/skill inventories or secret-bearing env/header values into prompts, memory, or final reports.
528
+
529
+ ## OMK Context Tools
530
+
531
+ - Root and generated role agents inherit an Okabe-compatible base while OMK scopes MCP, skills, and hooks per active runtime/harness policy.
532
+ - Use D-Mail before risky refactors, compaction, or long-running branch points: send a concise future-facing recovery note to the relevant checkpoint.
533
+ - Use OMK-managed subagents for isolated context and parallel work; keep the root context focused on decisions, integration, and verification.
534
+ - Prefer /compact or a D-Mail recovery note over dumping large history back into the prompt.
535
+
536
+ ## Required Workflow
537
+
538
+ For non-trivial tasks:
539
+
540
+ 1. Read project instructions.
541
+ 2. Create todos.
542
+ 3. Launch appropriate subagents in parallel when their scopes are independent:
543
+ - explorer for repository discovery
544
+ - planner for architecture/refactor/risky work
545
+ - coder for implementation
546
+ - reviewer or qa for review and gate analysis
547
+ - security for secret/permission/trust-boundary review
548
+ - ontology for graph memory and project knowledge curation
549
+ 4. Read relevant skills.
550
+ 5. Use MCP if useful.
551
+ 6. Implement minimal changes.
552
+ 7. Run quality gates.
553
+ 8. Review final diff.
554
+ 9. Return factual final report.
555
+
556
+ ## Final Report Format
557
+
558
+ \`\`\`txt
559
+ Changed:
560
+ Files:
561
+ Commands:
562
+ Result:
563
+ Risk:
564
+ \`\`\`
565
+ `;
566
+ export const HOOK_SCRIPTS = {
567
+ "session-context.sh": `#!/usr/bin/env bash
568
+ # OMK SessionStart Context — keeps high-value local workflows visible
569
+ set -euo pipefail
570
+
571
+ if ! command -v node &>/dev/null; then
572
+ echo '{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"OMK session started. Read project rules, use graph-view for memory relationships, use open-design for localhost design, and verify before final."}}'
573
+ exit 0
574
+ fi
575
+
576
+ node <<'NODE'
577
+ const context = [
578
+ 'OMK session startup context.',
579
+ '- Read AGENTS.md and .kimi/AGENTS.md before edits; read DESIGN.md before UI/frontend/visual work.',
580
+ '- For local design iteration, use /open-design or omk design open-design --open to launch localhost.',
581
+ '- For memory/risk/file relationships, use /graph-view or omk graph view --open before broad repo edits.',
582
+ '- Treat release, push, publish, and deployment as not done unless the exact command ran and fresh evidence was collected.',
583
+ '- Final reports should list changed files, commands run, pass/fail/not-run status, and remaining risk.',
584
+ ].join('\\n');
585
+
586
+ process.stdout.write(JSON.stringify({
587
+ hookSpecificOutput: {
588
+ hookEventName: 'SessionStart',
589
+ additionalContext: context,
590
+ },
591
+ }) + '\\n');
592
+ NODE
593
+ `,
594
+ "awesome-agent-skills-router.sh": `#!/usr/bin/env bash
595
+ # Awesome Agent Skills Router — curated OMK hints from VoltAgent/awesome-agent-skills
596
+ set -euo pipefail
597
+
598
+ # This hook is advisory only: no network access, no third-party skill install,
599
+ # and no prompt blocking. It maps common awesome-agent-skills domains to the
600
+ # already-installed OMK skills/workflows that are safe to consider.
601
+ if ! command -v node &>/dev/null; then
602
+ exit 0
603
+ fi
604
+
605
+ INPUT_FILE="$(mktemp)"
606
+ trap 'rm -f "$INPUT_FILE"' EXIT
607
+ cat > "$INPUT_FILE"
608
+
609
+ node - "$INPUT_FILE" <<'NODE'
610
+ const fs = require('node:fs');
611
+ // Static slash markers for non-shell smoke validation:
612
+ // /open-design /awesome-design-md /omk-design-md /omk-quality-gate /graph-view /omk-kimi-runtime
613
+
614
+ function readPayload(filePath) {
615
+ try {
616
+ const raw = fs.readFileSync(filePath, 'utf8').trim();
617
+ if (!raw) return {};
618
+ return JSON.parse(raw);
619
+ } catch {
620
+ return {};
621
+ }
622
+ }
623
+
624
+ function textFrom(value) {
625
+ if (typeof value === 'string') return value;
626
+ if (Array.isArray(value)) {
627
+ return value.map(textFrom).filter(Boolean).join('\\n');
628
+ }
629
+ if (value && typeof value === 'object') {
630
+ for (const key of ['prompt', 'user_prompt', 'message', 'input', 'text', 'content', 'command_args']) {
631
+ const found = textFrom(value[key]);
632
+ if (found) return found;
633
+ }
634
+ }
635
+ return '';
636
+ }
637
+
638
+ const payload = readPayload(process.argv[2]);
639
+ const prompt = textFrom(payload.prompt)
640
+ || textFrom(payload.user_prompt)
641
+ || textFrom(payload.message)
642
+ || textFrom(payload.input)
643
+ || textFrom(payload.command_args)
644
+ || textFrom(payload.tool_input)
645
+ || textFrom(payload);
646
+
647
+ const normalized = prompt.toLowerCase();
648
+ if (normalized.trim().length < 3) {
649
+ process.exit(0);
650
+ }
651
+
652
+ const routes = [
653
+ {
654
+ id: 'design-ui',
655
+ patterns: [
656
+ 'design', 'ui', 'ux', 'frontend', 'front-end', 'figma', 'stitch', 'open-design',
657
+ 'prototype', 'landing', 'component', 'visual', 'screenshot', 'responsive', 'accessibility',
658
+ 'react', 'next.js', 'vite', 'expo', 'react native',
659
+ '디자인', '화면', '프론트', '랜딩', '컴포넌트', '시각', '스크린샷', '반응형', '접근성', '프로토타입',
660
+ ],
661
+ skills: ['open-design', 'awesome-design-md', 'omk-design-md', 'omk-flow-design-to-code', 'omk-multimodal-ui-review', 'react-doctor'],
662
+ note: 'For visual work, read DESIGN.md, reuse tokens, use awesome-design-md references when a named style is requested, and launch localhost with omk design open-design when interactive design is useful.',
663
+ },
664
+ {
665
+ id: 'bugfix-debug',
666
+ patterns: [
667
+ 'bug', 'error', 'failed', 'failure', 'traceback', 'exception', 'fix', 'regression', 'broken', 'debug',
668
+ '버그', '에러', '오류', '실패', '고쳐', '수정', '안됨', '안돼', '문제', '디버그',
669
+ ],
670
+ skills: ['omk-flow-bugfix', 'andrej-karpathy-skills', 'matt-pocock-skills', 'omk-quality-gate'],
671
+ note: 'For failures, isolate root cause first, keep the patch small, and rerun the failing command plus the quality gate.',
672
+ },
673
+ {
674
+ id: 'feature-build',
675
+ patterns: [
676
+ 'implement', 'build', 'add ', 'create', 'scaffold', 'generate', 'feature', 'new command',
677
+ '구현', '추가', '만들', '생성', '기능', '신규',
678
+ ],
679
+ skills: ['omk-plan-first', 'omk-flow-feature-dev', 'matt-pocock-skills', 'andrej-karpathy-skills', 'omk-quality-gate'],
680
+ note: 'For new capability work, plan the smallest reversible diff and include regression coverage before completion.',
681
+ },
682
+ {
683
+ id: 'review-security',
684
+ patterns: [
685
+ 'review', 'audit', 'security', 'vulnerability', 'secret', 'token', 'auth', 'permission', 'xss', 'sql injection', 'ssrf',
686
+ '리뷰', '검토', '보안', '취약', '시크릿', '토큰', '인증', '권한',
687
+ ],
688
+ skills: ['omk-code-review', 'omk-quality-gate'],
689
+ note: 'For security-sensitive work, do not print secrets, review trust boundaries, and run the project secret scan when available.',
690
+ },
691
+ {
692
+ id: 'release-git',
693
+ patterns: [
694
+ 'release', 'publish', 'npm', 'version', 'changelog', 'commit', 'pull request', ' pr ', 'pr로', 'push', 'tag',
695
+ '배포', '릴리즈', '버전', '변경로그', '커밋', '푸시',
696
+ ],
697
+ skills: ['omk-flow-release', 'omk-flow-pr-review', 'omk-quality-gate'],
698
+ note: 'For release or PR work, verify build/test/package evidence before reporting publish or PR readiness.',
699
+ },
700
+ {
701
+ id: 'spec-planning',
702
+ patterns: [
703
+ 'spec', 'prd', 'requirements', 'acceptance', 'tasks', 'speckit', 'plan', 'architecture',
704
+ '명세', '요구사항', '수락기준', '계획', '아키텍처',
705
+ ],
706
+ skills: ['omk-plan-first', 'speckit-specify', 'speckit-plan', 'speckit-tasks'],
707
+ note: 'For specification work, produce acceptance criteria and a test shape before implementation.',
708
+ },
709
+ {
710
+ id: 'refactor-cleanup',
711
+ patterns: [
712
+ 'refactor', 'cleanup', 'simplify', 'deslop', 'debt', 'migration',
713
+ '리팩토', '정리', '단순화', '마이그레이션',
714
+ ],
715
+ skills: ['omk-flow-refactor', 'andrej-karpathy-skills', 'matt-pocock-skills', 'omk-quality-gate'],
716
+ note: 'For refactors, preserve behavior with tests first and avoid unrelated rewrites.',
717
+ },
718
+ {
719
+ id: 'ontology-graph',
720
+ patterns: [
721
+ 'ontology', 'graph', 'graph-view', 'node', 'nodes', 'edge', 'edges', 'relationship',
722
+ 'memory graph', 'risk map', 'decision graph', 'trace map',
723
+ '온톨로지', '그래프', '노드', '엣지', '관계', '메모리 그래프', '리스크맵', '결정 그래프',
724
+ ],
725
+ skills: ['graph-view', 'omk-kimi-runtime', 'omk-quality-gate'],
726
+ note: 'For graph or memory-relationship work, inspect .omk/memory/graph-state.json with omk graph view --open or /graph-view before changing code.',
727
+ },
728
+ {
729
+ id: 'agent-orchestration',
730
+ patterns: [
731
+ 'agent', 'subagent', 'multi-agent', 'orchestration', 'workflow', 'mcp', 'hook', 'hooks', 'skill', 'skills', 'memory',
732
+ '에이전트', '서브에이전트', '워크플로', '훅', '스킬', '메모리',
733
+ ],
734
+ skills: ['omk-task-router', 'omk-project-rules', 'omk-kimi-runtime', 'omk-flow-team-run', 'agentmemory', 'multica', 'andrej-karpathy-skills'],
735
+ note: 'For agent or hook work, keep routing advisory, avoid installing unreviewed external skills, and verify generated config locally.',
736
+ },
737
+ {
738
+ id: 'tests-quality',
739
+ patterns: [
740
+ 'test', 'tests', 'qa', 'quality', 'lint', 'typecheck', 'playwright', 'e2e', 'coverage',
741
+ '테스트', '검증', '품질', '타입체크', '커버리지',
742
+ ],
743
+ skills: ['omk-quality-gate'],
744
+ note: 'For validation requests, run the actual project scripts and report exact pass/fail evidence.',
745
+ },
746
+ {
747
+ id: 'docs-research',
748
+ patterns: [
749
+ 'docs', 'documentation', 'readme', 'research', 'verify', 'official docs', 'look up',
750
+ '문서', '조사', '검증', '검색', '찾아',
751
+ ],
752
+ skills: ['omk-plan-first', 'omk-quality-gate'],
753
+ note: 'For docs or external references, prefer official/current sources and cite or record what was verified.',
754
+ },
755
+ ];
756
+
757
+ const matched = routes.filter((route) => route.patterns.some((pattern) => normalized.includes(pattern)));
758
+ if (matched.length === 0) {
759
+ process.exit(0);
760
+ }
761
+
762
+ const skills = [];
763
+ for (const route of matched) {
764
+ for (const skill of route.skills) {
765
+ if (!skills.includes(skill)) skills.push(skill);
766
+ }
767
+ }
768
+
769
+ if (!skills.includes('omk-quality-gate')) {
770
+ skills.push('omk-quality-gate');
771
+ }
772
+
773
+ const context = [
774
+ 'OMK awesome-agent-skills routing hint (curated from VoltAgent/awesome-agent-skills; advisory only).',
775
+ 'Matched domains: ' + matched.map((route) => route.id).join(', '),
776
+ 'Prefer installed OMK skills/workflows: ' + skills.map((skill) => '/' + skill).join(', '),
777
+ 'Do not auto-install third-party skills from awesome-agent-skills. Review source, license, and security before adoption.',
778
+ ...matched.slice(0, 4).map((route) => route.note),
779
+ ].join('\\n');
780
+
781
+ process.stdout.write(JSON.stringify({
782
+ hookSpecificOutput: {
783
+ hookEventName: 'UserPromptSubmit',
784
+ additionalContext: context,
785
+ },
786
+ }) + '\\n');
787
+ NODE
788
+ `,
789
+ "precompact-checkpoint.sh": `#!/usr/bin/env bash
790
+ # OMK PreCompact Checkpoint — compact without losing recovery state
791
+ set -euo pipefail
792
+
793
+ if ! command -v node &>/dev/null; then
794
+ echo '{"hookSpecificOutput":{"hookEventName":"PreCompact","additionalContext":"Before compaction: record goal, changed files, verification state, blockers, and next action. Never store secrets."}}'
795
+ exit 0
796
+ fi
797
+
798
+ node <<'NODE'
799
+ const context = [
800
+ 'OMK pre-compaction checkpoint.',
801
+ '- Preserve current goal, changed files, verification state, blockers, and intended next action.',
802
+ '- If available, write concise notes to .omx/notepad.md or project-local memory; never store secrets.',
803
+ '- After compaction, refresh from the checkpoint before editing or claiming completion.',
804
+ ].join('\\n');
805
+
806
+ process.stdout.write(JSON.stringify({
807
+ hookSpecificOutput: {
808
+ hookEventName: 'PreCompact',
809
+ additionalContext: context,
810
+ },
811
+ }) + '\\n');
812
+ NODE
813
+ `,
814
+ "subagent-stop-audit.sh": `#!/usr/bin/env bash
815
+ # OMK SubagentStop Audit — leader must verify delegated work
816
+ set -euo pipefail
817
+
818
+ HOOK_INPUT="$(cat || true)"
819
+
820
+ if ! command -v node &>/dev/null; then
821
+ exit 0
822
+ fi
823
+
824
+ OMK_HOOK_INPUT="$HOOK_INPUT" \\
825
+ node <<'NODE'
826
+ const inputText = process.env.OMK_HOOK_INPUT || '';
827
+
828
+ let input = {};
829
+ try {
830
+ input = inputText.trim() ? JSON.parse(inputText) : {};
831
+ } catch (error) {
832
+ console.error('[subagent-stop-audit] invalid stdin JSON: ' + String(error));
833
+ process.exit(0);
834
+ }
835
+
836
+ if (input.stop_hook_active === true) {
837
+ process.exit(0);
838
+ }
839
+
840
+ const context = [
841
+ 'OMK subagent completion audit.',
842
+ '- Do not claim success from a subagent report alone.',
843
+ '- Review the concrete files changed, reconcile conflicts, and keep unrelated user edits intact.',
844
+ '- Run the relevant quality gates locally and report pass/fail/not-run evidence.',
845
+ ].join('\\n');
846
+
847
+ process.stdout.write(JSON.stringify({
848
+ systemMessage: context,
849
+ }) + '\\n');
850
+ NODE
851
+ `,
852
+ "branch-diff-snapshot.sh": `#!/usr/bin/env bash
853
+ # OMK Branch Diff Snapshot — records merge-review metadata without full diff contents
854
+ set +e
855
+
856
+ SNAP_DIR=".omk/runs/_branch-snapshots"
857
+ mkdir -p "$SNAP_DIR" >/dev/null 2>&1
858
+
859
+ if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
860
+ echo '{"hookSpecificOutput":{"hookEventName":"SubagentStop","additionalContext":"Branch diff snapshot skipped: not inside a git worktree."}}'
861
+ exit 0
862
+ fi
863
+
864
+ branch="$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo unknown)"
865
+ commit="$(git rev-parse --short HEAD 2>/dev/null || echo unknown)"
866
+ safe_branch="$(printf '%s' "$branch" | tr -c 'A-Za-z0-9._-' '-')"
867
+ stamp="$(date -u +%Y%m%dT%H%M%SZ)"
868
+ snapshot="$SNAP_DIR/$stamp-$safe_branch.md"
869
+
870
+ {
871
+ echo "# OMK branch diff snapshot"
872
+ echo
873
+ echo "- branch: $branch"
874
+ echo "- commit: $commit"
875
+ echo "- captured_at: $stamp"
876
+ echo
877
+ echo "## Status"
878
+ git status --short 2>/dev/null || true
879
+ echo
880
+ echo "## Diff stat"
881
+ git diff --stat 2>/dev/null || true
882
+ echo
883
+ echo "## Changed files"
884
+ git diff --name-only 2>/dev/null || true
885
+ } > "$snapshot"
886
+
887
+ printf '{"hookSpecificOutput":{"hookEventName":"SubagentStop","additionalContext":"Branch diff snapshot saved: %s"}}\\n' "$snapshot"
888
+ `,
889
+ "pre-shell-guard.sh": `#!/usr/bin/env bash
890
+ # PreShellUse Guard — blocks dangerous commands
891
+ set -e
892
+
893
+ # Close security gate if jq/python3 is missing (deny by default)
894
+ if command -v python3 &>/dev/null; then
895
+ PY=python3
896
+ elif command -v python &>/dev/null; then
897
+ PY=python
898
+ else
899
+ echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"python3 not installed — pre-shell-guard cannot validate commands"}}'
900
+ exit 0
901
+ fi
902
+
903
+ INPUT=$(cat)
904
+ DESTRUCTIVE_DECISION=$(INPUT_JSON="$INPUT" "$PY" <<'PY'
905
+ import json
906
+ import os
907
+ import posixpath
908
+ import shlex
909
+
910
+ def decision(reason):
911
+ print(json.dumps({"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":reason}}, separators=(",", ":")))
912
+
913
+ def as_tokens(value):
914
+ if isinstance(value, list):
915
+ return [str(item) for item in value]
916
+ if isinstance(value, str) and value.strip():
917
+ return shlex.split(value, comments=True, posix=True)
918
+ return []
919
+
920
+ def expand_shell_wrappers(root_tokens):
921
+ result = []
922
+ queue = [root_tokens]
923
+ while queue and len(result) < 8:
924
+ current = queue.pop(0)
925
+ result.append(current)
926
+ for idx, token in enumerate(current):
927
+ if posixpath.basename(token) not in {"bash", "sh", "zsh", "dash"}:
928
+ continue
929
+ j = idx + 1
930
+ while j < len(current):
931
+ opt = current[j]
932
+ if opt == "--":
933
+ j += 1
934
+ break
935
+ if opt in {"-c", "-lc"} or (opt.startswith("-") and not opt.startswith("--") and "c" in opt):
936
+ if j + 1 < len(current):
937
+ queue.append(as_tokens(current[j + 1]))
938
+ break
939
+ if opt.startswith("-"):
940
+ j += 1
941
+ continue
942
+ break
943
+ return result
944
+
945
+ def flag_letters(token):
946
+ if token.startswith("--"):
947
+ return set()
948
+ if token.startswith("-"):
949
+ return set(token[1:])
950
+ return set()
951
+
952
+ def has_rm_rf(tokens, index):
953
+ letters = set()
954
+ for token in tokens[index + 1:]:
955
+ letters.update(flag_letters(token))
956
+ if not token.startswith("-"):
957
+ break
958
+ return "r" in letters and "f" in letters
959
+
960
+ def rm_rf_targets_catastrophic(tokens, index):
961
+ if not has_rm_rf(tokens, index):
962
+ return False
963
+ targets = []
964
+ for token in tokens[index + 1:]:
965
+ if token == "--" or token.startswith("-"):
966
+ continue
967
+ targets.append(token)
968
+ return any(target in {"/", "~", "$HOME"} or target.startswith("/*") or target.startswith("/dev/") for target in targets)
969
+
970
+ def has_git_clean_danger(tokens, index):
971
+ rest = tokens[index + 1:]
972
+ if "clean" not in rest:
973
+ return False
974
+ clean_index = rest.index("clean") + index + 1
975
+ letters = set()
976
+ for token in tokens[clean_index + 1:]:
977
+ letters.update(flag_letters(token))
978
+ return {"f", "d", "x"}.issubset(letters)
979
+
980
+ def has_pipe_to_shell(tokens):
981
+ shell_names = {"bash", "sh", "zsh", "dash"}
982
+ downloaders = {"curl", "wget"}
983
+ for idx, token in enumerate(tokens):
984
+ if token != "|":
985
+ continue
986
+ left = {posixpath.basename(item) for item in tokens[:idx]}
987
+ right = {posixpath.basename(item) for item in tokens[idx + 1:]}
988
+ if left & downloaders and right & shell_names:
989
+ return True
990
+ return False
991
+
992
+ def is_destructive(tokens):
993
+ # Low-friction benchmark/SWE mode: only stop machine-destroying operations.
994
+ # Package managers, git clean, chmod, docker, kubectl, sudo, and pipe-to-shell
995
+ # are allowed so normal coding agents do not stall on broad heuristics.
996
+ normalized = [str(token) for token in tokens]
997
+ for idx, token in enumerate(normalized):
998
+ exe = posixpath.basename(token)
999
+ if exe == "rm" and rm_rf_targets_catastrophic(normalized, idx):
1000
+ return True
1001
+ if exe.startswith("mkfs"):
1002
+ return True
1003
+ if exe == "dd" and any(arg.startswith("of=/dev/") for arg in normalized[idx + 1:]):
1004
+ return True
1005
+ return False
1006
+
1007
+ try:
1008
+ data = json.loads(os.environ.get("INPUT_JSON", "{}"))
1009
+ tool_input = data.get("tool_input", {})
1010
+ tokens = as_tokens(tool_input.get("command", "")) + as_tokens(tool_input.get("args", ""))
1011
+ for expanded in expand_shell_wrappers(tokens):
1012
+ if is_destructive(expanded):
1013
+ decision("Potentially destructive command blocked by pre-shell-guard")
1014
+ break
1015
+ except Exception:
1016
+ # If token parsing fails on complex shell/heredoc syntax, fall through to the
1017
+ # literal block list and release guard instead of blocking benign coding work.
1018
+ pass
1019
+ PY
1020
+ )
1021
+ if [ -n "$DESTRUCTIVE_DECISION" ]; then
1022
+ echo "$DESTRUCTIVE_DECISION"
1023
+ exit 0
1024
+ fi
1025
+ COMMAND=$(echo "$INPUT" | $PY -c 'import sys,json; d=json.load(sys.stdin); print(d.get("tool_input",{}).get("command",""))')
1026
+ ARGS=$(echo "$INPUT" | $PY -c 'import sys,json; d=json.load(sys.stdin); print(d.get("tool_input",{}).get("args",""))')
1027
+
1028
+ FULL="$COMMAND $ARGS"
1029
+
1030
+ # Block list
1031
+ BLOCKED=(
1032
+ "rm -rf /"
1033
+ "rm -fr /"
1034
+ "rm -rf /*"
1035
+ "rm -fr /*"
1036
+ "rm -rf ~"
1037
+ "rm -fr ~"
1038
+ "mkfs"
1039
+ "of=/dev/"
1040
+ "> /dev/"
1041
+ ":(){ :|:& };:"
1042
+ )
1043
+
1044
+ for pattern in "\${BLOCKED[@]}"; do
1045
+ if [[ "$FULL" == *"$pattern"* ]]; then
1046
+ echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"Potentially destructive command blocked by pre-shell-guard"}}'
1047
+ exit 0
1048
+ fi
1049
+ done
1050
+
1051
+ # Release/deploy guard. These commands are not destructive like rm -rf, but
1052
+ # they can publish external state. Parse tokens so common option/shell-wrapper
1053
+ # variants cannot bypass the guard.
1054
+ SCRIPT_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
1055
+ INPUT_JSON="$INPUT" SCRIPT_DIR="$SCRIPT_DIR" "$PY" <<'PY'
1056
+ import json
1057
+ import os
1058
+ import posixpath
1059
+ import shlex
1060
+ import sys
1061
+
1062
+ def respond(permission, reason=None):
1063
+ payload = {"hookSpecificOutput": {"hookEventName": "PreToolUse", "permissionDecision": permission}}
1064
+ if reason:
1065
+ payload["hookSpecificOutput"]["permissionDecisionReason"] = reason
1066
+ print(json.dumps(payload, separators=(",", ":")))
1067
+ sys.exit(0)
1068
+
1069
+ def as_tokens(value):
1070
+ if isinstance(value, list):
1071
+ return [str(item) for item in value]
1072
+ if isinstance(value, str) and value.strip():
1073
+ return shlex.split(value, comments=True, posix=True)
1074
+ return []
1075
+
1076
+ def expand_shell_wrappers(root_tokens):
1077
+ result = []
1078
+ queue = [root_tokens]
1079
+ while queue and len(result) < 8:
1080
+ current = queue.pop(0)
1081
+ result.append(current)
1082
+ for idx, token in enumerate(current):
1083
+ if posixpath.basename(token) not in {"bash", "sh", "zsh", "dash"}:
1084
+ continue
1085
+ j = idx + 1
1086
+ while j < len(current):
1087
+ opt = current[j]
1088
+ if opt == "--":
1089
+ j += 1
1090
+ break
1091
+ if opt in {"-c", "-lc"} or (opt.startswith("-") and not opt.startswith("--") and "c" in opt):
1092
+ if j + 1 < len(current):
1093
+ try:
1094
+ queue.append(as_tokens(current[j + 1]))
1095
+ except ValueError as exc:
1096
+ respond("deny", f"Unable to parse shell-wrapped release/deploy command safely: {exc}")
1097
+ break
1098
+ if opt.startswith("-"):
1099
+ j += 1
1100
+ continue
1101
+ break
1102
+ return result
1103
+
1104
+ def skip_flags(tokens, index):
1105
+ value_flags = {
1106
+ "-C", "-c", "--config-env", "--git-dir", "--work-tree", "--namespace",
1107
+ "--registry", "--userconfig", "--prefix", "--cache", "--filter", "--workspace",
1108
+ "--cwd", "--repo", "-R", "--ref", "--field", "-f", "--json", "--jq",
1109
+ }
1110
+ i = index
1111
+ while i < len(tokens):
1112
+ token = tokens[i]
1113
+ if token == "--":
1114
+ return i + 1
1115
+ if token in value_flags and i + 1 < len(tokens):
1116
+ i += 2
1117
+ continue
1118
+ if any(token.startswith(prefix + "=") for prefix in value_flags if prefix.startswith("--")):
1119
+ i += 1
1120
+ continue
1121
+ if token.startswith("-"):
1122
+ i += 1
1123
+ continue
1124
+ return i
1125
+ return i
1126
+
1127
+ def is_release_command(tokens):
1128
+ i = 0
1129
+ while i < len(tokens):
1130
+ exe = posixpath.basename(tokens[i])
1131
+ if exe == "git":
1132
+ command_index = skip_flags(tokens, i + 1)
1133
+ if command_index < len(tokens) and tokens[command_index] == "push":
1134
+ return True
1135
+ i = max(command_index + 1, i + 1)
1136
+ continue
1137
+ if exe == "npm":
1138
+ command_index = skip_flags(tokens, i + 1)
1139
+ if command_index < len(tokens) and tokens[command_index] in {"publish", "version"}:
1140
+ return True
1141
+ i = max(command_index + 1, i + 1)
1142
+ continue
1143
+ if exe == "pnpm":
1144
+ command_index = skip_flags(tokens, i + 1)
1145
+ if command_index < len(tokens) and tokens[command_index] == "publish":
1146
+ return True
1147
+ i = max(command_index + 1, i + 1)
1148
+ continue
1149
+ if exe == "yarn":
1150
+ command_index = skip_flags(tokens, i + 1)
1151
+ if command_index < len(tokens) and tokens[command_index] == "publish":
1152
+ return True
1153
+ if command_index + 1 < len(tokens) and tokens[command_index] == "npm" and tokens[command_index + 1] == "publish":
1154
+ return True
1155
+ i = max(command_index + 1, i + 1)
1156
+ continue
1157
+ if exe == "gh":
1158
+ command_index = skip_flags(tokens, i + 1)
1159
+ if command_index + 1 < len(tokens):
1160
+ pair = (tokens[command_index], tokens[command_index + 1])
1161
+ if pair in {("release", "create"), ("workflow", "run")}:
1162
+ return True
1163
+ i += 1
1164
+ continue
1165
+ i += 1
1166
+ return False
1167
+
1168
+ tool_input = {}
1169
+ try:
1170
+ data = json.loads(os.environ.get("INPUT_JSON", "{}"))
1171
+ tool_input = data.get("tool_input", {})
1172
+ tokens = as_tokens(tool_input.get("command", "")) + as_tokens(tool_input.get("args", ""))
1173
+ except Exception as exc:
1174
+ raw_command = str(tool_input.get("command", "")) if isinstance(tool_input, dict) else ""
1175
+ raw_args = str(tool_input.get("args", "")) if isinstance(tool_input, dict) else ""
1176
+ raw_full = f"{raw_command} {raw_args}"
1177
+ release_markers = ("git push", "npm publish", "npm version", "pnpm publish", "yarn publish", "yarn npm publish", "gh release create", "gh workflow run")
1178
+ if any(marker in raw_full for marker in release_markers):
1179
+ respond("deny", f"Unable to parse release/deploy command safely: {exc}")
1180
+ respond("allow")
1181
+
1182
+ if os.environ.get("OMK_ALLOW_RELEASE") == "1":
1183
+ respond("allow")
1184
+
1185
+ # File-based override for environments where env vars don't propagate to hooks
1186
+ allow_release_path = os.path.join(os.environ.get("SCRIPT_DIR", ""), ".allow-release")
1187
+ if os.path.exists(allow_release_path):
1188
+ respond("allow")
1189
+
1190
+ for expanded in expand_shell_wrappers(tokens):
1191
+ if is_release_command(expanded):
1192
+ respond("deny", "Release/deploy command blocked by OMK release guard. Re-run with OMK_ALLOW_RELEASE=1 only after an explicit user request and fresh verification evidence.")
1193
+
1194
+ respond("allow")
1195
+ PY
1196
+ `,
1197
+ "worktree-create-guard.sh": `#!/usr/bin/env bash
1198
+ # OMK Worktree Create Guard — keeps worker lanes under .omk/worktrees by default
1199
+ set -e
1200
+
1201
+ if command -v python3 &>/dev/null; then
1202
+ PY=python3
1203
+ elif command -v python &>/dev/null; then
1204
+ PY=python
1205
+ else
1206
+ echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"python3 not installed — worktree-create-guard cannot validate commands"}}'
1207
+ exit 0
1208
+ fi
1209
+
1210
+ INPUT=$(cat)
1211
+ INPUT_JSON="$INPUT" "$PY" <<'PY'
1212
+ import json
1213
+ import os
1214
+ import posixpath
1215
+ import shlex
1216
+ import sys
1217
+
1218
+ def respond(permission, reason=None):
1219
+ payload = {"hookSpecificOutput": {"hookEventName": "PreToolUse", "permissionDecision": permission}}
1220
+ if reason:
1221
+ payload["hookSpecificOutput"]["permissionDecisionReason"] = reason
1222
+ print(json.dumps(payload, separators=(",", ":")))
1223
+ sys.exit(0)
1224
+
1225
+ def as_tokens(value):
1226
+ if isinstance(value, list):
1227
+ return [str(item) for item in value]
1228
+ if isinstance(value, str) and value.strip():
1229
+ return shlex.split(value, comments=True, posix=True)
1230
+ return []
1231
+
1232
+ try:
1233
+ data = json.loads(os.environ.get("INPUT_JSON", "{}"))
1234
+ except Exception:
1235
+ respond("allow")
1236
+
1237
+ tool_input = data.get("tool_input", {})
1238
+ raw_full = f"{tool_input.get('command', '')} {tool_input.get('args', '')}"
1239
+ try:
1240
+ initial_tokens = as_tokens(tool_input.get("command", "")) + as_tokens(tool_input.get("args", ""))
1241
+ except ValueError as exc:
1242
+ if "git" in raw_full and "worktree" in raw_full:
1243
+ respond("deny", f"Unable to parse git worktree command safely: {exc}")
1244
+ respond("allow")
1245
+
1246
+ def canonical_path(path):
1247
+ return os.path.realpath(os.path.abspath(path))
1248
+
1249
+ def resolve_path(path_arg, base_dir):
1250
+ return canonical_path(path_arg if os.path.isabs(path_arg) else os.path.join(base_dir, path_arg))
1251
+
1252
+ project_root = canonical_path(os.environ.get("OMK_PROJECT_ROOT") or os.getcwd())
1253
+ allowed_root = canonical_path(os.path.join(project_root, ".omk", "worktrees"))
1254
+ options_with_values = {
1255
+ "-C", "-c", "--git-dir", "--work-tree", "--namespace", "--config-env",
1256
+ "-b", "-B", "--reason", "--lock", "--orphan",
1257
+ }
1258
+
1259
+ def path_within_allowed(path_arg, base_dir):
1260
+ base = canonical_path(base_dir)
1261
+ actual = resolve_path(path_arg, base)
1262
+ try:
1263
+ return os.path.commonpath([allowed_root, actual]) == allowed_root
1264
+ except ValueError:
1265
+ return False
1266
+
1267
+ def skip_git_globals(index):
1268
+ base_dir = canonical_path(os.getcwd())
1269
+ i = index
1270
+ while i < len(tokens):
1271
+ token = tokens[i]
1272
+ if token == "-C" and i + 1 < len(tokens):
1273
+ next_dir = tokens[i + 1]
1274
+ base_dir = resolve_path(next_dir, base_dir)
1275
+ i += 2
1276
+ elif token.startswith("-C") and len(token) > 2:
1277
+ next_dir = token[2:]
1278
+ base_dir = resolve_path(next_dir, base_dir)
1279
+ i += 1
1280
+ elif token in {"-c", "--git-dir", "--work-tree", "--namespace", "--config-env"} and i + 1 < len(tokens):
1281
+ i += 2
1282
+ elif token.startswith(("--git-dir=", "--work-tree=", "--namespace=", "--config-env=")):
1283
+ i += 1
1284
+ elif token == "--":
1285
+ i += 1
1286
+ break
1287
+ elif token.startswith("-"):
1288
+ i += 1
1289
+ else:
1290
+ break
1291
+ return i, base_dir
1292
+
1293
+ def find_worktree_path(index):
1294
+ i = index
1295
+ while i < len(tokens):
1296
+ token = tokens[i]
1297
+ if token == "--":
1298
+ i += 1
1299
+ break
1300
+ if token in options_with_values and i + 1 < len(tokens):
1301
+ i += 2
1302
+ continue
1303
+ if any(token.startswith(prefix) for prefix in ("--reason=", "--orphan=")):
1304
+ i += 1
1305
+ continue
1306
+ if token.startswith("-"):
1307
+ i += 1
1308
+ continue
1309
+ return token
1310
+ return tokens[i] if i < len(tokens) else None
1311
+
1312
+ def expand_shell_wrappers(root_tokens):
1313
+ result = []
1314
+ queue = [root_tokens]
1315
+ while queue and len(result) < 8:
1316
+ current = queue.pop(0)
1317
+ result.append(current)
1318
+ for idx, token in enumerate(current):
1319
+ if posixpath.basename(token) not in {"bash", "sh", "zsh", "dash"}:
1320
+ continue
1321
+ j = idx + 1
1322
+ while j < len(current):
1323
+ opt = current[j]
1324
+ if opt == "--":
1325
+ j += 1
1326
+ break
1327
+ if opt in {"-c", "-lc"} or (opt.startswith("-") and not opt.startswith("--") and "c" in opt):
1328
+ if j + 1 < len(current):
1329
+ try:
1330
+ queue.append(as_tokens(current[j + 1]))
1331
+ except ValueError as exc:
1332
+ if "git" in current[j + 1] and "worktree" in current[j + 1]:
1333
+ respond("deny", f"Unable to parse shell-wrapped git worktree command safely: {exc}")
1334
+ break
1335
+ if opt.startswith("-"):
1336
+ j += 1
1337
+ continue
1338
+ break
1339
+ return result
1340
+
1341
+ for tokens in expand_shell_wrappers(initial_tokens):
1342
+ i = 0
1343
+ while i < len(tokens):
1344
+ if posixpath.basename(tokens[i]) != "git":
1345
+ i += 1
1346
+ continue
1347
+ command_index, base_dir = skip_git_globals(i + 1)
1348
+ if command_index + 1 >= len(tokens) or tokens[command_index] != "worktree":
1349
+ i += 1
1350
+ continue
1351
+ action = tokens[command_index + 1]
1352
+ if action in {"remove", "prune"} and os.environ.get("OMK_ALLOW_WORKTREE_DELETE") != "1":
1353
+ respond("deny", "Worktree delete/prune blocked unless OMK_ALLOW_WORKTREE_DELETE=1 is set after review.")
1354
+ if action == "add" and os.environ.get("OMK_ALLOW_EXTERNAL_WORKTREE") != "1":
1355
+ path_arg = find_worktree_path(command_index + 2)
1356
+ if not path_arg or not path_within_allowed(path_arg, base_dir):
1357
+ respond("deny", "Worktree lanes must be created under .omk/worktrees/ unless OMK_ALLOW_EXTERNAL_WORKTREE=1 is set.")
1358
+ i = command_index + 2
1359
+
1360
+ respond("allow")
1361
+ PY
1362
+ `,
1363
+ "protect-secrets.sh": `#!/usr/bin/env bash
1364
+ # Secret/environment variable protection
1365
+ set -e
1366
+
1367
+ # Close security gate if jq/python3 is missing (deny by default)
1368
+ if command -v python3 &>/dev/null; then
1369
+ PY=python3
1370
+ elif command -v python &>/dev/null; then
1371
+ PY=python
1372
+ else
1373
+ echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"python3 not installed — protect-secrets cannot validate files"}}'
1374
+ exit 0
1375
+ fi
1376
+
1377
+ INPUT=$(cat)
1378
+ OMK_HOOK_INPUT="$INPUT" "$PY" - <<'PY'
1379
+ import json
1380
+ import os
1381
+ import re
1382
+
1383
+ def respond(decision, reason=None):
1384
+ payload = {"hookSpecificOutput": {"hookEventName": "PreToolUse", "permissionDecision": decision}}
1385
+ if reason:
1386
+ payload["hookSpecificOutput"]["permissionDecisionReason"] = reason
1387
+ print(json.dumps(payload, separators=(",", ":")))
1388
+
1389
+ try:
1390
+ data = json.loads(os.environ.get("OMK_HOOK_INPUT", "{}") or "{}")
1391
+ except Exception:
1392
+ respond("deny", "Invalid hook input")
1393
+ raise SystemExit(0)
1394
+
1395
+ tool_input = data.get("tool_input", {})
1396
+ if not isinstance(tool_input, dict):
1397
+ respond("allow")
1398
+ raise SystemExit(0)
1399
+
1400
+ def walk(value, key=""):
1401
+ if isinstance(value, str):
1402
+ yield key, value
1403
+ elif isinstance(value, dict):
1404
+ for child_key, child_value in value.items():
1405
+ yield from walk(child_value, str(child_key))
1406
+ elif isinstance(value, list):
1407
+ for child_value in value:
1408
+ yield from walk(child_value, key)
1409
+
1410
+ SENSITIVE_PATHS = (".env", ".pem", ".key", "id_rsa", "id_ed25519", "credentials", "service-account", ".p12", ".pfx", ".keystore", ".pi", "auth.json", "oauth.json", "tokens.json", "session.json")
1411
+ HIGH_CONFIDENCE_PATTERNS = (
1412
+ re.compile(r"(?:ghp_[A-Za-z0-9_]{20,}|github_pat_[A-Za-z0-9_]{20,}|glpat-[A-Za-z0-9_-]{20,}|npm_[A-Za-z0-9_-]{30,}|pypi[-_][A-Za-z0-9_-]{30,}|sk-[A-Za-z0-9_-]{20,})", re.IGNORECASE),
1413
+ re.compile(r"(?:AKIA|ASIA)[0-9A-Z]{16}"),
1414
+ re.compile(r"BEGIN [A-Z ]*PRIVATE KEY"),
1415
+ re.compile(r"(?:ssh-rsa|ssh-ed25519)\\s+[A-Za-z0-9+/=]{40,}"),
1416
+ re.compile(r"\\bBearer\\s+[A-Za-z0-9._~+/-]{16,}", re.IGNORECASE),
1417
+ )
1418
+ ASSIGNMENT_PATTERN = re.compile(r"""\\b(?:password|secret|api[_-]?key|token|access[_-]?token|refresh[_-]?token|session[_-]?token|oauth|authorization|private[_-]?key|aws[_-]?access[_-]?key[_-]?id|aws[_-]?secret[_-]?access[_-]?key)\\b['"]?\\s*[:=]\\s*['"]?[A-Za-z0-9_./+=@:-]{12,}""", re.IGNORECASE)
1419
+ SCAN_VALUE_KEYS = ("content", "text", "string", "newtext", "oldtext", "input", "value", "body", "data")
1420
+ SKIP_ASSIGNMENT_KEYS = ("path", "file", "command", "args", "name")
1421
+
1422
+ def should_scan_assignment(key):
1423
+ key_lower = key.lower()
1424
+ if any(marker in key_lower for marker in SKIP_ASSIGNMENT_KEYS):
1425
+ return False
1426
+ return key_lower == "" or any(marker in key_lower for marker in SCAN_VALUE_KEYS)
1427
+
1428
+ for key, value in walk(tool_input):
1429
+ key_lower = key.lower()
1430
+ if ("path" in key_lower or "file" in key_lower) and any(marker in value for marker in SENSITIVE_PATHS):
1431
+ respond("deny", "Direct modification of sensitive file blocked")
1432
+ raise SystemExit(0)
1433
+
1434
+ for key, value in walk(tool_input):
1435
+ if should_scan_assignment(key) and any(pattern.search(value) for pattern in HIGH_CONFIDENCE_PATTERNS):
1436
+ respond("deny", "High-confidence credential value detected")
1437
+ raise SystemExit(0)
1438
+
1439
+ for key, value in walk(tool_input):
1440
+ if should_scan_assignment(key) and ASSIGNMENT_PATTERN.search(value):
1441
+ respond("deny", "High-confidence credential assignment detected")
1442
+ raise SystemExit(0)
1443
+ respond("allow")
1444
+ PY
1445
+ `,
1446
+ "post-format.sh": `#!/usr/bin/env bash
1447
+ # Auto-format after save (single file target)
1448
+ set -e
1449
+
1450
+ if command -v python3 &>/dev/null; then
1451
+ PY=python3
1452
+ elif command -v python &>/dev/null; then
1453
+ PY=python
1454
+ else
1455
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1456
+ exit 0
1457
+ fi
1458
+
1459
+ INPUT=$(cat)
1460
+ FILEPATH=$(echo "$INPUT" | $PY -c 'import sys,json; d=json.load(sys.stdin); print(d.get("tool_input",{}).get("file_path",""))')
1461
+
1462
+ if [ -z "$FILEPATH" ]; then
1463
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1464
+ exit 0
1465
+ fi
1466
+
1467
+ # Detect project root and run formatter (target file only)
1468
+ if [ -f "package.json" ] && [ -f "$FILEPATH" ]; then
1469
+ npx prettier --write "$FILEPATH" >/dev/null 2>&1 || true
1470
+ fi
1471
+
1472
+ if [ -f "Cargo.toml" ] && [ -f "$FILEPATH" ]; then
1473
+ rustfmt "$FILEPATH" >/dev/null 2>&1 || true
1474
+ fi
1475
+
1476
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1477
+ `,
1478
+ "typecheck-after-edit.sh": `#!/usr/bin/env bash
1479
+ # TypeScript product preset: run project typecheck after TS edits when available.
1480
+ set +e
1481
+
1482
+ if command -v python3 &>/dev/null; then
1483
+ PY=python3
1484
+ elif command -v python &>/dev/null; then
1485
+ PY=python
1486
+ else
1487
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1488
+ exit 0
1489
+ fi
1490
+
1491
+ INPUT=$(cat)
1492
+ FILEPATH=$(echo "$INPUT" | $PY -c 'import sys,json; d=json.load(sys.stdin); print(d.get("tool_input",{}).get("file_path",""))')
1493
+
1494
+ case "$FILEPATH" in
1495
+ *.ts|*.tsx|*.mts|*.cts) ;;
1496
+ *) echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'; exit 0 ;;
1497
+ esac
1498
+
1499
+ if [ ! -f "package.json" ] || ! command -v npm &>/dev/null; then
1500
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1501
+ exit 0
1502
+ fi
1503
+
1504
+ node -e "const p=require('./package.json'); process.exit(p.scripts && p.scripts.check ? 0 : 1)" >/dev/null 2>&1
1505
+ if [ $? -ne 0 ]; then
1506
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1507
+ exit 0
1508
+ fi
1509
+
1510
+ TMP=$(mktemp)
1511
+ npm run check >"$TMP" 2>&1
1512
+ STATUS=$?
1513
+ if [ $STATUS -eq 0 ]; then
1514
+ rm -f "$TMP"
1515
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1516
+ exit 0
1517
+ fi
1518
+
1519
+ tail -n 40 "$TMP" | $PY -c 'import json,sys; print(json.dumps({"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow","additionalContext":"Typecheck failed after edit. Inspect npm run check output:\\n"+sys.stdin.read()}}))'
1520
+ rm -f "$TMP"
1521
+ `,
1522
+ "eslint-after-edit.sh": `#!/usr/bin/env bash
1523
+ # TypeScript product preset: run project lint after JS/TS edits when available.
1524
+ set +e
1525
+
1526
+ if command -v python3 &>/dev/null; then
1527
+ PY=python3
1528
+ elif command -v python &>/dev/null; then
1529
+ PY=python
1530
+ else
1531
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1532
+ exit 0
1533
+ fi
1534
+
1535
+ INPUT=$(cat)
1536
+ FILEPATH=$(echo "$INPUT" | $PY -c 'import sys,json; d=json.load(sys.stdin); print(d.get("tool_input",{}).get("file_path",""))')
1537
+
1538
+ case "$FILEPATH" in
1539
+ *.js|*.jsx|*.mjs|*.cjs|*.ts|*.tsx|*.mts|*.cts) ;;
1540
+ *) echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'; exit 0 ;;
1541
+ esac
1542
+
1543
+ if [ ! -f "package.json" ] || ! command -v npm &>/dev/null; then
1544
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1545
+ exit 0
1546
+ fi
1547
+
1548
+ node -e "const p=require('./package.json'); process.exit(p.scripts && p.scripts.lint ? 0 : 1)" >/dev/null 2>&1
1549
+ if [ $? -ne 0 ]; then
1550
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1551
+ exit 0
1552
+ fi
1553
+
1554
+ TMP=$(mktemp)
1555
+ npm run lint >"$TMP" 2>&1
1556
+ STATUS=$?
1557
+ if [ $STATUS -eq 0 ]; then
1558
+ rm -f "$TMP"
1559
+ echo '{"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow"}}'
1560
+ exit 0
1561
+ fi
1562
+
1563
+ tail -n 40 "$TMP" | $PY -c 'import json,sys; print(json.dumps({"hookSpecificOutput":{"hookEventName":"PostToolUse","permissionDecision":"allow","additionalContext":"ESLint failed after edit. Inspect npm run lint output:\\n"+sys.stdin.read()}}))'
1564
+ rm -f "$TMP"
1565
+ `,
1566
+ "stop-verify.sh": `#!/usr/bin/env bash
1567
+ # Final verification on Stop
1568
+ set -euo pipefail
1569
+
1570
+ HOOK_INPUT="$(cat || true)"
1571
+
1572
+ if ! command -v node &>/dev/null; then
1573
+ exit 0
1574
+ fi
1575
+
1576
+ OMK_HOOK_INPUT="$HOOK_INPUT" \\
1577
+ node <<'NODE'
1578
+ const inputText = process.env.OMK_HOOK_INPUT || '';
1579
+
1580
+ let input = {};
1581
+ try {
1582
+ input = inputText.trim() ? JSON.parse(inputText) : {};
1583
+ } catch (error) {
1584
+ console.error('[stop-verify] invalid stdin JSON: ' + String(error));
1585
+ process.exit(0);
1586
+ }
1587
+
1588
+ if (input.stop_hook_active === true) {
1589
+ process.exit(0);
1590
+ }
1591
+
1592
+ const context = [
1593
+ 'OMK final response checklist.',
1594
+ '- Changed files: list authored files and note any ignored local runtime files refreshed.',
1595
+ '- Commands run: include exact verification commands and pass/fail/not-run status.',
1596
+ '- Deployment status: do not claim push, release, npm publish, or production deploy unless that command actually ran and evidence was read.',
1597
+ '- Remaining risk: state known gaps instead of saying complete without evidence.',
1598
+ ].join('\\n');
1599
+
1600
+ process.stdout.write(JSON.stringify({
1601
+ systemMessage: context,
1602
+ }) + '\\n');
1603
+ NODE
1604
+ `,
1605
+ "release-check-before-stop.sh": `#!/usr/bin/env bash
1606
+ # OMK Release Guard — final checklist reminder for release/security work
1607
+ set +e
1608
+
1609
+ HOOK_INPUT="$(cat || true)"
1610
+
1611
+ if ! command -v node &>/dev/null; then
1612
+ exit 0
1613
+ fi
1614
+
1615
+ OMK_HOOK_INPUT="$HOOK_INPUT" \\
1616
+ node <<'NODE'
1617
+ const { execSync } = require('node:child_process');
1618
+ const inputText = process.env.OMK_HOOK_INPUT || '';
1619
+
1620
+ let input = {};
1621
+ try {
1622
+ input = inputText.trim() ? JSON.parse(inputText) : {};
1623
+ } catch (error) {
1624
+ console.error('[release-check-before-stop] invalid stdin JSON: ' + String(error));
1625
+ process.exit(0);
1626
+ }
1627
+
1628
+ if (input.stop_hook_active === true) {
1629
+ process.exit(0);
1630
+ }
1631
+
1632
+ function shell(command) {
1633
+ try {
1634
+ return execSync(command, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 5000 }).trim();
1635
+ } catch {
1636
+ return '';
1637
+ }
1638
+ }
1639
+
1640
+ const changed = [
1641
+ shell('git diff --name-only HEAD 2>/dev/null'),
1642
+ shell('git diff --cached --name-only 2>/dev/null'),
1643
+ shell('git ls-files --others --exclude-standard 2>/dev/null'),
1644
+ ].filter(Boolean).join('\\n');
1645
+
1646
+ const releaseTouched = /(^|\\n)(package\\.json|package-lock\\.json|pnpm-lock\\.yaml|yarn\\.lock|CHANGELOG\\.md|SECURITY\\.md|\\.npmrc|\\.github\\/workflows\\/release\\.ya?ml)(\\n|$)/.test(changed);
1647
+ const context = releaseTouched
1648
+ ? 'OMK release guard: release/security files changed. Before final or publish, collect secret scan, security review, quality gate, npm audit summary, changelog/PR evidence, and do not publish/deploy without explicit user request.'
1649
+ : 'OMK release guard: no release file changes detected. Still do not claim push, release, npm publish, or production deploy without exact command evidence.';
1650
+
1651
+ process.stdout.write(JSON.stringify({
1652
+ systemMessage: context,
1653
+ }) + '\\n');
1654
+ NODE
1655
+ `,
1656
+ "npm-audit-summary.sh": `#!/usr/bin/env bash
1657
+ # OMK Release Guard — optional npm audit summary for release gates
1658
+ set +e
1659
+
1660
+ HOOK_INPUT="$(cat || true)"
1661
+
1662
+ if command -v node &>/dev/null; then
1663
+ OMK_HOOK_INPUT="$HOOK_INPUT" node <<'NODE'
1664
+ const inputText = process.env.OMK_HOOK_INPUT || '';
1665
+ try {
1666
+ const input = inputText.trim() ? JSON.parse(inputText) : {};
1667
+ if (input.stop_hook_active === true) process.exit(10);
1668
+ } catch (error) {
1669
+ console.error('[npm-audit-summary] invalid stdin JSON: ' + String(error));
1670
+ process.exit(11);
1671
+ }
1672
+ NODE
1673
+ case "$?" in
1674
+ 10|11) exit 0 ;;
1675
+ esac
1676
+ fi
1677
+
1678
+ if [ ! -f "package.json" ]; then
1679
+ printf '{"systemMessage":"OMK npm audit summary: skipped because package.json is absent."}\\n'
1680
+ exit 0
1681
+ fi
1682
+
1683
+ if [ "$OMK_RUN_NPM_AUDIT_SUMMARY" != "1" ]; then
1684
+ printf '{"systemMessage":"OMK npm audit summary: not run automatically. For release/security claims, run npm audit or set OMK_RUN_NPM_AUDIT_SUMMARY=1 and capture the result."}\\n'
1685
+ exit 0
1686
+ fi
1687
+
1688
+ if ! command -v npm &>/dev/null || ! command -v node &>/dev/null; then
1689
+ printf '{"systemMessage":"OMK npm audit summary: skipped because npm or node is unavailable."}\\n'
1690
+ exit 0
1691
+ fi
1692
+
1693
+ TMP="$(mktemp)"
1694
+ npm audit --audit-level=high --omit=dev --json > "$TMP" 2>&1
1695
+ STATUS=$?
1696
+
1697
+ node - "$TMP" "$STATUS" <<'NODE'
1698
+ const fs = require('node:fs');
1699
+ const filePath = process.argv[2];
1700
+ const status = Number(process.argv[3] || 0);
1701
+ let raw = '';
1702
+ try {
1703
+ raw = fs.readFileSync(filePath, 'utf8');
1704
+ } catch {}
1705
+
1706
+ let context;
1707
+ try {
1708
+ const parsed = JSON.parse(raw);
1709
+ const total = parsed.metadata?.vulnerabilities?.total ?? 'unknown';
1710
+ const high = parsed.metadata?.vulnerabilities?.high ?? 'unknown';
1711
+ const critical = parsed.metadata?.vulnerabilities?.critical ?? 'unknown';
1712
+ context = status === 0
1713
+ ? 'OMK npm audit summary: passed for high+ prod dependencies. total=' + total + ', high=' + high + ', critical=' + critical + '.'
1714
+ : 'OMK npm audit summary: attention required. total=' + total + ', high=' + high + ', critical=' + critical + '. Inspect npm audit output before release.';
1715
+ } catch {
1716
+ context = status === 0
1717
+ ? 'OMK npm audit summary: command completed but JSON could not be parsed.'
1718
+ : 'OMK npm audit summary: npm audit failed or returned non-JSON output; inspect command output before release.';
1719
+ }
1720
+
1721
+ process.stdout.write(JSON.stringify({
1722
+ systemMessage: context,
1723
+ }) + '\\n');
1724
+ NODE
1725
+ rm -f "$TMP"
1726
+ `,
1727
+ "post-init-mcp.sh": `#!/usr/bin/env bash
1728
+ # Post-init MCP validation — non-blocking health check after omk init
1729
+ set -uo pipefail
1730
+
1731
+ LOG_DIR=".omk/logs"
1732
+ mkdir -p "$LOG_DIR"
1733
+ LOG_FILE="$LOG_DIR/mcp-init-check.json"
1734
+
1735
+ # Run doctor silently and capture JSON output if available
1736
+ if command -v omk &>/dev/null; then
1737
+ omk mcp doctor --json 2>/dev/null > "$LOG_FILE" || true
1738
+ else
1739
+ echo '{"note":"omk not in PATH during hook execution"}' > "$LOG_FILE"
1740
+ fi
1741
+ `,
1742
+ };
1743
+ export const KIMI_CONFIG_TOML = `# open-multi-agent-kit generated Kimi adapter config
1744
+ # Lifecycle hook settings
1745
+
1746
+ [[hooks]]
1747
+ event = "SessionStart"
1748
+ command = ".omk/hooks/session-context.sh"
1749
+ timeout = 5
1750
+
1751
+ [[hooks]]
1752
+ event = "PreCompact"
1753
+ command = ".omk/hooks/precompact-checkpoint.sh"
1754
+ timeout = 5
1755
+
1756
+ [[hooks]]
1757
+ event = "SubagentStop"
1758
+ command = ".omk/hooks/subagent-stop-audit.sh"
1759
+ timeout = 5
1760
+
1761
+ [[hooks]]
1762
+ event = "PreToolUse"
1763
+ matcher = "Shell"
1764
+ command = ".omk/hooks/pre-shell-guard.sh"
1765
+ timeout = 5
1766
+
1767
+ [[hooks]]
1768
+ event = "PreToolUse"
1769
+ matcher = "WriteFile|StrReplaceFile"
1770
+ command = ".omk/hooks/protect-secrets.sh"
1771
+ timeout = 5
1772
+
1773
+ [[hooks]]
1774
+ event = "Stop"
1775
+ command = ".omk/hooks/stop-verify.sh"
1776
+ timeout = 30
1777
+ `;
1778
+ export const MEMORY_FILES = {
1779
+ "project.md": "# Project Memory\n\nProject-local graph memory is the source of truth; this file is a human-readable mirror.\n\n## Runtime Surfaces\n\n- Follow AGENTS.md and .kimi/AGENTS.md for active agent policy.\n- Use chat-agent-harness.json when present for MCP/skills/hooks inventory, worker limits, authority boundaries, and gates.\n- Keep .omk/memory mirrors free of secrets and private user data.\n",
1780
+ "decisions.md": "# Decisions\n\nRecord durable architecture, release, runtime, and safety decisions.\n\nFor each decision, include:\n\n- date and short title\n- affected files or surfaces\n- evidence commands or artifacts\n- rollback or revisit trigger\n\nNever store secrets, raw MCP env, tokens, or private user data.\n",
1781
+ "commands.md": "# Frequently Used Commands\n\nCommand mirror maintained alongside the local graph memory.\n\n```bash\nnpm run yaml:check\nnpm run lint\nnpm run secret:scan\nnpm run check\nnpm run build:clean\nnpm test\nnpm run audit:package\nnpm run pack:dry\nomk mcp doctor --json\nomk verify --json\n```\n\nUse targeted `npm test -- --match <pattern>` for focused regression loops before the full gate.\n",
1782
+ "risks.md": "# Known Risks\n\n- Do not store secrets, API keys, tokens, credentials, MCP env/header values, or private user data in memory.\n- `--local-user` and all-scope MCP/skills are runtime-only; do not copy global resources unless the user explicitly opts into `--import-user-skills`.\n- `chat-agent-harness.json` can contain private run inventory; summarize counts and gates, not full global inventories.\n- Working trees can contain unrelated edits; inspect `git status --short` before changes and avoid reverting user work.\n- Completion claims require evidence: tests, `omk verify --json`, replay/cockpit artifacts, or an explicit not-run reason.\n",
1783
+ };