mewkit 1.7.0 → 1.7.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 (344) hide show
  1. package/package.json +1 -1
  2. package/dist/commands/budget.d.ts +0 -6
  3. package/dist/commands/budget.d.ts.map +0 -1
  4. package/dist/commands/budget.js +0 -95
  5. package/dist/commands/budget.js.map +0 -1
  6. package/dist/commands/doctor.d.ts +0 -4
  7. package/dist/commands/doctor.d.ts.map +0 -1
  8. package/dist/commands/doctor.js +0 -365
  9. package/dist/commands/doctor.js.map +0 -1
  10. package/dist/commands/init.d.ts +0 -13
  11. package/dist/commands/init.d.ts.map +0 -1
  12. package/dist/commands/init.js +0 -354
  13. package/dist/commands/init.js.map +0 -1
  14. package/dist/commands/memory.d.ts +0 -9
  15. package/dist/commands/memory.d.ts.map +0 -1
  16. package/dist/commands/memory.js +0 -217
  17. package/dist/commands/memory.js.map +0 -1
  18. package/dist/commands/migrate.d.ts +0 -21
  19. package/dist/commands/migrate.d.ts.map +0 -1
  20. package/dist/commands/migrate.js +0 -42
  21. package/dist/commands/migrate.js.map +0 -1
  22. package/dist/commands/setup.d.ts +0 -16
  23. package/dist/commands/setup.d.ts.map +0 -1
  24. package/dist/commands/setup.js +0 -413
  25. package/dist/commands/setup.js.map +0 -1
  26. package/dist/commands/task.d.ts +0 -10
  27. package/dist/commands/task.d.ts.map +0 -1
  28. package/dist/commands/task.js +0 -313
  29. package/dist/commands/task.js.map +0 -1
  30. package/dist/commands/upgrade.d.ts +0 -7
  31. package/dist/commands/upgrade.d.ts.map +0 -1
  32. package/dist/commands/upgrade.js +0 -143
  33. package/dist/commands/upgrade.js.map +0 -1
  34. package/dist/commands/validate.d.ts +0 -2
  35. package/dist/commands/validate.d.ts.map +0 -1
  36. package/dist/commands/validate.js +0 -139
  37. package/dist/commands/validate.js.map +0 -1
  38. package/dist/core/compute-checksums.d.ts +0 -25
  39. package/dist/core/compute-checksums.d.ts.map +0 -1
  40. package/dist/core/compute-checksums.js +0 -105
  41. package/dist/core/compute-checksums.js.map +0 -1
  42. package/dist/core/core-logger.d.ts +0 -9
  43. package/dist/core/core-logger.d.ts.map +0 -1
  44. package/dist/core/core-logger.js +0 -31
  45. package/dist/core/core-logger.js.map +0 -1
  46. package/dist/core/dependency-installer.d.ts +0 -29
  47. package/dist/core/dependency-installer.d.ts.map +0 -1
  48. package/dist/core/dependency-installer.js +0 -150
  49. package/dist/core/dependency-installer.js.map +0 -1
  50. package/dist/core/github-releases.d.ts +0 -32
  51. package/dist/core/github-releases.d.ts.map +0 -1
  52. package/dist/core/github-releases.js +0 -96
  53. package/dist/core/github-releases.js.map +0 -1
  54. package/dist/core/index.d.ts +0 -12
  55. package/dist/core/index.d.ts.map +0 -1
  56. package/dist/core/index.js +0 -12
  57. package/dist/core/index.js.map +0 -1
  58. package/dist/core/merge-settings.d.ts +0 -7
  59. package/dist/core/merge-settings.d.ts.map +0 -1
  60. package/dist/core/merge-settings.js +0 -131
  61. package/dist/core/merge-settings.js.map +0 -1
  62. package/dist/core/skills-dependencies.d.ts +0 -25
  63. package/dist/core/skills-dependencies.d.ts.map +0 -1
  64. package/dist/core/skills-dependencies.js +0 -100
  65. package/dist/core/skills-dependencies.js.map +0 -1
  66. package/dist/core/smart-update-utils.d.ts +0 -10
  67. package/dist/core/smart-update-utils.d.ts.map +0 -1
  68. package/dist/core/smart-update-utils.js +0 -61
  69. package/dist/core/smart-update-utils.js.map +0 -1
  70. package/dist/core/smart-update.d.ts +0 -18
  71. package/dist/core/smart-update.d.ts.map +0 -1
  72. package/dist/core/smart-update.js +0 -177
  73. package/dist/core/smart-update.js.map +0 -1
  74. package/dist/core/substitute-placeholders.d.ts +0 -11
  75. package/dist/core/substitute-placeholders.d.ts.map +0 -1
  76. package/dist/core/substitute-placeholders.js +0 -28
  77. package/dist/core/substitute-placeholders.js.map +0 -1
  78. package/dist/core/validate-install.d.ts +0 -6
  79. package/dist/core/validate-install.d.ts.map +0 -1
  80. package/dist/core/validate-install.js +0 -97
  81. package/dist/core/validate-install.js.map +0 -1
  82. package/dist/index.d.ts +0 -3
  83. package/dist/index.d.ts.map +0 -1
  84. package/dist/index.js +0 -199
  85. package/dist/index.js.map +0 -1
  86. package/dist/lib/system-deps-registry.d.ts +0 -117
  87. package/dist/lib/system-deps-registry.d.ts.map +0 -1
  88. package/dist/lib/system-deps-registry.js +0 -234
  89. package/dist/lib/system-deps-registry.js.map +0 -1
  90. package/dist/logger.d.ts +0 -26
  91. package/dist/logger.js +0 -70
  92. package/dist/logger.js.map +0 -1
  93. package/dist/migrate/__tests__/frontmatter-parser.test.d.ts +0 -2
  94. package/dist/migrate/__tests__/frontmatter-parser.test.d.ts.map +0 -1
  95. package/dist/migrate/__tests__/frontmatter-parser.test.js +0 -73
  96. package/dist/migrate/__tests__/frontmatter-parser.test.js.map +0 -1
  97. package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts +0 -2
  98. package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts.map +0 -1
  99. package/dist/migrate/__tests__/md-strip-mewkit.test.js +0 -55
  100. package/dist/migrate/__tests__/md-strip-mewkit.test.js.map +0 -1
  101. package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts +0 -2
  102. package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts.map +0 -1
  103. package/dist/migrate/__tests__/migrate-scope-resolver.test.js +0 -53
  104. package/dist/migrate/__tests__/migrate-scope-resolver.test.js.map +0 -1
  105. package/dist/migrate/__tests__/process-lock.test.d.ts +0 -2
  106. package/dist/migrate/__tests__/process-lock.test.d.ts.map +0 -1
  107. package/dist/migrate/__tests__/process-lock.test.js +0 -63
  108. package/dist/migrate/__tests__/process-lock.test.js.map +0 -1
  109. package/dist/migrate/__tests__/provider-registry.test.d.ts +0 -2
  110. package/dist/migrate/__tests__/provider-registry.test.d.ts.map +0 -1
  111. package/dist/migrate/__tests__/provider-registry.test.js +0 -53
  112. package/dist/migrate/__tests__/provider-registry.test.js.map +0 -1
  113. package/dist/migrate/__tests__/reconciler.test.d.ts +0 -2
  114. package/dist/migrate/__tests__/reconciler.test.d.ts.map +0 -1
  115. package/dist/migrate/__tests__/reconciler.test.js +0 -180
  116. package/dist/migrate/__tests__/reconciler.test.js.map +0 -1
  117. package/dist/migrate/codex-capabilities.d.ts +0 -17
  118. package/dist/migrate/codex-capabilities.d.ts.map +0 -1
  119. package/dist/migrate/codex-capabilities.js +0 -95
  120. package/dist/migrate/codex-capabilities.js.map +0 -1
  121. package/dist/migrate/config-merger/merge-single-sections.d.ts +0 -20
  122. package/dist/migrate/config-merger/merge-single-sections.d.ts.map +0 -1
  123. package/dist/migrate/config-merger/merge-single-sections.js +0 -169
  124. package/dist/migrate/config-merger/merge-single-sections.js.map +0 -1
  125. package/dist/migrate/converters/claude-to-codex-hooks.d.ts +0 -23
  126. package/dist/migrate/converters/claude-to-codex-hooks.d.ts.map +0 -1
  127. package/dist/migrate/converters/claude-to-codex-hooks.js +0 -80
  128. package/dist/migrate/converters/claude-to-codex-hooks.js.map +0 -1
  129. package/dist/migrate/converters/direct-copy.d.ts +0 -3
  130. package/dist/migrate/converters/direct-copy.d.ts.map +0 -1
  131. package/dist/migrate/converters/direct-copy.js +0 -52
  132. package/dist/migrate/converters/direct-copy.js.map +0 -1
  133. package/dist/migrate/converters/fm-strip.d.ts +0 -4
  134. package/dist/migrate/converters/fm-strip.d.ts.map +0 -1
  135. package/dist/migrate/converters/fm-strip.js +0 -36
  136. package/dist/migrate/converters/fm-strip.js.map +0 -1
  137. package/dist/migrate/converters/fm-to-codex-toml.d.ts +0 -19
  138. package/dist/migrate/converters/fm-to-codex-toml.d.ts.map +0 -1
  139. package/dist/migrate/converters/fm-to-codex-toml.js +0 -93
  140. package/dist/migrate/converters/fm-to-codex-toml.js.map +0 -1
  141. package/dist/migrate/converters/fm-to-fm.d.ts +0 -3
  142. package/dist/migrate/converters/fm-to-fm.d.ts.map +0 -1
  143. package/dist/migrate/converters/fm-to-fm.js +0 -142
  144. package/dist/migrate/converters/fm-to-fm.js.map +0 -1
  145. package/dist/migrate/converters/fm-to-json.d.ts +0 -12
  146. package/dist/migrate/converters/fm-to-json.d.ts.map +0 -1
  147. package/dist/migrate/converters/fm-to-json.js +0 -55
  148. package/dist/migrate/converters/fm-to-json.js.map +0 -1
  149. package/dist/migrate/converters/fm-to-yaml.d.ts +0 -4
  150. package/dist/migrate/converters/fm-to-yaml.d.ts.map +0 -1
  151. package/dist/migrate/converters/fm-to-yaml.js +0 -62
  152. package/dist/migrate/converters/fm-to-yaml.js.map +0 -1
  153. package/dist/migrate/converters/gemini-hook-event-map.d.ts +0 -6
  154. package/dist/migrate/converters/gemini-hook-event-map.d.ts.map +0 -1
  155. package/dist/migrate/converters/gemini-hook-event-map.js +0 -41
  156. package/dist/migrate/converters/gemini-hook-event-map.js.map +0 -1
  157. package/dist/migrate/converters/index.d.ts +0 -12
  158. package/dist/migrate/converters/index.d.ts.map +0 -1
  159. package/dist/migrate/converters/index.js +0 -66
  160. package/dist/migrate/converters/index.js.map +0 -1
  161. package/dist/migrate/converters/md-strip.d.ts +0 -19
  162. package/dist/migrate/converters/md-strip.d.ts.map +0 -1
  163. package/dist/migrate/converters/md-strip.js +0 -290
  164. package/dist/migrate/converters/md-strip.js.map +0 -1
  165. package/dist/migrate/converters/md-to-kiro-steering.d.ts +0 -3
  166. package/dist/migrate/converters/md-to-kiro-steering.d.ts.map +0 -1
  167. package/dist/migrate/converters/md-to-kiro-steering.js +0 -90
  168. package/dist/migrate/converters/md-to-kiro-steering.js.map +0 -1
  169. package/dist/migrate/converters/md-to-mdc.d.ts +0 -3
  170. package/dist/migrate/converters/md-to-mdc.d.ts.map +0 -1
  171. package/dist/migrate/converters/md-to-mdc.js +0 -19
  172. package/dist/migrate/converters/md-to-mdc.js.map +0 -1
  173. package/dist/migrate/converters/md-to-toml.d.ts +0 -4
  174. package/dist/migrate/converters/md-to-toml.d.ts.map +0 -1
  175. package/dist/migrate/converters/md-to-toml.js +0 -25
  176. package/dist/migrate/converters/md-to-toml.js.map +0 -1
  177. package/dist/migrate/converters/skill-md.d.ts +0 -3
  178. package/dist/migrate/converters/skill-md.d.ts.map +0 -1
  179. package/dist/migrate/converters/skill-md.js +0 -18
  180. package/dist/migrate/converters/skill-md.js.map +0 -1
  181. package/dist/migrate/discovery/agents-discovery.d.ts +0 -3
  182. package/dist/migrate/discovery/agents-discovery.d.ts.map +0 -1
  183. package/dist/migrate/discovery/agents-discovery.js +0 -42
  184. package/dist/migrate/discovery/agents-discovery.js.map +0 -1
  185. package/dist/migrate/discovery/commands-discovery.d.ts +0 -3
  186. package/dist/migrate/discovery/commands-discovery.d.ts.map +0 -1
  187. package/dist/migrate/discovery/commands-discovery.js +0 -60
  188. package/dist/migrate/discovery/commands-discovery.js.map +0 -1
  189. package/dist/migrate/discovery/config-discovery.d.ts +0 -3
  190. package/dist/migrate/discovery/config-discovery.d.ts.map +0 -1
  191. package/dist/migrate/discovery/config-discovery.js +0 -17
  192. package/dist/migrate/discovery/config-discovery.js.map +0 -1
  193. package/dist/migrate/discovery/exclusions.d.ts +0 -5
  194. package/dist/migrate/discovery/exclusions.d.ts.map +0 -1
  195. package/dist/migrate/discovery/exclusions.js +0 -31
  196. package/dist/migrate/discovery/exclusions.js.map +0 -1
  197. package/dist/migrate/discovery/handlers-json-filter.d.ts +0 -17
  198. package/dist/migrate/discovery/handlers-json-filter.d.ts.map +0 -1
  199. package/dist/migrate/discovery/handlers-json-filter.js +0 -48
  200. package/dist/migrate/discovery/handlers-json-filter.js.map +0 -1
  201. package/dist/migrate/discovery/hooks-discovery.d.ts +0 -7
  202. package/dist/migrate/discovery/hooks-discovery.d.ts.map +0 -1
  203. package/dist/migrate/discovery/hooks-discovery.js +0 -45
  204. package/dist/migrate/discovery/hooks-discovery.js.map +0 -1
  205. package/dist/migrate/discovery/index.d.ts +0 -10
  206. package/dist/migrate/discovery/index.d.ts.map +0 -1
  207. package/dist/migrate/discovery/index.js +0 -10
  208. package/dist/migrate/discovery/index.js.map +0 -1
  209. package/dist/migrate/discovery/rules-discovery.d.ts +0 -3
  210. package/dist/migrate/discovery/rules-discovery.d.ts.map +0 -1
  211. package/dist/migrate/discovery/rules-discovery.js +0 -53
  212. package/dist/migrate/discovery/rules-discovery.js.map +0 -1
  213. package/dist/migrate/discovery/skills-discovery.d.ts +0 -5
  214. package/dist/migrate/discovery/skills-discovery.d.ts.map +0 -1
  215. package/dist/migrate/discovery/skills-discovery.js +0 -73
  216. package/dist/migrate/discovery/skills-discovery.js.map +0 -1
  217. package/dist/migrate/discovery/source-paths.d.ts +0 -13
  218. package/dist/migrate/discovery/source-paths.d.ts.map +0 -1
  219. package/dist/migrate/discovery/source-paths.js +0 -63
  220. package/dist/migrate/discovery/source-paths.js.map +0 -1
  221. package/dist/migrate/frontmatter-parser.d.ts +0 -4
  222. package/dist/migrate/frontmatter-parser.d.ts.map +0 -1
  223. package/dist/migrate/frontmatter-parser.js +0 -99
  224. package/dist/migrate/frontmatter-parser.js.map +0 -1
  225. package/dist/migrate/hooks/codex-features-flag.d.ts +0 -8
  226. package/dist/migrate/hooks/codex-features-flag.d.ts.map +0 -1
  227. package/dist/migrate/hooks/codex-features-flag.js +0 -146
  228. package/dist/migrate/hooks/codex-features-flag.js.map +0 -1
  229. package/dist/migrate/hooks/codex-hook-wrapper.d.ts +0 -10
  230. package/dist/migrate/hooks/codex-hook-wrapper.d.ts.map +0 -1
  231. package/dist/migrate/hooks/codex-hook-wrapper.js +0 -166
  232. package/dist/migrate/hooks/codex-hook-wrapper.js.map +0 -1
  233. package/dist/migrate/hooks/codex-path-safety.d.ts +0 -5
  234. package/dist/migrate/hooks/codex-path-safety.d.ts.map +0 -1
  235. package/dist/migrate/hooks/codex-path-safety.js +0 -99
  236. package/dist/migrate/hooks/codex-path-safety.js.map +0 -1
  237. package/dist/migrate/hooks/codex-toml-installer.d.ts +0 -15
  238. package/dist/migrate/hooks/codex-toml-installer.d.ts.map +0 -1
  239. package/dist/migrate/hooks/codex-toml-installer.js +0 -124
  240. package/dist/migrate/hooks/codex-toml-installer.js.map +0 -1
  241. package/dist/migrate/hooks/hooks-settings-merger.d.ts +0 -20
  242. package/dist/migrate/hooks/hooks-settings-merger.d.ts.map +0 -1
  243. package/dist/migrate/hooks/hooks-settings-merger.js +0 -273
  244. package/dist/migrate/hooks/hooks-settings-merger.js.map +0 -1
  245. package/dist/migrate/hooks/index.d.ts +0 -7
  246. package/dist/migrate/hooks/index.d.ts.map +0 -1
  247. package/dist/migrate/hooks/index.js +0 -7
  248. package/dist/migrate/hooks/index.js.map +0 -1
  249. package/dist/migrate/hooks/opencode-config-installer.d.ts +0 -31
  250. package/dist/migrate/hooks/opencode-config-installer.d.ts.map +0 -1
  251. package/dist/migrate/hooks/opencode-config-installer.js +0 -116
  252. package/dist/migrate/hooks/opencode-config-installer.js.map +0 -1
  253. package/dist/migrate/index.d.ts +0 -15
  254. package/dist/migrate/index.d.ts.map +0 -1
  255. package/dist/migrate/index.js +0 -15
  256. package/dist/migrate/index.js.map +0 -1
  257. package/dist/migrate/migrate-discover.d.ts +0 -28
  258. package/dist/migrate/migrate-discover.d.ts.map +0 -1
  259. package/dist/migrate/migrate-discover.js +0 -52
  260. package/dist/migrate/migrate-discover.js.map +0 -1
  261. package/dist/migrate/migrate-mode-resolver.d.ts +0 -10
  262. package/dist/migrate/migrate-mode-resolver.d.ts.map +0 -1
  263. package/dist/migrate/migrate-mode-resolver.js +0 -123
  264. package/dist/migrate/migrate-mode-resolver.js.map +0 -1
  265. package/dist/migrate/migrate-orchestrator.d.ts +0 -9
  266. package/dist/migrate/migrate-orchestrator.d.ts.map +0 -1
  267. package/dist/migrate/migrate-orchestrator.js +0 -204
  268. package/dist/migrate/migrate-orchestrator.js.map +0 -1
  269. package/dist/migrate/migrate-scope-resolver.d.ts +0 -19
  270. package/dist/migrate/migrate-scope-resolver.d.ts.map +0 -1
  271. package/dist/migrate/migrate-scope-resolver.js +0 -81
  272. package/dist/migrate/migrate-scope-resolver.js.map +0 -1
  273. package/dist/migrate/migrate-ui-summary.d.ts +0 -14
  274. package/dist/migrate/migrate-ui-summary.d.ts.map +0 -1
  275. package/dist/migrate/migrate-ui-summary.js +0 -65
  276. package/dist/migrate/migrate-ui-summary.js.map +0 -1
  277. package/dist/migrate/model-taxonomy.d.ts +0 -16
  278. package/dist/migrate/model-taxonomy.d.ts.map +0 -1
  279. package/dist/migrate/model-taxonomy.js +0 -58
  280. package/dist/migrate/model-taxonomy.js.map +0 -1
  281. package/dist/migrate/portable-installer.d.ts +0 -14
  282. package/dist/migrate/portable-installer.d.ts.map +0 -1
  283. package/dist/migrate/portable-installer.js +0 -159
  284. package/dist/migrate/portable-installer.js.map +0 -1
  285. package/dist/migrate/provider-overrides.d.ts +0 -8
  286. package/dist/migrate/provider-overrides.d.ts.map +0 -1
  287. package/dist/migrate/provider-overrides.js +0 -40
  288. package/dist/migrate/provider-overrides.js.map +0 -1
  289. package/dist/migrate/provider-registry-utils.d.ts +0 -23
  290. package/dist/migrate/provider-registry-utils.d.ts.map +0 -1
  291. package/dist/migrate/provider-registry-utils.js +0 -67
  292. package/dist/migrate/provider-registry-utils.js.map +0 -1
  293. package/dist/migrate/provider-registry.d.ts +0 -5
  294. package/dist/migrate/provider-registry.d.ts.map +0 -1
  295. package/dist/migrate/provider-registry.js +0 -327
  296. package/dist/migrate/provider-registry.js.map +0 -1
  297. package/dist/migrate/reconcile/checksum-utils.d.ts +0 -8
  298. package/dist/migrate/reconcile/checksum-utils.d.ts.map +0 -1
  299. package/dist/migrate/reconcile/checksum-utils.js +0 -32
  300. package/dist/migrate/reconcile/checksum-utils.js.map +0 -1
  301. package/dist/migrate/reconcile/conflict-resolver.d.ts +0 -8
  302. package/dist/migrate/reconcile/conflict-resolver.d.ts.map +0 -1
  303. package/dist/migrate/reconcile/conflict-resolver.js +0 -59
  304. package/dist/migrate/reconcile/conflict-resolver.js.map +0 -1
  305. package/dist/migrate/reconcile/diff-display.d.ts +0 -6
  306. package/dist/migrate/reconcile/diff-display.d.ts.map +0 -1
  307. package/dist/migrate/reconcile/diff-display.js +0 -40
  308. package/dist/migrate/reconcile/diff-display.js.map +0 -1
  309. package/dist/migrate/reconcile/index.d.ts +0 -10
  310. package/dist/migrate/reconcile/index.d.ts.map +0 -1
  311. package/dist/migrate/reconcile/index.js +0 -10
  312. package/dist/migrate/reconcile/index.js.map +0 -1
  313. package/dist/migrate/reconcile/output-sanitizer.d.ts +0 -3
  314. package/dist/migrate/reconcile/output-sanitizer.d.ts.map +0 -1
  315. package/dist/migrate/reconcile/output-sanitizer.js +0 -42
  316. package/dist/migrate/reconcile/output-sanitizer.js.map +0 -1
  317. package/dist/migrate/reconcile/portable-registry.d.ts +0 -142
  318. package/dist/migrate/reconcile/portable-registry.d.ts.map +0 -1
  319. package/dist/migrate/reconcile/portable-registry.js +0 -224
  320. package/dist/migrate/reconcile/portable-registry.js.map +0 -1
  321. package/dist/migrate/reconcile/process-lock.d.ts +0 -15
  322. package/dist/migrate/reconcile/process-lock.d.ts.map +0 -1
  323. package/dist/migrate/reconcile/process-lock.js +0 -77
  324. package/dist/migrate/reconcile/process-lock.js.map +0 -1
  325. package/dist/migrate/reconcile/reconcile-state-builders.d.ts +0 -24
  326. package/dist/migrate/reconcile/reconcile-state-builders.d.ts.map +0 -1
  327. package/dist/migrate/reconcile/reconcile-state-builders.js +0 -185
  328. package/dist/migrate/reconcile/reconcile-state-builders.js.map +0 -1
  329. package/dist/migrate/reconcile/reconcile-types.d.ts +0 -113
  330. package/dist/migrate/reconcile/reconcile-types.d.ts.map +0 -1
  331. package/dist/migrate/reconcile/reconcile-types.js +0 -42
  332. package/dist/migrate/reconcile/reconcile-types.js.map +0 -1
  333. package/dist/migrate/reconcile/reconciler.d.ts +0 -3
  334. package/dist/migrate/reconcile/reconciler.d.ts.map +0 -1
  335. package/dist/migrate/reconcile/reconciler.js +0 -445
  336. package/dist/migrate/reconcile/reconciler.js.map +0 -1
  337. package/dist/migrate/skill-directory-installer.d.ts +0 -23
  338. package/dist/migrate/skill-directory-installer.d.ts.map +0 -1
  339. package/dist/migrate/skill-directory-installer.js +0 -55
  340. package/dist/migrate/skill-directory-installer.js.map +0 -1
  341. package/dist/migrate/types.d.ts +0 -172
  342. package/dist/migrate/types.d.ts.map +0 -1
  343. package/dist/migrate/types.js +0 -45
  344. package/dist/migrate/types.js.map +0 -1
@@ -1,131 +0,0 @@
1
- /**
2
- * Append-only merge for .claude/settings.json.
3
- * Adds new MeowKit hooks/permissions without modifying existing user entries.
4
- * Backs up before merge, restores on failure.
5
- */
6
- import { readFileSync, writeFileSync, copyFileSync, existsSync, mkdirSync } from "node:fs";
7
- import { dirname } from "node:path";
8
- import * as log from "./core-logger.js";
9
- /**
10
- * Merge template settings.json into existing user settings.json.
11
- * Strategy: append-only — add new hooks/permissions, never modify existing.
12
- * Returns true if merge succeeded, false if skipped or failed.
13
- */
14
- export function mergeSettingsFile(templatePath, destPath, dryRun) {
15
- if (!existsSync(templatePath)) {
16
- log.debug("Template settings.json not found, skipping merge");
17
- return false;
18
- }
19
- // If dest doesn't exist, just copy
20
- if (!existsSync(destPath)) {
21
- if (!dryRun) {
22
- mkdirSync(dirname(destPath), { recursive: true });
23
- copyFileSync(templatePath, destPath);
24
- }
25
- log.debug("settings.json: fresh copy (no existing file)");
26
- return true;
27
- }
28
- if (dryRun) {
29
- log.debug("settings.json: would merge (dry-run)");
30
- return true;
31
- }
32
- // Read both files
33
- let userSettings;
34
- let templateSettings;
35
- try {
36
- userSettings = JSON.parse(readFileSync(destPath, "utf-8"));
37
- }
38
- catch {
39
- log.warn("settings.json: invalid JSON in existing file, skipping merge");
40
- return false;
41
- }
42
- try {
43
- templateSettings = JSON.parse(readFileSync(templatePath, "utf-8"));
44
- }
45
- catch {
46
- log.warn("settings.json: invalid JSON in template, skipping merge");
47
- return false;
48
- }
49
- // Backup before merge
50
- const backupPath = destPath + ".bak";
51
- copyFileSync(destPath, backupPath);
52
- try {
53
- const merged = appendOnlyMerge(userSettings, templateSettings);
54
- writeFileSync(destPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
55
- log.debug("settings.json: merged successfully");
56
- return true;
57
- }
58
- catch (err) {
59
- // Restore backup on failure
60
- copyFileSync(backupPath, destPath);
61
- log.warn(`settings.json merge failed, restored backup: ${err instanceof Error ? err.message : String(err)}`);
62
- return false;
63
- }
64
- }
65
- /** Append-only merge: add new template entries to user settings without modifying existing */
66
- function appendOnlyMerge(user, template) {
67
- const result = { ...user };
68
- // Copy new top-level keys from template (e.g. statusLine) without overwriting existing
69
- for (const key of Object.keys(template)) {
70
- if (key !== "hooks" && key !== "permissions" && !(key in result)) {
71
- result[key] = template[key];
72
- }
73
- }
74
- // Merge hooks: add new hook matchers that don't exist in user's config
75
- if (template.hooks) {
76
- if (!result.hooks)
77
- result.hooks = {};
78
- for (const [event, templateMatchers] of Object.entries(template.hooks)) {
79
- if (!result.hooks[event]) {
80
- // Entire hook event is new — add it
81
- result.hooks[event] = templateMatchers;
82
- continue;
83
- }
84
- // Event exists — add only matchers with commands not already present
85
- const userMatchers = result.hooks[event];
86
- const userCommands = extractCommandStrings(userMatchers);
87
- for (const templateMatcher of templateMatchers) {
88
- const newHooks = templateMatcher.hooks.filter((h) => !userCommands.has(normalizeCommand(h.command)));
89
- if (newHooks.length > 0) {
90
- // Find existing matcher with same matcher pattern, or create new
91
- const existingMatcher = userMatchers.find((m) => (m.matcher ?? "") === (templateMatcher.matcher ?? ""));
92
- if (existingMatcher) {
93
- existingMatcher.hooks.push(...newHooks);
94
- }
95
- else {
96
- userMatchers.push({ ...templateMatcher, hooks: newHooks });
97
- }
98
- }
99
- }
100
- }
101
- }
102
- // Merge permissions.allow: union of arrays
103
- if (template.permissions?.allow) {
104
- if (!result.permissions)
105
- result.permissions = {};
106
- if (!result.permissions.allow)
107
- result.permissions.allow = [];
108
- const existingSet = new Set(result.permissions.allow);
109
- for (const perm of template.permissions.allow) {
110
- if (!existingSet.has(perm)) {
111
- result.permissions.allow.push(perm);
112
- }
113
- }
114
- }
115
- return result;
116
- }
117
- /** Extract all command strings from hook matchers for deduplication */
118
- function extractCommandStrings(matchers) {
119
- const commands = new Set();
120
- for (const matcher of matchers) {
121
- for (const hook of matcher.hooks) {
122
- commands.add(normalizeCommand(hook.command));
123
- }
124
- }
125
- return commands;
126
- }
127
- /** Normalize command string for comparison (trim whitespace, collapse spaces) */
128
- function normalizeCommand(cmd) {
129
- return cmd.trim().replace(/\s+/g, " ");
130
- }
131
- //# sourceMappingURL=merge-settings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-settings.js","sourceRoot":"","sources":["../../src/core/merge-settings.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /** Skills dependency config — single source of truth for pip packages */
2
- export interface SkillsDependency {
3
- /** pip package name (as passed to pip install) */
4
- name: string;
5
- /** Human-readable description for prompt display */
6
- description: string;
7
- }
8
- /** Default pip packages installed into .claude/skills/.venv */
9
- export declare const DEFAULT_PIP_PACKAGES: readonly SkillsDependency[];
10
- /** Extract base package name, stripping version specifiers (e.g. "pillow>=10.0" → "pillow") */
11
- export declare function getBasePackageName(name: string): string;
12
- export declare function validatePackageName(name: string): boolean;
13
- /**
14
- * Resolve pip packages to install.
15
- * Walks per-skill requirements.txt files, merges and deduplicates.
16
- * Falls back to DEFAULT_PIP_PACKAGES if no requirements files found.
17
- */
18
- export declare function getRequirementsSource(projectDir: string): {
19
- packages: readonly SkillsDependency[];
20
- source: string;
21
- rejected: string[];
22
- };
23
- /** Format packages for CLI display */
24
- export declare function formatPackageList(packages: readonly SkillsDependency[]): string;
25
- //# sourceMappingURL=skills-dependencies.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-dependencies.d.ts","sourceRoot":"","sources":["../../src/core/skills-dependencies.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAKzE,MAAM,WAAW,gBAAgB;IAChC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,EAAE,SAAS,gBAAgB,EAIlD,CAAC;AAKX,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzD;AAsCD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG;IAC1D,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB,CAyBA;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAO/E"}
@@ -1,100 +0,0 @@
1
- /** Skills dependency config — single source of truth for pip packages */
2
- import { existsSync, readFileSync, readdirSync } from "node:fs";
3
- import { join } from "node:path";
4
- /** Default pip packages installed into .claude/skills/.venv */
5
- export const DEFAULT_PIP_PACKAGES = [
6
- { name: "google-genai", description: "Gemini API client (meow:multimodal skill)" },
7
- { name: "pillow", description: "Image processing (meow:multimodal)" },
8
- { name: "python-dotenv", description: "Env var loading (optional — scripts have fallback)" },
9
- ];
10
- /** Validate pip package name — rejects flags, URLs, shell-breaking chars */
11
- const SAFE_PKG_RE = /^[a-zA-Z0-9][a-zA-Z0-9._-]*(\[[a-zA-Z0-9,_-]*\])?(==|>=|<=|!=|~=|<|>)?[a-zA-Z0-9.*]*$/;
12
- /** Extract base package name, stripping version specifiers (e.g. "pillow>=10.0" → "pillow") */
13
- export function getBasePackageName(name) {
14
- return (name.split(/[=<>!~]/)[0] ?? name).toLowerCase();
15
- }
16
- export function validatePackageName(name) {
17
- if (!name || name.startsWith("-") || name.includes("://"))
18
- return false;
19
- return SAFE_PKG_RE.test(getBasePackageName(name));
20
- }
21
- // Collect per-skill requirements.txt files from .claude/skills/{skill}/scripts/
22
- function findRequirementsFiles(projectDir) {
23
- const skillsDir = join(projectDir, ".claude", "skills");
24
- if (!existsSync(skillsDir))
25
- return [];
26
- const found = [];
27
- try {
28
- for (const entry of readdirSync(skillsDir, { withFileTypes: true })) {
29
- if (!entry.isDirectory())
30
- continue;
31
- const reqPath = join(skillsDir, entry.name, "scripts", "requirements.txt");
32
- if (existsSync(reqPath))
33
- found.push(reqPath);
34
- }
35
- }
36
- catch {
37
- /* skills dir not readable */
38
- }
39
- return found;
40
- }
41
- /** Parse a single requirements.txt, validating each line */
42
- function parseRequirementsFile(filePath) {
43
- const content = readFileSync(filePath, "utf-8");
44
- const lines = content
45
- .split("\n")
46
- .map((l) => l.trim())
47
- .filter((l) => l && !l.startsWith("#"));
48
- const packages = [];
49
- const rejected = [];
50
- for (const line of lines) {
51
- if (validatePackageName(line)) {
52
- packages.push({ name: line, description: "" });
53
- }
54
- else {
55
- rejected.push(line);
56
- }
57
- }
58
- return { packages, rejected };
59
- }
60
- /**
61
- * Resolve pip packages to install.
62
- * Walks per-skill requirements.txt files, merges and deduplicates.
63
- * Falls back to DEFAULT_PIP_PACKAGES if no requirements files found.
64
- */
65
- export function getRequirementsSource(projectDir) {
66
- const reqFiles = findRequirementsFiles(projectDir);
67
- if (reqFiles.length > 0) {
68
- const allPackages = [];
69
- const allRejected = [];
70
- const seen = new Set();
71
- for (const filePath of reqFiles) {
72
- const { packages, rejected } = parseRequirementsFile(filePath);
73
- for (const pkg of packages) {
74
- const baseName = getBasePackageName(pkg.name);
75
- if (!seen.has(baseName)) {
76
- seen.add(baseName);
77
- allPackages.push(pkg);
78
- }
79
- }
80
- allRejected.push(...rejected);
81
- }
82
- if (allRejected.length > 0) {
83
- console.warn(` Skipped ${allRejected.length} invalid line(s) across ${reqFiles.length} requirements file(s)`);
84
- }
85
- if (allPackages.length > 0) {
86
- return { packages: allPackages, source: `${reqFiles.length} requirements.txt file(s)`, rejected: allRejected };
87
- }
88
- }
89
- return { packages: DEFAULT_PIP_PACKAGES, source: "built-in defaults", rejected: [] };
90
- }
91
- /** Format packages for CLI display */
92
- export function formatPackageList(packages) {
93
- return packages
94
- .map((p) => {
95
- const desc = p.description ? ` ${p.description}` : "";
96
- return ` ${p.name.padEnd(18)}${desc}`;
97
- })
98
- .join("\n");
99
- }
100
- //# sourceMappingURL=skills-dependencies.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-dependencies.js","sourceRoot":"","sources":["../../src/core/skills-dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /** Parse .meowkitignore once, return a matcher function */
2
- export declare function loadIgnorePatterns(targetDir: string): (relPath: string) => boolean;
3
- /** Recursively collect files from a directory */
4
- export declare function walkDir(dir: string, base: string): Array<{
5
- relPath: string;
6
- srcPath: string;
7
- }>;
8
- /** Copy a single file, creating parent dirs. Sets executable for hooks/scripts. */
9
- export declare function copyFile(src: string, dest: string, dryRun: boolean): void;
10
- //# sourceMappingURL=smart-update-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-update-utils.d.ts","sourceRoot":"","sources":["../../src/core/smart-update-utils.ts"],"names":[],"mappings":"AAMA,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAmBlF;AAED,iDAAiD;AACjD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB9F;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAazE"}
@@ -1,61 +0,0 @@
1
- /**
2
- * Helper utilities for smart-update: file copying, .meowkitignore parsing, directory walking.
3
- */
4
- import { existsSync, readFileSync, readdirSync, statSync, mkdirSync, copyFileSync, chmodSync } from "node:fs";
5
- import { join, relative, dirname, basename } from "node:path";
6
- /** Parse .meowkitignore once, return a matcher function */
7
- export function loadIgnorePatterns(targetDir) {
8
- const ignorePath = join(targetDir, ".meowkitignore");
9
- if (!existsSync(ignorePath))
10
- return () => false;
11
- const patterns = readFileSync(ignorePath, "utf-8")
12
- .split("\n")
13
- .map((l) => l.trim())
14
- .filter((l) => l && !l.startsWith("#"));
15
- if (patterns.length === 0)
16
- return () => false;
17
- return (relPath) => {
18
- for (const p of patterns) {
19
- if (relPath === p)
20
- return true;
21
- if (p.endsWith("/") && relPath.startsWith(p))
22
- return true;
23
- if (relPath.startsWith(p + "/"))
24
- return true;
25
- }
26
- return false;
27
- };
28
- }
29
- /** Recursively collect files from a directory */
30
- export function walkDir(dir, base) {
31
- const results = [];
32
- const SKIP = new Set(["__pycache__", "node_modules", ".DS_Store"]);
33
- for (const entry of readdirSync(dir)) {
34
- if (SKIP.has(entry) || entry.endsWith(".pyc") || entry.endsWith("_INDEX.md") || entry === "SKILLS_ATTRIBUTION.md")
35
- continue;
36
- const full = join(dir, entry);
37
- const stat = statSync(full);
38
- if (stat.isDirectory()) {
39
- results.push(...walkDir(full, base));
40
- }
41
- else {
42
- results.push({ relPath: relative(base, full), srcPath: full });
43
- }
44
- }
45
- return results;
46
- }
47
- /** Copy a single file, creating parent dirs. Sets executable for hooks/scripts. */
48
- export function copyFile(src, dest, dryRun) {
49
- if (dryRun)
50
- return;
51
- mkdirSync(dirname(dest), { recursive: true });
52
- copyFileSync(src, dest);
53
- // Use path.basename(path.dirname(...)) rather than splitting on "/" because
54
- // Node's path returns platform separators (\ on Windows, / elsewhere).
55
- const parent = basename(dirname(dest));
56
- const ext = basename(dest).includes(".") ? "." + basename(dest).split(".").pop() : "";
57
- if (ext === ".sh" || ext === ".cjs" || parent === "hooks" || parent === "bin") {
58
- chmodSync(dest, 0o755);
59
- }
60
- }
61
- //# sourceMappingURL=smart-update-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-update-utils.js","sourceRoot":"","sources":["../../src/core/smart-update-utils.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { UserConfig } from "./substitute-placeholders.js";
2
- export interface UpdateStats {
3
- updated: number;
4
- skipped: number;
5
- added: number;
6
- userModified: string[];
7
- }
8
- /**
9
- * Smart update from a downloaded release directory.
10
- *
11
- * @param config - User configuration (description, API keys, etc.)
12
- * @param sourceDir - Path to extracted release (contains .claude/, tasks/, CLAUDE.md)
13
- * @param targetDir - User's project directory
14
- * @param dryRun - Preview only, no writes
15
- * @param force - Overwrite all files, ignore user modifications
16
- */
17
- export declare function smartUpdate(config: UserConfig, sourceDir: string, targetDir: string, dryRun: boolean, force?: boolean): Promise<UpdateStats>;
18
- //# sourceMappingURL=smart-update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-update.d.ts","sourceRoot":"","sources":["../../src/core/smart-update.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK/D,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAChC,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EACf,KAAK,UAAQ,GACX,OAAO,CAAC,WAAW,CAAC,CA6LtB"}
@@ -1,177 +0,0 @@
1
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
- import { join } from "node:path";
3
- import * as log from "./core-logger.js";
4
- import { processTemplate } from "./substitute-placeholders.js";
5
- import { mergeSettingsFile } from "./merge-settings.js";
6
- import { readManifest, buildManifest, writeManifest, hashFile, classifyLayer } from "./compute-checksums.js";
7
- import { loadIgnorePatterns, walkDir, copyFile } from "./smart-update-utils.js";
8
- /**
9
- * Smart update from a downloaded release directory.
10
- *
11
- * @param config - User configuration (description, API keys, etc.)
12
- * @param sourceDir - Path to extracted release (contains .claude/, tasks/, CLAUDE.md)
13
- * @param targetDir - User's project directory
14
- * @param dryRun - Preview only, no writes
15
- * @param force - Overwrite all files, ignore user modifications
16
- */
17
- export async function smartUpdate(config, sourceDir, targetDir, dryRun, force = false) {
18
- const oldManifest = force ? null : readManifest(join(targetDir, ".claude"));
19
- const stats = { updated: 0, skipped: 0, added: 0, userModified: [] };
20
- if (!oldManifest && existsSync(join(targetDir, ".claude"))) {
21
- log.warn("No manifest found — will treat all existing files as unmodified.");
22
- }
23
- const oldChecksums = oldManifest?.checksums ?? {};
24
- const isIgnored = loadIgnorePatterns(targetDir);
25
- // Source .claude/ from downloaded release
26
- const claudeSrc = join(sourceDir, ".claude");
27
- if (!existsSync(claudeSrc)) {
28
- log.error(`Release .claude/ not found at: ${claudeSrc}`);
29
- process.exit(1);
30
- }
31
- // Walk .claude/ files from release
32
- const claudeFiles = walkDir(claudeSrc, claudeSrc).map((f) => ({ ...f, relPath: `.claude/${f.relPath}` }));
33
- for (const { relPath, srcPath } of claudeFiles) {
34
- const destPath = join(targetDir, relPath);
35
- const layer = classifyLayer(relPath);
36
- if (isIgnored(relPath)) {
37
- log.debug(`Ignored (protected): ${relPath}`);
38
- stats.skipped++;
39
- continue;
40
- }
41
- // settings.json uses append-only merge
42
- if (relPath === ".claude/settings.json") {
43
- mergeSettingsFile(srcPath, destPath, dryRun);
44
- stats.updated++;
45
- continue;
46
- }
47
- // User layer: never overwrite
48
- if (layer === "user") {
49
- if (existsSync(destPath)) {
50
- log.debug(`Skipped (user layer): ${relPath}`);
51
- stats.skipped++;
52
- }
53
- else {
54
- copyFile(srcPath, destPath, dryRun);
55
- stats.added++;
56
- }
57
- continue;
58
- }
59
- // New file → always add
60
- if (!existsSync(destPath)) {
61
- copyFile(srcPath, destPath, dryRun);
62
- log.debug(`Added (new): ${relPath}`);
63
- stats.added++;
64
- continue;
65
- }
66
- // File exists — check if user modified it
67
- const currentHash = hashFile(destPath);
68
- const manifestEntry = oldChecksums[relPath];
69
- if (manifestEntry && currentHash !== manifestEntry.sha256) {
70
- log.debug(`Skipped (user-modified): ${relPath}`);
71
- stats.userModified.push(relPath);
72
- stats.skipped++;
73
- continue;
74
- }
75
- // Safe to overwrite
76
- copyFile(srcPath, destPath, dryRun);
77
- stats.updated++;
78
- }
79
- // Copy tasks/ from release
80
- const tasksSrc = join(sourceDir, "tasks");
81
- if (existsSync(tasksSrc)) {
82
- const taskFiles = walkDir(tasksSrc, tasksSrc).map((f) => ({ ...f, relPath: `tasks/${f.relPath}` }));
83
- for (const { relPath, srcPath: tSrc } of taskFiles) {
84
- const tDest = join(targetDir, relPath);
85
- if (!existsSync(tDest)) {
86
- copyFile(tSrc, tDest, dryRun);
87
- stats.added++;
88
- }
89
- }
90
- if (!dryRun) {
91
- for (const dir of ["tasks/active", "tasks/completed", "tasks/backlog", "tasks/guidelines"]) {
92
- mkdirSync(join(targetDir, dir), { recursive: true });
93
- }
94
- }
95
- }
96
- const claudeDir = join(targetDir, ".claude");
97
- // CLAUDE.md at project root
98
- const claudeMdSrc = join(sourceDir, "CLAUDE.md");
99
- const claudeMdDest = join(targetDir, "CLAUDE.md");
100
- if (existsSync(claudeMdSrc) && !existsSync(claudeMdDest)) {
101
- processTemplate(claudeMdSrc, claudeMdDest, config, dryRun);
102
- stats.added++;
103
- }
104
- // meowkit.config.json template (generated, not from release)
105
- const configDest = join(claudeDir, "meowkit.config.json");
106
- if (!existsSync(configDest)) {
107
- if (!dryRun) {
108
- mkdirSync(claudeDir, { recursive: true });
109
- const configContent = JSON.stringify({
110
- $schema: "https://meowkit.dev/schema/config.json",
111
- version: "1.0.0",
112
- project: { description: config.description || "" },
113
- features: { costTracking: config.enableCostTracking, memory: config.enableMemory },
114
- }, null, 2);
115
- writeFileSync(configDest, configContent + "\n", "utf-8");
116
- }
117
- stats.added++;
118
- }
119
- // Write .env with API keys (single read-modify-write cycle)
120
- const envPath = join(claudeDir, ".env");
121
- const hasNewKeys = config.geminiApiKey || config.externalProviderKeys;
122
- if (hasNewKeys) {
123
- let envContent = existsSync(envPath)
124
- ? readFileSync(envPath, "utf-8")
125
- : "# MeowKit environment variables\n# Never commit this file to git.\n\n";
126
- if (config.geminiApiKey && !envContent.includes("MEOWKIT_GEMINI_API_KEY=")) {
127
- envContent += `MEOWKIT_GEMINI_API_KEY=${config.geminiApiKey}\n`;
128
- }
129
- // Legacy migration: if GEMINI_API_KEY exists but MEOWKIT_ doesn't, add it
130
- if (!config.geminiApiKey &&
131
- envContent.includes("GEMINI_API_KEY=") &&
132
- !envContent.includes("MEOWKIT_GEMINI_API_KEY=")) {
133
- const match = envContent.match(/^GEMINI_API_KEY=(.+)$/m);
134
- if (match?.[1]?.trim()) {
135
- envContent += `MEOWKIT_GEMINI_API_KEY=${match[1].trim()}\n`;
136
- }
137
- }
138
- if (config.externalProviderKeys) {
139
- for (const [envVar, value] of Object.entries(config.externalProviderKeys)) {
140
- if (!envContent.includes(`${envVar}=`)) {
141
- envContent += `${envVar}=${value}\n`;
142
- }
143
- }
144
- }
145
- if (!dryRun) {
146
- writeFileSync(envPath, envContent, "utf-8");
147
- }
148
- stats.added++;
149
- // Ensure .gitignore covers .claude/.env (prevents accidental commits)
150
- const gitignorePath = join(targetDir, ".gitignore");
151
- if (!dryRun) {
152
- let gitignoreContent = existsSync(gitignorePath) ? readFileSync(gitignorePath, "utf-8") : "";
153
- if (!gitignoreContent.includes(".claude/.env")) {
154
- gitignoreContent += "\n# MeowKit secrets\n.claude/.env\n";
155
- writeFileSync(gitignorePath, gitignoreContent, "utf-8");
156
- }
157
- }
158
- }
159
- // Ensure memory + logs dirs exist
160
- if (!dryRun) {
161
- mkdirSync(join(targetDir, ".claude", "memory"), { recursive: true });
162
- mkdirSync(join(targetDir, ".claude", "logs"), { recursive: true });
163
- }
164
- // Write manifest
165
- if (!dryRun) {
166
- const newManifest = buildManifest(claudeDir);
167
- writeManifest(claudeDir, newManifest);
168
- }
169
- log.setData("update", {
170
- updated: stats.updated,
171
- skipped: stats.skipped,
172
- added: stats.added,
173
- userModified: stats.userModified,
174
- });
175
- return stats;
176
- }
177
- //# sourceMappingURL=smart-update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-update.js","sourceRoot":"","sources":["../../src/core/smart-update.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /** User configuration for template substitution */
2
- export interface UserConfig {
3
- description: string;
4
- enableCostTracking: boolean;
5
- enableMemory: boolean;
6
- geminiApiKey: string | null;
7
- externalProviderKeys?: Record<string, string>;
8
- }
9
- /** Process a .template file: substitute placeholders, write to destPath */
10
- export declare function processTemplate(templatePath: string, destPath: string, config: UserConfig, dryRun: boolean): void;
11
- //# sourceMappingURL=substitute-placeholders.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"substitute-placeholders.d.ts","sourceRoot":"","sources":["../../src/core/substitute-placeholders.ts"],"names":[],"mappings":"AAIA,mDAAmD;AACnD,MAAM,WAAW,UAAU;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAcD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAejH"}
@@ -1,28 +0,0 @@
1
- import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
- import { dirname } from "node:path";
3
- import pc from "picocolors";
4
- const PREFIX = "__MEOWKIT_";
5
- const SUFFIX = "__";
6
- /** Builds placeholder → value map from user config */
7
- function buildReplacements(config) {
8
- return {
9
- [`${PREFIX}DESCRIPTION${SUFFIX}`]: config.description || "",
10
- [`${PREFIX}COST_TRACKING${SUFFIX}`]: String(config.enableCostTracking),
11
- [`${PREFIX}MEMORY_ENABLED${SUFFIX}`]: String(config.enableMemory),
12
- };
13
- }
14
- /** Process a .template file: substitute placeholders, write to destPath */
15
- export function processTemplate(templatePath, destPath, config, dryRun) {
16
- if (dryRun) {
17
- console.log(` ${pc.dim("create")} ${destPath}`);
18
- return;
19
- }
20
- let content = readFileSync(templatePath, "utf-8");
21
- const replacements = buildReplacements(config);
22
- for (const [key, value] of Object.entries(replacements)) {
23
- content = content.replaceAll(key, value);
24
- }
25
- mkdirSync(dirname(destPath), { recursive: true });
26
- writeFileSync(destPath, content, "utf-8");
27
- }
28
- //# sourceMappingURL=substitute-placeholders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"substitute-placeholders.js","sourceRoot":"","sources":["../../src/core/substitute-placeholders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAW5B,MAAM,MAAM,GAAG,YAAY,CAAC;AAC5B,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,sDAAsD;AACtD,SAAS,iBAAiB,CAAC,MAAkB;IAC5C,OAAO;QACN,CAAC,GAAG,MAAM,cAAc,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QAC3D,CAAC,GAAG,MAAM,gBAAgB,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACtE,CAAC,GAAG,MAAM,iBAAiB,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;KACjE,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,QAAgB,EAAE,MAAkB,EAAE,MAAe;IAC1G,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO;IACR,CAAC;IAED,IAAI,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,6 +0,0 @@
1
- export interface ValidationResult {
2
- valid: boolean;
3
- issues: string[];
4
- }
5
- export declare function validate(targetDir: string): ValidationResult;
6
- //# sourceMappingURL=validate-install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-install.d.ts","sourceRoot":"","sources":["../../src/core/validate-install.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAsCD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAiE5D"}