@monoes/monomindcli 2.8.3 → 2.9.1

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 (377) hide show
  1. package/.claude/helpers/auto-memory-hook.mjs +0 -0
  2. package/.claude/helpers/handlers/route-handler.cjs +12 -0
  3. package/.claude/helpers/handlers/session-restore-handler.cjs +28 -7
  4. package/.claude/helpers/hook-handler.cjs +0 -0
  5. package/.claude/helpers/utils/micro-agents.cjs +22 -0
  6. package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +11 -6
  7. package/.claude/skills/monodesign/scripts/live-inject.mjs +20 -7
  8. package/.claude/skills/monodesign/scripts/live-server.mjs +38 -2
  9. package/LICENSE +191 -0
  10. package/README.md +8 -6
  11. package/dist/src/browser/dashboard/server.d.ts +5 -0
  12. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  13. package/dist/src/browser/dashboard/server.js +59 -4
  14. package/dist/src/browser/dashboard/server.js.map +1 -1
  15. package/dist/src/browser/dashboard/ui.html +18 -8
  16. package/dist/src/browser/workflow/store.d.ts.map +1 -1
  17. package/dist/src/browser/workflow/store.js +3 -2
  18. package/dist/src/browser/workflow/store.js.map +1 -1
  19. package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
  20. package/dist/src/capabilities/cap-documents.js +14 -9
  21. package/dist/src/capabilities/cap-documents.js.map +1 -1
  22. package/dist/src/commands/design-palette.d.ts +5 -0
  23. package/dist/src/commands/design-palette.d.ts.map +1 -1
  24. package/dist/src/commands/design-palette.js +8 -5
  25. package/dist/src/commands/design-palette.js.map +1 -1
  26. package/dist/src/commands/doctor.d.ts.map +1 -1
  27. package/dist/src/commands/doctor.js +22 -18
  28. package/dist/src/commands/doctor.js.map +1 -1
  29. package/dist/src/commands/download-embeddings.d.ts +8 -0
  30. package/dist/src/commands/download-embeddings.d.ts.map +1 -0
  31. package/dist/src/commands/download-embeddings.js +34 -0
  32. package/dist/src/commands/download-embeddings.js.map +1 -0
  33. package/dist/src/commands/hooks.d.ts.map +1 -1
  34. package/dist/src/commands/hooks.js +14 -0
  35. package/dist/src/commands/hooks.js.map +1 -1
  36. package/dist/src/commands/index.d.ts.map +1 -1
  37. package/dist/src/commands/index.js +4 -0
  38. package/dist/src/commands/index.js.map +1 -1
  39. package/dist/src/commands/init-wizard.js +1 -1
  40. package/dist/src/commands/init-wizard.js.map +1 -1
  41. package/dist/src/commands/init.d.ts.map +1 -1
  42. package/dist/src/commands/init.js +48 -1
  43. package/dist/src/commands/init.js.map +1 -1
  44. package/dist/src/commands/monograph.d.ts.map +1 -1
  45. package/dist/src/commands/monograph.js +35 -1
  46. package/dist/src/commands/monograph.js.map +1 -1
  47. package/dist/src/commands/org-observe.d.ts +10 -0
  48. package/dist/src/commands/org-observe.d.ts.map +1 -1
  49. package/dist/src/commands/org-observe.js +195 -31
  50. package/dist/src/commands/org-observe.js.map +1 -1
  51. package/dist/src/commands/org.d.ts +1 -0
  52. package/dist/src/commands/org.d.ts.map +1 -1
  53. package/dist/src/commands/org.js +139 -3
  54. package/dist/src/commands/org.js.map +1 -1
  55. package/dist/src/commands/route.d.ts +1 -9
  56. package/dist/src/commands/route.d.ts.map +1 -1
  57. package/dist/src/commands/route.js +42 -65
  58. package/dist/src/commands/route.js.map +1 -1
  59. package/dist/src/commands/security-cve.d.ts.map +1 -1
  60. package/dist/src/commands/security-cve.js +2 -1
  61. package/dist/src/commands/security-cve.js.map +1 -1
  62. package/dist/src/index.d.ts +0 -10
  63. package/dist/src/index.d.ts.map +1 -1
  64. package/dist/src/index.js +4 -15
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/init/copy-assets.d.ts +17 -0
  67. package/dist/src/init/copy-assets.d.ts.map +1 -0
  68. package/dist/src/init/copy-assets.js +271 -0
  69. package/dist/src/init/copy-assets.js.map +1 -0
  70. package/dist/src/init/executor.d.ts +2 -30
  71. package/dist/src/init/executor.d.ts.map +1 -1
  72. package/dist/src/init/executor.js +56 -2493
  73. package/dist/src/init/executor.js.map +1 -1
  74. package/dist/src/init/geminimd-generator.js +2 -2
  75. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  76. package/dist/src/init/helpers-generator.js +9 -0
  77. package/dist/src/init/helpers-generator.js.map +1 -1
  78. package/dist/src/init/kimi-generator.js +3 -3
  79. package/dist/src/init/kimi-generator.js.map +1 -1
  80. package/dist/src/init/settings-generator.d.ts.map +1 -1
  81. package/dist/src/init/settings-generator.js +0 -4
  82. package/dist/src/init/settings-generator.js.map +1 -1
  83. package/dist/src/init/shared.d.ts +112 -0
  84. package/dist/src/init/shared.d.ts.map +1 -0
  85. package/dist/src/init/shared.js +475 -0
  86. package/dist/src/init/shared.js.map +1 -0
  87. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  88. package/dist/src/init/statusline-generator.js +37 -0
  89. package/dist/src/init/statusline-generator.js.map +1 -1
  90. package/dist/src/init/types.d.ts +1 -1
  91. package/dist/src/init/types.d.ts.map +1 -1
  92. package/dist/src/init/upgrade.d.ts +34 -0
  93. package/dist/src/init/upgrade.d.ts.map +1 -0
  94. package/dist/src/init/upgrade.js +477 -0
  95. package/dist/src/init/upgrade.js.map +1 -0
  96. package/dist/src/init/write-antigravity.d.ts +13 -0
  97. package/dist/src/init/write-antigravity.d.ts.map +1 -0
  98. package/dist/src/init/write-antigravity.js +117 -0
  99. package/dist/src/init/write-antigravity.js.map +1 -0
  100. package/dist/src/init/write-capabilities.d.ts +9 -0
  101. package/dist/src/init/write-capabilities.d.ts.map +1 -0
  102. package/dist/src/init/write-capabilities.js +392 -0
  103. package/dist/src/init/write-capabilities.js.map +1 -0
  104. package/dist/src/init/write-claude.d.ts +25 -0
  105. package/dist/src/init/write-claude.d.ts.map +1 -0
  106. package/dist/src/init/write-claude.js +279 -0
  107. package/dist/src/init/write-claude.js.map +1 -0
  108. package/dist/src/init/write-kimicode.d.ts +19 -0
  109. package/dist/src/init/write-kimicode.d.ts.map +1 -0
  110. package/dist/src/init/write-kimicode.js +223 -0
  111. package/dist/src/init/write-kimicode.js.map +1 -0
  112. package/dist/src/init/write-opencode.d.ts +14 -0
  113. package/dist/src/init/write-opencode.d.ts.map +1 -0
  114. package/dist/src/init/write-opencode.js +130 -0
  115. package/dist/src/init/write-opencode.js.map +1 -0
  116. package/dist/src/init/write-runtime-config.d.ts +14 -0
  117. package/dist/src/init/write-runtime-config.d.ts.map +1 -0
  118. package/dist/src/init/write-runtime-config.js +214 -0
  119. package/dist/src/init/write-runtime-config.js.map +1 -0
  120. package/dist/src/init/write-sample-org.d.ts +9 -0
  121. package/dist/src/init/write-sample-org.d.ts.map +1 -0
  122. package/dist/src/init/write-sample-org.js +39 -0
  123. package/dist/src/init/write-sample-org.js.map +1 -0
  124. package/dist/src/knowledge/eval/golden-set.js +1 -1
  125. package/dist/src/knowledge/eval/golden-set.js.map +1 -1
  126. package/dist/src/mcp-client.d.ts.map +1 -1
  127. package/dist/src/mcp-client.js +7 -3
  128. package/dist/src/mcp-client.js.map +1 -1
  129. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
  130. package/dist/src/mcp-tools/analyze-tools.js +2 -25
  131. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  132. package/dist/src/mcp-tools/auto-install.d.ts.map +1 -1
  133. package/dist/src/mcp-tools/auto-install.js +2 -1
  134. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  135. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  136. package/dist/src/mcp-tools/hooks-routing.js +26 -0
  137. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  138. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  139. package/dist/src/mcp-tools/memory-tools.js +2 -37
  140. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  141. package/dist/src/mcp-tools/monodesign-tools.d.ts +19 -0
  142. package/dist/src/mcp-tools/monodesign-tools.d.ts.map +1 -0
  143. package/dist/src/mcp-tools/monodesign-tools.js +233 -0
  144. package/dist/src/mcp-tools/monodesign-tools.js.map +1 -0
  145. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts +5 -0
  146. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts.map +1 -0
  147. package/dist/src/mcp-tools/monograph/agent-history-tools.js +177 -0
  148. package/dist/src/mcp-tools/monograph/agent-history-tools.js.map +1 -0
  149. package/dist/src/mcp-tools/monograph/build-tools.d.ts +9 -0
  150. package/dist/src/mcp-tools/monograph/build-tools.d.ts.map +1 -0
  151. package/dist/src/mcp-tools/monograph/build-tools.js +299 -0
  152. package/dist/src/mcp-tools/monograph/build-tools.js.map +1 -0
  153. package/dist/src/mcp-tools/monograph/group-tools.d.ts +10 -0
  154. package/dist/src/mcp-tools/monograph/group-tools.d.ts.map +1 -0
  155. package/dist/src/mcp-tools/monograph/group-tools.js +225 -0
  156. package/dist/src/mcp-tools/monograph/group-tools.js.map +1 -0
  157. package/dist/src/mcp-tools/monograph/health-tools.d.ts +6 -0
  158. package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -0
  159. package/dist/src/mcp-tools/monograph/health-tools.js +113 -0
  160. package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -0
  161. package/dist/src/mcp-tools/monograph/impact-tools.d.ts +9 -0
  162. package/dist/src/mcp-tools/monograph/impact-tools.d.ts.map +1 -0
  163. package/dist/src/mcp-tools/monograph/impact-tools.js +532 -0
  164. package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -0
  165. package/dist/src/mcp-tools/monograph/index.d.ts +10 -0
  166. package/dist/src/mcp-tools/monograph/index.d.ts.map +1 -0
  167. package/dist/src/mcp-tools/monograph/index.js +73 -0
  168. package/dist/src/mcp-tools/monograph/index.js.map +1 -0
  169. package/dist/src/mcp-tools/monograph/query-tools.d.ts +11 -0
  170. package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -0
  171. package/dist/src/mcp-tools/monograph/query-tools.js +500 -0
  172. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -0
  173. package/dist/src/mcp-tools/monograph/shared.d.ts +64 -0
  174. package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -0
  175. package/dist/src/mcp-tools/monograph/shared.js +215 -0
  176. package/dist/src/mcp-tools/monograph/shared.js.map +1 -0
  177. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts +10 -0
  178. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts.map +1 -0
  179. package/dist/src/mcp-tools/monograph/visualize-tools.js +382 -0
  180. package/dist/src/mcp-tools/monograph/visualize-tools.js.map +1 -0
  181. package/dist/src/mcp-tools/monograph-tools.d.ts +4 -23
  182. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  183. package/dist/src/mcp-tools/monograph-tools.js +4 -2439
  184. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  185. package/dist/src/mcp-tools/monomind-tools.d.ts +8 -0
  186. package/dist/src/mcp-tools/monomind-tools.d.ts.map +1 -1
  187. package/dist/src/mcp-tools/monomind-tools.js +13 -1
  188. package/dist/src/mcp-tools/monomind-tools.js.map +1 -1
  189. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
  190. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +31 -2
  191. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -1
  192. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  193. package/dist/src/mcp-tools/terminal-tools.js +31 -1
  194. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  195. package/dist/src/mcp-tools/types.d.ts +8 -27
  196. package/dist/src/mcp-tools/types.d.ts.map +1 -1
  197. package/dist/src/mcp-tools/types.js +9 -91
  198. package/dist/src/mcp-tools/types.js.map +1 -1
  199. package/dist/src/memory/file-permissions.d.ts +15 -0
  200. package/dist/src/memory/file-permissions.d.ts.map +1 -0
  201. package/dist/src/memory/file-permissions.js +25 -0
  202. package/dist/src/memory/file-permissions.js.map +1 -0
  203. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  204. package/dist/src/memory/memory-bridge.js +94 -34
  205. package/dist/src/memory/memory-bridge.js.map +1 -1
  206. package/dist/src/memory/memory-crud.d.ts.map +1 -1
  207. package/dist/src/memory/memory-crud.js +298 -275
  208. package/dist/src/memory/memory-crud.js.map +1 -1
  209. package/dist/src/memory/memory-initializer.d.ts +2 -4
  210. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  211. package/dist/src/memory/memory-initializer.js +53 -76
  212. package/dist/src/memory/memory-initializer.js.map +1 -1
  213. package/dist/src/memory/memory-migrations.d.ts +1 -14
  214. package/dist/src/memory/memory-migrations.d.ts.map +1 -1
  215. package/dist/src/memory/memory-migrations.js +52 -105
  216. package/dist/src/memory/memory-migrations.js.map +1 -1
  217. package/dist/src/memory/sona-optimizer.d.ts +1 -1
  218. package/dist/src/memory/sona-optimizer.js +1 -1
  219. package/dist/src/monovector/index.d.ts +16 -19
  220. package/dist/src/monovector/index.d.ts.map +1 -1
  221. package/dist/src/monovector/index.js +50 -8
  222. package/dist/src/monovector/index.js.map +1 -1
  223. package/dist/src/orgrt/approvals.d.ts +16 -0
  224. package/dist/src/orgrt/approvals.d.ts.map +1 -0
  225. package/dist/src/orgrt/approvals.js +72 -0
  226. package/dist/src/orgrt/approvals.js.map +1 -0
  227. package/dist/src/orgrt/bus.d.ts.map +1 -1
  228. package/dist/src/orgrt/bus.js +21 -0
  229. package/dist/src/orgrt/bus.js.map +1 -1
  230. package/dist/src/orgrt/checkpoint-ops.d.ts +19 -0
  231. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -0
  232. package/dist/src/orgrt/checkpoint-ops.js +219 -0
  233. package/dist/src/orgrt/checkpoint-ops.js.map +1 -0
  234. package/dist/src/orgrt/checkpoint.d.ts +33 -1
  235. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  236. package/dist/src/orgrt/checkpoint.js +50 -6
  237. package/dist/src/orgrt/checkpoint.js.map +1 -1
  238. package/dist/src/orgrt/cross-org.d.ts +32 -0
  239. package/dist/src/orgrt/cross-org.d.ts.map +1 -0
  240. package/dist/src/orgrt/cross-org.js +256 -0
  241. package/dist/src/orgrt/cross-org.js.map +1 -0
  242. package/dist/src/orgrt/daemon.d.ts +131 -157
  243. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  244. package/dist/src/orgrt/daemon.js +356 -966
  245. package/dist/src/orgrt/daemon.js.map +1 -1
  246. package/dist/src/orgrt/decisions.d.ts +33 -0
  247. package/dist/src/orgrt/decisions.d.ts.map +1 -0
  248. package/dist/src/orgrt/decisions.js +169 -0
  249. package/dist/src/orgrt/decisions.js.map +1 -0
  250. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  251. package/dist/src/orgrt/kimicode-runner.js +5 -1
  252. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  253. package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
  254. package/dist/src/orgrt/opencode-runner.js +10 -2
  255. package/dist/src/orgrt/opencode-runner.js.map +1 -1
  256. package/dist/src/orgrt/org-memory.d.ts +45 -0
  257. package/dist/src/orgrt/org-memory.d.ts.map +1 -0
  258. package/dist/src/orgrt/org-memory.js +220 -0
  259. package/dist/src/orgrt/org-memory.js.map +1 -0
  260. package/dist/src/orgrt/policy.d.ts +4 -0
  261. package/dist/src/orgrt/policy.d.ts.map +1 -1
  262. package/dist/src/orgrt/policy.js +13 -1
  263. package/dist/src/orgrt/policy.js.map +1 -1
  264. package/dist/src/orgrt/prechecks.d.ts +15 -0
  265. package/dist/src/orgrt/prechecks.d.ts.map +1 -0
  266. package/dist/src/orgrt/prechecks.js +21 -0
  267. package/dist/src/orgrt/prechecks.js.map +1 -0
  268. package/dist/src/orgrt/questions.d.ts +39 -0
  269. package/dist/src/orgrt/questions.d.ts.map +1 -0
  270. package/dist/src/orgrt/questions.js +135 -0
  271. package/dist/src/orgrt/questions.js.map +1 -0
  272. package/dist/src/orgrt/remote.d.ts +25 -0
  273. package/dist/src/orgrt/remote.d.ts.map +1 -0
  274. package/dist/src/orgrt/remote.js +73 -0
  275. package/dist/src/orgrt/remote.js.map +1 -0
  276. package/dist/src/orgrt/scheduler-integration.d.ts +19 -0
  277. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -0
  278. package/dist/src/orgrt/scheduler-integration.js +90 -0
  279. package/dist/src/orgrt/scheduler-integration.js.map +1 -0
  280. package/dist/src/orgrt/server.d.ts.map +1 -1
  281. package/dist/src/orgrt/server.js +70 -2
  282. package/dist/src/orgrt/server.js.map +1 -1
  283. package/dist/src/orgrt/session.d.ts +30 -1
  284. package/dist/src/orgrt/session.d.ts.map +1 -1
  285. package/dist/src/orgrt/session.js +184 -53
  286. package/dist/src/orgrt/session.js.map +1 -1
  287. package/dist/src/orgrt/state-detector.d.ts +19 -0
  288. package/dist/src/orgrt/state-detector.d.ts.map +1 -0
  289. package/dist/src/orgrt/state-detector.js +59 -0
  290. package/dist/src/orgrt/state-detector.js.map +1 -0
  291. package/dist/src/orgrt/task-dag.d.ts +27 -0
  292. package/dist/src/orgrt/task-dag.d.ts.map +1 -0
  293. package/dist/src/orgrt/task-dag.js +100 -0
  294. package/dist/src/orgrt/task-dag.js.map +1 -0
  295. package/dist/src/orgrt/tool-fence.d.ts +7 -4
  296. package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
  297. package/dist/src/orgrt/tool-fence.js +47 -6
  298. package/dist/src/orgrt/tool-fence.js.map +1 -1
  299. package/dist/src/orgrt/types.d.ts +57 -2
  300. package/dist/src/orgrt/types.d.ts.map +1 -1
  301. package/dist/src/orgrt/types.js +34 -3
  302. package/dist/src/orgrt/types.js.map +1 -1
  303. package/dist/src/routing/model-download.d.ts +49 -0
  304. package/dist/src/routing/model-download.d.ts.map +1 -0
  305. package/dist/src/routing/model-download.js +106 -0
  306. package/dist/src/routing/model-download.js.map +1 -0
  307. package/dist/src/services/crash-reporter.d.ts +5 -0
  308. package/dist/src/services/crash-reporter.d.ts.map +1 -1
  309. package/dist/src/services/crash-reporter.js +49 -0
  310. package/dist/src/services/crash-reporter.js.map +1 -1
  311. package/dist/src/transfer/anonymization/index.d.ts +18 -15
  312. package/dist/src/transfer/anonymization/index.d.ts.map +1 -1
  313. package/dist/src/transfer/anonymization/index.js +7 -119
  314. package/dist/src/transfer/anonymization/index.js.map +1 -1
  315. package/dist/src/ui/dashboard.html +606 -7
  316. package/dist/src/ui/orgs.html +7 -1
  317. package/dist/src/ui/routes-monograph.mjs +6 -0
  318. package/dist/src/ui/server.mjs +327 -7
  319. package/dist/src/update/checker.d.ts.map +1 -1
  320. package/dist/src/update/checker.js +2 -1
  321. package/dist/src/update/checker.js.map +1 -1
  322. package/dist/src/update/executor.d.ts.map +1 -1
  323. package/dist/src/update/executor.js +7 -3
  324. package/dist/src/update/executor.js.map +1 -1
  325. package/dist/src/update/index.d.ts +0 -1
  326. package/dist/src/update/index.d.ts.map +1 -1
  327. package/dist/src/update/index.js +5 -24
  328. package/dist/src/update/index.js.map +1 -1
  329. package/dist/src/utils/db-mutex.d.ts +11 -0
  330. package/dist/src/utils/db-mutex.d.ts.map +1 -0
  331. package/dist/src/utils/db-mutex.js +23 -0
  332. package/dist/src/utils/db-mutex.js.map +1 -0
  333. package/dist/src/utils/input-guards.d.ts +23 -0
  334. package/dist/src/utils/input-guards.d.ts.map +1 -1
  335. package/dist/src/utils/input-guards.js +72 -0
  336. package/dist/src/utils/input-guards.js.map +1 -1
  337. package/dist/src/utils/npm-command.d.ts +10 -0
  338. package/dist/src/utils/npm-command.d.ts.map +1 -0
  339. package/dist/src/utils/npm-command.js +12 -0
  340. package/dist/src/utils/npm-command.js.map +1 -0
  341. package/dist/src/utils/paths.d.ts +28 -0
  342. package/dist/src/utils/paths.d.ts.map +1 -0
  343. package/dist/src/utils/paths.js +108 -0
  344. package/dist/src/utils/paths.js.map +1 -0
  345. package/dist/tsconfig.tsbuildinfo +1 -1
  346. package/package.json +17 -17
  347. package/scripts/download-embedding-model.mjs +97 -0
  348. package/scripts/publish.sh +0 -0
  349. package/scripts/sync-claude-assets.sh +0 -0
  350. package/dist/src/production/circuit-breaker.d.ts +0 -121
  351. package/dist/src/production/circuit-breaker.d.ts.map +0 -1
  352. package/dist/src/production/circuit-breaker.js +0 -262
  353. package/dist/src/production/circuit-breaker.js.map +0 -1
  354. package/dist/src/production/error-handler.d.ts +0 -119
  355. package/dist/src/production/error-handler.d.ts.map +0 -1
  356. package/dist/src/production/error-handler.js +0 -324
  357. package/dist/src/production/error-handler.js.map +0 -1
  358. package/dist/src/production/index.d.ts +0 -6
  359. package/dist/src/production/index.d.ts.map +0 -1
  360. package/dist/src/production/index.js +0 -6
  361. package/dist/src/production/index.js.map +0 -1
  362. package/dist/src/production/monitoring.d.ts +0 -181
  363. package/dist/src/production/monitoring.d.ts.map +0 -1
  364. package/dist/src/production/monitoring.js +0 -375
  365. package/dist/src/production/monitoring.js.map +0 -1
  366. package/dist/src/production/rate-limiter.d.ts +0 -125
  367. package/dist/src/production/rate-limiter.d.ts.map +0 -1
  368. package/dist/src/production/rate-limiter.js +0 -218
  369. package/dist/src/production/rate-limiter.js.map +0 -1
  370. package/dist/src/production/retry.d.ts +0 -48
  371. package/dist/src/production/retry.d.ts.map +0 -1
  372. package/dist/src/production/retry.js +0 -189
  373. package/dist/src/production/retry.js.map +0 -1
  374. package/dist/src/transfer/types.d.ts +0 -245
  375. package/dist/src/transfer/types.d.ts.map +0 -1
  376. package/dist/src/transfer/types.js +0 -6
  377. package/dist/src/transfer/types.js.map +0 -1
@@ -0,0 +1,279 @@
1
+ /**
2
+ * Claude Code file writers: settings.json, .mcp.json, helpers, statusline, CLAUDE.md.
3
+ */
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import { generateSettingsJson } from './settings-generator.js';
7
+ import { generateMCPJson } from './mcp-generator.js';
8
+ import { generateStatuslineScript } from './statusline-generator.js';
9
+ import { INIT_FALLBACK_HELPERS, } from './helpers-generator.js';
10
+ import { generateClaudeMd } from './claudemd-generator.js';
11
+ import { atomicWriteFile, findSourceHelpersDir, findSourceClaudeDir, MAX_EXEC_FILE_BYTES, } from './shared.js';
12
+ /**
13
+ * Write settings.json
14
+ */
15
+ export async function writeSettings(targetDir, options, result) {
16
+ const settingsPath = path.join(targetDir, '.claude', 'settings.json');
17
+ const generated = JSON.parse(generateSettingsJson(options));
18
+ if (fs.existsSync(settingsPath) && !options.force && fs.statSync(settingsPath).size <= MAX_EXEC_FILE_BYTES) {
19
+ // Merge hooks/env/permissions into existing settings instead of skipping
20
+ try {
21
+ const existing = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
22
+ let merged = false;
23
+ // Merge hooks (the critical missing piece — #1484)
24
+ if (generated.hooks && !existing.hooks) {
25
+ existing.hooks = generated.hooks;
26
+ merged = true;
27
+ }
28
+ // Merge env vars (for CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS etc.)
29
+ if (generated.env) {
30
+ existing.env = { ...(existing.env || {}), ...generated.env };
31
+ merged = true;
32
+ }
33
+ // Merge permissions (add monomind allow rules)
34
+ if (generated.permissions?.allow) {
35
+ const existingAllow = existing.permissions?.allow || [];
36
+ const newRules = generated.permissions.allow.filter((r) => !existingAllow.includes(r));
37
+ if (newRules.length > 0) {
38
+ existing.permissions = existing.permissions || {};
39
+ existing.permissions.allow = [...existingAllow, ...newRules];
40
+ merged = true;
41
+ }
42
+ }
43
+ if (merged) {
44
+ atomicWriteFile(settingsPath, JSON.stringify(existing, null, 2));
45
+ result.created.files.push('.claude/settings.json (merged hooks)');
46
+ }
47
+ else {
48
+ result.skipped.push('.claude/settings.json');
49
+ }
50
+ }
51
+ catch (e) {
52
+ // Existing file is corrupt — overwrite
53
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
54
+ console.error('[writeSettings] existing settings.json unparseable, overwriting with generated defaults:', e);
55
+ atomicWriteFile(settingsPath, JSON.stringify(generated, null, 2));
56
+ result.created.files.push('.claude/settings.json');
57
+ }
58
+ return;
59
+ }
60
+ atomicWriteFile(settingsPath, JSON.stringify(generated, null, 2));
61
+ result.created.files.push('.claude/settings.json');
62
+ }
63
+ /**
64
+ * Write .mcp.json
65
+ */
66
+ export async function writeMCPConfig(targetDir, options, result) {
67
+ const mcpPath = path.join(targetDir, '.mcp.json');
68
+ if (fs.existsSync(mcpPath) && !options.force) {
69
+ result.skipped.push('.mcp.json');
70
+ return;
71
+ }
72
+ const content = generateMCPJson(options);
73
+ atomicWriteFile(mcpPath, content);
74
+ result.created.files.push('.mcp.json');
75
+ }
76
+ /**
77
+ * Write helper scripts
78
+ */
79
+ export async function writeHelpers(targetDir, options, result) {
80
+ const helpersDir = path.join(targetDir, '.claude', 'helpers');
81
+ // Find source helpers directory (works for npm package and local dev)
82
+ const sourceHelpersDir = findSourceHelpersDir(options.sourceBaseDir);
83
+ // Try to copy existing helpers from source first (recursive — includes utils/ and handlers/)
84
+ if (sourceHelpersDir && fs.existsSync(sourceHelpersDir)) {
85
+ const copyRecursive = (srcDir, destDir, relBase) => {
86
+ fs.mkdirSync(destDir, { recursive: true });
87
+ for (const entry of fs.readdirSync(srcDir, { withFileTypes: true })) {
88
+ // Skip exFAT/macOS AppleDouble junk files (e.g. "._foo.cjs").
89
+ if (entry.name.startsWith('._'))
90
+ continue;
91
+ const srcPath = path.join(srcDir, entry.name);
92
+ const destPath = path.join(destDir, entry.name);
93
+ const relPath = relBase ? `${relBase}/${entry.name}` : entry.name;
94
+ if (entry.isDirectory()) {
95
+ copyRecursive(srcPath, destPath, relPath);
96
+ }
97
+ else {
98
+ if (!fs.existsSync(destPath) || options.force) {
99
+ fs.copyFileSync(srcPath, destPath);
100
+ if (entry.name.endsWith('.sh') || entry.name.endsWith('.mjs')) {
101
+ fs.chmodSync(destPath, '755');
102
+ }
103
+ result.created.files.push(`.claude/helpers/${relPath}`);
104
+ }
105
+ else {
106
+ result.skipped.push(`.claude/helpers/${relPath}`);
107
+ }
108
+ }
109
+ }
110
+ };
111
+ copyRecursive(sourceHelpersDir, helpersDir, '');
112
+ const geminiHelpersDir = path.join(targetDir, '.gemini', 'helpers');
113
+ copyRecursive(sourceHelpersDir, geminiHelpersDir, '');
114
+ }
115
+ // Always run the fallback generator too — it only fills in files still missing
116
+ // after the source copy above (it no-ops on anything the copy already wrote).
117
+ // Without this, a source dir that's present but incomplete (e.g. missing
118
+ // auto-memory-hook.mjs) silently ships a project wired to hooks that reference
119
+ // a file that was never installed.
120
+ const helpers = Object.fromEntries(Object.entries(INIT_FALLBACK_HELPERS).map(([name, generate]) => [name, generate()]));
121
+ for (const [name, content] of Object.entries(helpers)) {
122
+ const filePath = path.join(helpersDir, name);
123
+ // If the source dir has this file, copyRecursive above already applied
124
+ // the correct (force-aware) copy — never let this generated fallback
125
+ // clobber it with a bare-bones stub. Only step in when source truly
126
+ // doesn't have the file, regardless of `force`.
127
+ const inSource = !!(sourceHelpersDir && fs.existsSync(path.join(sourceHelpersDir, name)));
128
+ if (inSource)
129
+ continue;
130
+ if (!fs.existsSync(filePath) || options.force) {
131
+ atomicWriteFile(filePath, content);
132
+ // Make shell scripts executable
133
+ if (!name.endsWith('.js')) {
134
+ fs.chmodSync(filePath, '755');
135
+ }
136
+ result.created.files.push(`.claude/helpers/${name}`);
137
+ }
138
+ else {
139
+ result.skipped.push(`.claude/helpers/${name}`);
140
+ }
141
+ }
142
+ }
143
+ /**
144
+ * Write statusline configuration
145
+ */
146
+ export async function writeStatusline(targetDir, options, result) {
147
+ const claudeDir = path.join(targetDir, '.claude');
148
+ const helpersDir = path.join(targetDir, '.claude', 'helpers');
149
+ // Find source .claude directory (works for npm package and local dev)
150
+ const sourceClaudeDir = findSourceClaudeDir(options.sourceBaseDir);
151
+ // Try to copy existing advanced statusline files from source
152
+ const advancedStatuslineFiles = [
153
+ { src: 'statusline.sh', dest: 'statusline.sh', dir: claudeDir },
154
+ { src: 'statusline.mjs', dest: 'statusline.mjs', dir: claudeDir },
155
+ ];
156
+ if (sourceClaudeDir) {
157
+ for (const file of advancedStatuslineFiles) {
158
+ const sourcePath = path.join(sourceClaudeDir, file.src);
159
+ const destPath = path.join(file.dir, file.dest);
160
+ if (fs.existsSync(sourcePath)) {
161
+ if (!fs.existsSync(destPath) || options.force) {
162
+ fs.copyFileSync(sourcePath, destPath);
163
+ // Make shell scripts and mjs executable
164
+ if (file.src.endsWith('.sh') || file.src.endsWith('.mjs')) {
165
+ fs.chmodSync(destPath, '755');
166
+ }
167
+ result.created.files.push(`.claude/${file.dest}`);
168
+ }
169
+ else {
170
+ result.skipped.push(`.claude/${file.dest}`);
171
+ }
172
+ }
173
+ }
174
+ }
175
+ // ALWAYS generate statusline.cjs — the generated version includes
176
+ // vectors/size, tests, ADRs, hooks, and integration stats that the
177
+ // pre-installed static copy in the npm package lacks.
178
+ // This must overwrite any copy from writeHelpers() which copies the legacy file.
179
+ const statuslineScript = generateStatuslineScript(options);
180
+ const statuslinePath = path.join(helpersDir, 'statusline.cjs');
181
+ atomicWriteFile(statuslinePath, statuslineScript);
182
+ result.created.files.push('.claude/helpers/statusline.cjs');
183
+ }
184
+ /**
185
+ * Write CLAUDE.md with swarm guidance
186
+ */
187
+ export async function writeClaudeMd(targetDir, options, result) {
188
+ const claudeMdPath = path.join(targetDir, 'CLAUDE.md');
189
+ if (fs.existsSync(claudeMdPath) && !options.force) {
190
+ result.skipped.push('CLAUDE.md');
191
+ }
192
+ else {
193
+ // Determine template: explicit option > infer from components > 'standard'
194
+ const inferredTemplate = (!options.components.commands && !options.components.agents) ? 'minimal' : undefined;
195
+ const content = generateClaudeMd(options, inferredTemplate);
196
+ atomicWriteFile(claudeMdPath, content);
197
+ result.created.files.push('CLAUDE.md');
198
+ }
199
+ // Also write/append global ~/.claude/CLAUDE.md so monomind tools are used automatically (#1497)
200
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
201
+ if (homeDir) {
202
+ const globalClaudeDir = path.join(homeDir, '.claude');
203
+ const globalClaudeMd = path.join(globalClaudeDir, 'CLAUDE.md');
204
+ const monomindBlock = [
205
+ '',
206
+ '# Monomind Integration (auto-generated by monomind init)',
207
+ 'When working on multi-file tasks or complex features, use ToolSearch to find and invoke monomind MCP tools.',
208
+ 'Key tools: memory_store, memory_search, hooks_route, swarm_init, agent_spawn.',
209
+ '**Code navigation**: ALWAYS call `mcp__monomind__monograph_query` BEFORE grep/rg/find for code exploration — it returns file path + line number from a pre-built knowledge graph. Call `mcp__monomind__monograph_suggest` with a task description for multi-file tasks. Only fall back to grep if monograph returns 0 results or the DB is not built.',
210
+ 'Check system-reminder tags for [INTELLIGENCE] pattern suggestions and [MONOGRAPH] context before starting work.',
211
+ '',
212
+ ].join('\n');
213
+ try {
214
+ if (!fs.existsSync(globalClaudeDir)) {
215
+ fs.mkdirSync(globalClaudeDir, { recursive: true });
216
+ }
217
+ if (fs.existsSync(globalClaudeMd) && fs.statSync(globalClaudeMd).size <= MAX_EXEC_FILE_BYTES) {
218
+ const existing = fs.readFileSync(globalClaudeMd, 'utf-8');
219
+ if (!existing.includes('Monomind Integration')) {
220
+ fs.appendFileSync(globalClaudeMd, monomindBlock);
221
+ result.created.files.push('~/.claude/CLAUDE.md (appended monomind block)');
222
+ }
223
+ else if (!existing.includes('monograph_query')) {
224
+ // Upgrade existing block to include monograph instructions
225
+ const updated = existing.replace(/# Monomind Integration[^\n]*\n(?:(?!^#).+\n)*/m, monomindBlock.trimStart() + '\n');
226
+ atomicWriteFile(globalClaudeMd, updated);
227
+ result.created.files.push('~/.claude/CLAUDE.md (upgraded monomind block)');
228
+ }
229
+ }
230
+ else {
231
+ atomicWriteFile(globalClaudeMd, monomindBlock.trimStart());
232
+ result.created.files.push('~/.claude/CLAUDE.md');
233
+ }
234
+ }
235
+ catch (e) {
236
+ // Non-critical — global CLAUDE.md is best-effort
237
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
238
+ console.error('[writeClaudeMd] failed to write/append ~/.claude/CLAUDE.md:', e);
239
+ }
240
+ // Also inject the token-display hook into ~/.claude/settings.json
241
+ const globalSettingsPath = path.join(globalClaudeDir, 'settings.json');
242
+ try {
243
+ if (!fs.existsSync(globalClaudeDir)) {
244
+ fs.mkdirSync(globalClaudeDir, { recursive: true });
245
+ }
246
+ let globalSettings = {};
247
+ if (fs.existsSync(globalSettingsPath) && fs.statSync(globalSettingsPath).size <= MAX_EXEC_FILE_BYTES) {
248
+ try {
249
+ globalSettings = JSON.parse(fs.readFileSync(globalSettingsPath, 'utf-8'));
250
+ }
251
+ catch (e) {
252
+ // malformed JSON — start fresh
253
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
254
+ console.error('[writeClaudeMd] ~/.claude/settings.json unparseable, starting fresh:', e);
255
+ }
256
+ }
257
+ // Inject SessionStart token hook if not already present
258
+ const hooks = globalSettings.hooks ?? {};
259
+ const sessionStartHooks = hooks['SessionStart'] ?? [];
260
+ const tokenHookCommand = 'npx --yes monomind@latest tokens today';
261
+ const alreadyPresent = sessionStartHooks.some(entry => Array.isArray(entry.hooks) && entry.hooks.some(h => h.command === tokenHookCommand));
262
+ if (!alreadyPresent) {
263
+ sessionStartHooks.push({
264
+ hooks: [{ type: 'command', command: tokenHookCommand, timeout: 10000 }],
265
+ });
266
+ hooks['SessionStart'] = sessionStartHooks;
267
+ globalSettings.hooks = hooks;
268
+ atomicWriteFile(globalSettingsPath, JSON.stringify(globalSettings, null, 2));
269
+ result.created.files.push('~/.claude/settings.json (added token hook)');
270
+ }
271
+ }
272
+ catch (e) {
273
+ // Non-critical — global settings hook is best-effort
274
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
275
+ console.error('[writeClaudeMd] failed to inject token hook into ~/.claude/settings.json:', e);
276
+ }
277
+ }
278
+ }
279
+ //# sourceMappingURL=write-claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-claude.js","sourceRoot":"","sources":["../../../src/init/write-claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Kimi Code artifact writers.
3
+ */
4
+ import type { InitOptions, InitResult } from './types.js';
5
+ /**
6
+ * Write Kimi Code artifacts. ADDITIVE — only invoked when
7
+ * `components.kimicode` is set. Never touches .claude/, .gemini/, .opencode/.
8
+ *
9
+ * Tier 1: .kimi-code/mcp.json (merged, never clobbered), AGENTS.md (skip-if-exists),
10
+ * .kimi-code/{agents,skills}/ converted from the Claude tree.
11
+ * Tier 2: .kimi-code/plugin/hooks/monomind-gate.mjs — stdin/exit-code bridge into
12
+ * the existing .claude/helpers gate handlers (kimi has no project-level
13
+ * hooks, so enforcement only activates via the Tier 3 plugin).
14
+ * Tier 3: .kimi-code/plugin/kimi.plugin.json + commands/ — installable via
15
+ * `/plugins install ./.kimi-code/plugin` for /monomind:* slash commands
16
+ * and auto-wired hooks.
17
+ */
18
+ export declare function writeKimiFiles(targetDir: string, options: InitOptions, result: InitResult): Promise<void>;
19
+ //# sourceMappingURL=write-kimicode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-kimicode.d.ts","sourceRoot":"","sources":["../../../src/init/write-kimicode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS1D;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CAkMf"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Kimi Code artifact writers.
3
+ */
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import { generateKimiMcpJson, mergeKimiMcpJson, generateKimiAgentsMd, generateKimiGateScript, generateKimiPluginManifest, generateKimiStatuslineSh, mergeKimiTuiTomlStatusline, convertKimiAgentMd, convertKimiSkillMd, convertKimiCommandToFlowSkill, convertKimiPluginCommandMd, kimiCommandFilename } from './kimi-generator.js';
7
+ import { atomicWriteFile, walkMdFiles, isLikelyUserFile, extractFmName, } from './shared.js';
8
+ /**
9
+ * Write Kimi Code artifacts. ADDITIVE — only invoked when
10
+ * `components.kimicode` is set. Never touches .claude/, .gemini/, .opencode/.
11
+ *
12
+ * Tier 1: .kimi-code/mcp.json (merged, never clobbered), AGENTS.md (skip-if-exists),
13
+ * .kimi-code/{agents,skills}/ converted from the Claude tree.
14
+ * Tier 2: .kimi-code/plugin/hooks/monomind-gate.mjs — stdin/exit-code bridge into
15
+ * the existing .claude/helpers gate handlers (kimi has no project-level
16
+ * hooks, so enforcement only activates via the Tier 3 plugin).
17
+ * Tier 3: .kimi-code/plugin/kimi.plugin.json + commands/ — installable via
18
+ * `/plugins install ./.kimi-code/plugin` for /monomind:* slash commands
19
+ * and auto-wired hooks.
20
+ */
21
+ export async function writeKimiFiles(targetDir, options, result) {
22
+ const kimiDir = path.join(targetDir, '.kimi-code');
23
+ // .kimi-code/mcp.json — MERGE the monomind server into an existing file;
24
+ // never clobber the user's other servers. Even --force merges (it refreshes
25
+ // the monomind entry only) — a full overwrite would destroy unrelated
26
+ // servers the user configured. Unparseable existing file → skip.
27
+ const mcpJsonPath = path.join(kimiDir, 'mcp.json');
28
+ if (!fs.existsSync(mcpJsonPath)) {
29
+ fs.mkdirSync(kimiDir, { recursive: true });
30
+ atomicWriteFile(mcpJsonPath, generateKimiMcpJson(options));
31
+ result.created.files.push('.kimi-code/mcp.json');
32
+ }
33
+ else {
34
+ const current = fs.readFileSync(mcpJsonPath, 'utf-8');
35
+ const merged = mergeKimiMcpJson(current, options);
36
+ if (merged === null) {
37
+ result.skipped.push('.kimi-code/mcp.json (unparseable — not touched)');
38
+ }
39
+ else if (merged !== current) {
40
+ atomicWriteFile(mcpJsonPath, merged);
41
+ result.updated.push('.kimi-code/mcp.json (merged monomind server)');
42
+ }
43
+ else {
44
+ result.skipped.push('.kimi-code/mcp.json');
45
+ }
46
+ }
47
+ // AGENTS.md — kimi's workspace instructions file. Skip-if-exists, ALWAYS:
48
+ // the opencode target or a hand-written file may already provide one, and
49
+ // under --force the two generators would otherwise flip the file depending
50
+ // on write order. Users who want regeneration delete the file first —
51
+ // same never-clobber spirit as the mcp.json merge above.
52
+ const agentsMdPath = path.join(targetDir, 'AGENTS.md');
53
+ if (!fs.existsSync(agentsMdPath)) {
54
+ atomicWriteFile(agentsMdPath, generateKimiAgentsMd());
55
+ result.created.files.push('AGENTS.md');
56
+ }
57
+ else {
58
+ result.skipped.push('AGENTS.md');
59
+ }
60
+ // Convert the .claude/{agents,commands,skills} tree that copyAgents/Skills/
61
+ // Commands just wrote into kimi shape — same approach as writeOpencodeFiles:
62
+ // reading from the target .claude/ dir means only the user's selected subset
63
+ // is converted.
64
+ const claudeDir = path.join(targetDir, '.claude');
65
+ let agentCount = 0, commandCount = 0, skillCount = 0;
66
+ const seenAgents = new Set();
67
+ // Agents → .kimi-code/agents/<name>.md (flattened, deduped by name)
68
+ const srcAgents = path.join(claudeDir, 'agents');
69
+ if (fs.existsSync(srcAgents)) {
70
+ const destAgents = path.join(kimiDir, 'agents');
71
+ for (const rel of walkMdFiles(srcAgents)) {
72
+ const abs = path.join(srcAgents, rel);
73
+ if (!isLikelyUserFile(rel))
74
+ continue;
75
+ const src = fs.readFileSync(abs, 'utf-8');
76
+ const fallback = path.basename(rel, '.md');
77
+ const converted = convertKimiAgentMd(src, fallback);
78
+ const name = extractFmName(converted) || fallback;
79
+ if (seenAgents.has(name))
80
+ continue;
81
+ seenAgents.add(name);
82
+ fs.mkdirSync(destAgents, { recursive: true });
83
+ atomicWriteFile(path.join(destAgents, `${name}.md`), converted);
84
+ agentCount++;
85
+ }
86
+ }
87
+ // Skills → .kimi-code/skills/<name>/SKILL.md (same shape).
88
+ // Track the directory names written here so command flow-skills below never
89
+ // overwrite a REAL skill that happens to share the <category>-<name> slug
90
+ // (e.g. a skill dir "mastermind-debug" vs a command "mastermind/debug.md").
91
+ const writtenSkillDirs = new Set();
92
+ const srcSkills = path.join(claudeDir, 'skills');
93
+ if (fs.existsSync(srcSkills)) {
94
+ for (const rel of walkMdFiles(srcSkills)) {
95
+ const segs = rel.split(path.sep);
96
+ if (segs.length < 2 || segs[segs.length - 1] !== 'SKILL.md')
97
+ continue;
98
+ const skillName = segs[0];
99
+ const abs = path.join(srcSkills, rel);
100
+ const src = fs.readFileSync(abs, 'utf-8');
101
+ const converted = convertKimiSkillMd(src, skillName);
102
+ const destDir = path.join(kimiDir, 'skills', skillName);
103
+ fs.mkdirSync(destDir, { recursive: true });
104
+ atomicWriteFile(path.join(destDir, 'SKILL.md'), converted);
105
+ writtenSkillDirs.add(skillName);
106
+ skillCount++;
107
+ }
108
+ }
109
+ // Commands → TWO outputs from the same source pass:
110
+ // (a) .kimi-code/skills/<cat>-<name>/SKILL.md as type:flow skills — the only
111
+ // project-level invocable-command mechanism kimi has (/skill:<name>).
112
+ // (b) .kimi-code/plugin/commands/<cat>-<name>.md for the Tier 3 plugin
113
+ // (/monomind:<name> slash commands once installed).
114
+ const srcCommands = path.join(claudeDir, 'commands');
115
+ const pluginDir = path.join(kimiDir, 'plugin');
116
+ // Always create plugin/commands/ — the manifest declares ./commands/ and a
117
+ // missing path surfaces as a plugin diagnostic in kimi (e.g. --skip-claude
118
+ // runs where no commands were converted).
119
+ const destPluginCommands = path.join(pluginDir, 'commands');
120
+ fs.mkdirSync(destPluginCommands, { recursive: true });
121
+ if (fs.existsSync(srcCommands)) {
122
+ for (const rel of walkMdFiles(srcCommands)) {
123
+ const abs = path.join(srcCommands, rel);
124
+ if (!isLikelyUserFile(rel))
125
+ continue;
126
+ const segs = rel.split(path.sep);
127
+ const category = segs.length > 1 ? segs[0] : 'monomind';
128
+ const fileBase = path.basename(rel, '.md');
129
+ const src = fs.readFileSync(abs, 'utf-8');
130
+ // (a) flow skill — skipped when a real skill already owns this directory
131
+ // name (real skills win; the plugin command below still provides the
132
+ // command under /monomind:<name>).
133
+ const flowSkill = convertKimiCommandToFlowSkill(src, category, fileBase);
134
+ const flowName = extractFmName(flowSkill) || `${category}-${fileBase}`;
135
+ if (writtenSkillDirs.has(flowName)) {
136
+ result.skipped.push(`.kimi-code/skills/${flowName}/ (command flow-skill conflicts with a real skill — plugin command kept)`);
137
+ }
138
+ else {
139
+ const flowDir = path.join(kimiDir, 'skills', flowName);
140
+ fs.mkdirSync(flowDir, { recursive: true });
141
+ atomicWriteFile(path.join(flowDir, 'SKILL.md'), flowSkill);
142
+ writtenSkillDirs.add(flowName);
143
+ skillCount++;
144
+ }
145
+ // (b) plugin command
146
+ const pluginCmd = convertKimiPluginCommandMd(src, category, fileBase);
147
+ fs.mkdirSync(destPluginCommands, { recursive: true });
148
+ atomicWriteFile(path.join(destPluginCommands, kimiCommandFilename(category, fileBase)), pluginCmd);
149
+ commandCount++;
150
+ }
151
+ }
152
+ // Tier 2: hook gate bridge script.
153
+ const hooksDir = path.join(pluginDir, 'hooks');
154
+ const gatePath = path.join(hooksDir, 'monomind-gate.mjs');
155
+ if (!fs.existsSync(gatePath) || options.force) {
156
+ fs.mkdirSync(hooksDir, { recursive: true });
157
+ atomicWriteFile(gatePath, generateKimiGateScript());
158
+ result.created.files.push('.kimi-code/plugin/hooks/monomind-gate.mjs');
159
+ }
160
+ else {
161
+ result.skipped.push('.kimi-code/plugin/hooks/monomind-gate.mjs');
162
+ }
163
+ // Tier 3: plugin manifest.
164
+ const manifestPath = path.join(pluginDir, 'kimi.plugin.json');
165
+ if (!fs.existsSync(manifestPath) || options.force) {
166
+ fs.mkdirSync(pluginDir, { recursive: true });
167
+ atomicWriteFile(manifestPath, generateKimiPluginManifest(options));
168
+ result.created.files.push('.kimi-code/plugin/kimi.plugin.json');
169
+ }
170
+ else {
171
+ result.skipped.push('.kimi-code/plugin/kimi.plugin.json');
172
+ }
173
+ if (agentCount)
174
+ result.created.files.push(`.kimi-code/agents/ (${agentCount} agents)`);
175
+ if (skillCount)
176
+ result.created.files.push(`.kimi-code/skills/ (${skillCount} skills)`);
177
+ if (commandCount)
178
+ result.created.files.push(`.kimi-code/plugin/commands/ (${commandCount} commands)`);
179
+ // Statusline — the footer under kimi's chatbox. Lives in the USER's
180
+ // ~/.kimi-code/ (kimi has no project-level statusline config), gated on
181
+ // that directory already existing (i.e. the user actually runs kimi —
182
+ // init must not create global state for non-kimi users). The tui.toml
183
+ // merge never clobbers an existing [status_line].command.
184
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
185
+ if (homeDir) {
186
+ const kimiHome = path.join(homeDir, '.kimi-code');
187
+ if (fs.existsSync(kimiHome)) {
188
+ try {
189
+ const statuslineShPath = path.join(kimiHome, 'statusline.sh');
190
+ if (!fs.existsSync(statuslineShPath) || options.force) {
191
+ atomicWriteFile(statuslineShPath, generateKimiStatuslineSh());
192
+ try {
193
+ fs.chmodSync(statuslineShPath, 0o755);
194
+ }
195
+ catch { /* ignore on Windows */ }
196
+ result.created.files.push('~/.kimi-code/statusline.sh');
197
+ }
198
+ else {
199
+ result.skipped.push('~/.kimi-code/statusline.sh');
200
+ }
201
+ const tuiTomlPath = path.join(kimiHome, 'tui.toml');
202
+ const relCommand = '~/.kimi-code/statusline.sh';
203
+ const existingToml = fs.existsSync(tuiTomlPath) ? fs.readFileSync(tuiTomlPath, 'utf-8') : '';
204
+ const mergedToml = mergeKimiTuiTomlStatusline(existingToml, relCommand);
205
+ if (mergedToml !== existingToml) {
206
+ atomicWriteFile(tuiTomlPath, mergedToml);
207
+ result.created.files.push('~/.kimi-code/tui.toml ([status_line].command wired)');
208
+ }
209
+ else {
210
+ result.skipped.push('~/.kimi-code/tui.toml (status_line.command already set)');
211
+ }
212
+ }
213
+ catch (e) {
214
+ // Best-effort, like the agy global settings — a statusline failure
215
+ // must never fail init.
216
+ if (process.env.DEBUG || process.env.MONOMIND_DEBUG) {
217
+ console.error('[writeKimiFiles] failed to wire kimi statusline:', e);
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ //# sourceMappingURL=write-kimicode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-kimicode.js","sourceRoot":"","sources":["../../../src/init/write-kimicode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Opencode artifact writers.
3
+ */
4
+ import type { InitOptions, InitResult } from './types.js';
5
+ /**
6
+ * Write opencode artifacts. ADDITIVE — only invoked when
7
+ * `components.opencode` is set. Never touches .claude/ or .gemini/.
8
+ *
9
+ * Tier 1: opencode.json (MCP server + permissions + instructions).
10
+ * Tier 2 (added next): AGENTS.md + .opencode/{agent,command,skills}/ converted
11
+ * from the Claude tree.
12
+ */
13
+ export declare function writeOpencodeFiles(targetDir: string, options: InitOptions, result: InitResult): Promise<void>;
14
+ //# sourceMappingURL=write-opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-opencode.d.ts","sourceRoot":"","sources":["../../../src/init/write-opencode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS1D;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Gf"}