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,234 +0,0 @@
1
- /**
2
- * system-deps-registry.ts
3
- *
4
- * Single source of truth for installable system dependencies.
5
- *
6
- * WHY THIS FILE EXISTS (Q4 / locked decision #2):
7
- * The mewkit CLI used to hardcode ffmpeg + imagemagick directly in setup.ts and
8
- * doctor.ts. This refactor extracts them into a typed registry so:
9
- * 1. Skills can declare opt-in system deps via SKILL.md metadata (schema-driven).
10
- * 2. The CLI iterates the registry instead of hardcoded if/else branches.
11
- * 3. New deps (e.g. playwright-chromium) are registered here — not scattered.
12
- *
13
- * PARSE CONTRACT (optional_system_deps HTML comment):
14
- * Claude Code's native frontmatter schema does NOT support custom fields like
15
- * optional_system_deps — they are silently dropped. Skills instead declare deps in
16
- * a MEOWKIT METADATA HTML comment block inside SKILL.md:
17
- *
18
- * <!--
19
- * MEOWKIT METADATA ...:
20
- * optional_system_deps: [playwright-chromium]
21
- * -->
22
- *
23
- * parseOptionalSystemDepsFromSkillMd() finds this comment and extracts the list.
24
- * validateSkillDeclaredKeys() then checks each key against SYSTEM_DEPS — unknown
25
- * keys are rejected so no skill can request arbitrary package installs.
26
- *
27
- * Playwright version: 1.58.0 (pinned from PyPI on 2026-04-09 via WebFetch).
28
- */
29
- import { spawnSync } from "node:child_process";
30
- import path from "node:path";
31
- // ---------------------------------------------------------------------------
32
- // Registry
33
- // ---------------------------------------------------------------------------
34
- /**
35
- * Dedicated Playwright doctor check (locked decision #3):
36
- * Two probes — package import AND chromium binary presence.
37
- * Generic detectCommand is not enough here because pip install playwright
38
- * succeeds without downloading the ~130MB Chromium binary.
39
- */
40
- async function playwrightDoctorCheck(ctx) {
41
- const venvPython = path.join(ctx.projectRoot, ".claude", "skills", ".venv", "bin", "python3");
42
- // On Windows the venv layout differs
43
- const venvPythonWin = path.join(ctx.projectRoot, ".claude", "skills", ".venv", "Scripts", "python.exe");
44
- const python = process.platform === "win32" ? venvPythonWin : venvPython;
45
- // Probe 1: can we import playwright?
46
- const importProbe = spawnSync(python, ["-c", "import playwright"], {
47
- encoding: "utf-8",
48
- stdio: ["pipe", "pipe", "pipe"],
49
- });
50
- if (importProbe.status !== 0) {
51
- return {
52
- status: "MISSING_PACKAGE",
53
- message: "playwright Python package not installed — run: npx mewkit setup --system-deps",
54
- };
55
- }
56
- // Probe 2: is the Chromium binary installed?
57
- // playwright install --dry-run chromium exits 0 and prints "chromium" if installed
58
- const venvPlaywright = process.platform === "win32"
59
- ? path.join(ctx.projectRoot, ".claude", "skills", ".venv", "Scripts", "playwright.exe")
60
- : path.join(ctx.projectRoot, ".claude", "skills", ".venv", "bin", "playwright");
61
- const dryRunProbe = spawnSync(venvPlaywright, ["install", "--dry-run", "chromium"], {
62
- encoding: "utf-8",
63
- stdio: ["pipe", "pipe", "pipe"],
64
- });
65
- // --dry-run output contains "chromium" when already installed (no-op)
66
- // If it returns non-zero or output doesn't mention chromium, binary is missing
67
- const combinedOutput = (dryRunProbe.stdout ?? "") + (dryRunProbe.stderr ?? "");
68
- if (dryRunProbe.status !== 0 || !combinedOutput.toLowerCase().includes("chromium")) {
69
- return {
70
- status: "MISSING_BINARY",
71
- message: "Chromium binary not installed — run: npx mewkit setup --system-deps",
72
- };
73
- }
74
- return { status: "OK" };
75
- }
76
- /**
77
- * All registered system dependencies.
78
- * Insertion order = display order in prompts (ffmpeg, imagemagick, playwright-chromium).
79
- */
80
- export const SYSTEM_DEPS = {
81
- ffmpeg: {
82
- key: "ffmpeg",
83
- name: "FFmpeg",
84
- detectCommand: "ffmpeg",
85
- installCommands: {
86
- darwin: ["brew install ffmpeg"],
87
- linux: [
88
- // apt-get
89
- "apt-get install -y ffmpeg",
90
- // dnf fallback handled at runtime in setup.ts by checking available pkg manager
91
- ],
92
- win32: [],
93
- },
94
- manualUrl: "https://ffmpeg.org/download.html",
95
- sizeBytes: 50_000_000,
96
- },
97
- imagemagick: {
98
- key: "imagemagick",
99
- name: "ImageMagick",
100
- // IM 6 ships "convert"; IM 7+ ships "magick" with no "convert" shim.
101
- // detectCommands ensures presence is detected regardless of which version is installed.
102
- detectCommand: "convert",
103
- detectCommands: ["convert", "magick"],
104
- installCommands: {
105
- darwin: ["brew install imagemagick"],
106
- linux: ["apt-get install -y imagemagick"],
107
- win32: [],
108
- },
109
- manualUrl: "https://imagemagick.org/script/download.php",
110
- sizeBytes: 20_000_000,
111
- },
112
- // Playwright version: 1.58.0 — pinned from PyPI on 2026-04-09 via WebFetch
113
- // Source: https://pypi.org/pypi/playwright/json → info.version = "1.58.0"
114
- "playwright-chromium": {
115
- key: "playwright-chromium",
116
- name: "Playwright + Chromium",
117
- // Detect by importing the Python package (not a PATH command)
118
- detectCommand: ".claude/skills/.venv/bin/python3 -c 'import playwright'",
119
- installCommands: {
120
- darwin: [
121
- ".claude/skills/.venv/bin/pip install playwright==1.58.0",
122
- ".claude/skills/.venv/bin/playwright install chromium",
123
- ],
124
- linux: [
125
- ".claude/skills/.venv/bin/pip install playwright==1.58.0",
126
- ".claude/skills/.venv/bin/playwright install chromium",
127
- ],
128
- win32: [
129
- ".claude\\skills\\.venv\\Scripts\\pip install playwright==1.58.0",
130
- ".claude\\skills\\.venv\\Scripts\\playwright install chromium",
131
- ],
132
- },
133
- sizeBytes: 200_000_000,
134
- manualUrl: "https://playwright.dev/python/docs/intro",
135
- doctorCheck: playwrightDoctorCheck,
136
- },
137
- };
138
- // ---------------------------------------------------------------------------
139
- // Helpers
140
- // ---------------------------------------------------------------------------
141
- /** Return all registered entries in insertion order */
142
- export function listDeps() {
143
- return Object.values(SYSTEM_DEPS);
144
- }
145
- /**
146
- * Check whether a PATH-based dep's binary (or any of its aliases) is present.
147
- * Uses detectCommands when set (multi-probe); falls back to single detectCommand probe.
148
- *
149
- * NOT suitable for venv-based deps (playwright-chromium) — callers must handle
150
- * those separately (detectCommand includes ".venv").
151
- */
152
- export function isDepCommandPresent(dep, commandAvailableFn) {
153
- const probes = dep.detectCommands ?? [dep.detectCommand];
154
- return probes.some((cmd) => commandAvailableFn(cmd));
155
- }
156
- /** Look up a single entry by key */
157
- export function getDep(key) {
158
- return SYSTEM_DEPS[key];
159
- }
160
- /**
161
- * Validate keys declared in a skill's optional_system_deps against the registry.
162
- * Unknown keys are rejected to prevent skills from requesting arbitrary installs.
163
- *
164
- * @param declared Keys parsed from SKILL.md optional_system_deps comment
165
- * @param skillName Used in warning messages for traceability
166
- */
167
- export function validateSkillDeclaredKeys(declared, skillName) {
168
- const valid = [];
169
- const invalid = [];
170
- for (const key of declared) {
171
- if (SYSTEM_DEPS[key]) {
172
- valid.push(key);
173
- }
174
- else {
175
- console.warn(`[mewkit] Skill "${skillName}" declares unknown system dep "${key}" — ignored. ` +
176
- `Register it in lib/system-deps-registry.ts to allow installation.`);
177
- invalid.push(key);
178
- }
179
- }
180
- return { valid, invalid };
181
- }
182
- /**
183
- * Parse optional_system_deps from a SKILL.md HTML comment block.
184
- *
185
- * PARSE CONTRACT:
186
- * The parser looks for a comment starting with "MEOWKIT METADATA" and extracts
187
- * the "optional_system_deps:" line from it. Handles both single-line and
188
- * multi-line YAML-ish list formats:
189
- *
190
- * optional_system_deps: [playwright-chromium]
191
- * optional_system_deps: [playwright-chromium, ffmpeg]
192
- *
193
- * Multi-line YAML block format (not currently used but handled):
194
- * optional_system_deps:
195
- * - playwright-chromium
196
- *
197
- * Returns an empty array if the comment or field is absent.
198
- *
199
- * WHY NOT NATIVE FRONTMATTER (Q4 decision):
200
- * Claude Code's frontmatter schema only supports a fixed set of native fields.
201
- * Custom fields like optional_system_deps are silently dropped. The HTML comment
202
- * approach is the agreed MeowKit convention for skill metadata that the CLI needs
203
- * but Claude Code should ignore.
204
- */
205
- export function parseOptionalSystemDepsFromSkillMd(skillMdContent) {
206
- // Find the MEOWKIT METADATA comment block
207
- const commentMatch = skillMdContent.match(/<!--\s*\n\s*MEOWKIT METADATA[\s\S]*?-->/);
208
- if (!commentMatch)
209
- return [];
210
- const block = commentMatch[0];
211
- // Inline bracket format: optional_system_deps: [key1, key2]
212
- const inlineMatch = block.match(/optional_system_deps:\s*\[([^\]]*)\]/);
213
- if (inlineMatch) {
214
- const raw = inlineMatch[1] ?? "";
215
- return raw
216
- .split(",")
217
- .map((s) => s.trim())
218
- .filter((s) => s.length > 0);
219
- }
220
- // Multi-line YAML block format:
221
- // optional_system_deps:
222
- // - key1
223
- // - key2
224
- const blockMatch = block.match(/optional_system_deps:\s*\n((?:\s*-\s*\S+\s*\n?)+)/);
225
- if (blockMatch) {
226
- const lines = blockMatch[1] ?? "";
227
- return lines
228
- .split("\n")
229
- .map((l) => l.replace(/^\s*-\s*/, "").trim())
230
- .filter((s) => s.length > 0);
231
- }
232
- return [];
233
- }
234
- //# sourceMappingURL=system-deps-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system-deps-registry.js","sourceRoot":"","sources":["../../src/lib/system-deps-registry.ts"],"names":[],"mappings":"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"}
package/dist/logger.d.ts DELETED
@@ -1,26 +0,0 @@
1
- /** Output modes controlled by --json and --verbose flags */
2
- interface LoggerOptions {
3
- json: boolean;
4
- verbose: boolean;
5
- }
6
- /** Initialize logger with CLI flags. Call once at startup. */
7
- export declare function initLogger(opts: Partial<LoggerOptions> & {
8
- command?: string;
9
- }): void;
10
- /** Info message (always shown in text mode, accumulated in json mode) */
11
- export declare function info(msg: string): void;
12
- /** Success message with green checkmark */
13
- export declare function success(msg: string): void;
14
- /** Warning message */
15
- export declare function warn(msg: string): void;
16
- /** Error message. Sets json output success=false. */
17
- export declare function error(msg: string): void;
18
- /** Debug message (only in --verbose mode) */
19
- export declare function debug(msg: string): void;
20
- /** Set structured data for json output */
21
- export declare function setData(key: string, value: unknown): void;
22
- /** Flush json output at end of command. No-op in text mode. */
23
- export declare function flush(): void;
24
- /** Check if json mode is active */
25
- export declare function isJson(): boolean;
26
- export {};
package/dist/logger.js DELETED
@@ -1,70 +0,0 @@
1
- import pc from "picocolors";
2
- let options = { json: false, verbose: false };
3
- let jsonOutput = { success: true, command: "", data: {}, messages: [] };
4
- /** Initialize logger with CLI flags. Call once at startup. */
5
- export function initLogger(opts) {
6
- options = { json: opts.json ?? false, verbose: opts.verbose ?? false };
7
- jsonOutput = { success: true, command: opts.command ?? "", data: {}, messages: [] };
8
- }
9
- /** Info message (always shown in text mode, accumulated in json mode) */
10
- export function info(msg) {
11
- if (options.json) {
12
- jsonOutput.messages.push({ level: "info", text: msg });
13
- }
14
- else {
15
- console.log(msg);
16
- }
17
- }
18
- /** Success message with green checkmark */
19
- export function success(msg) {
20
- if (options.json) {
21
- jsonOutput.messages.push({ level: "success", text: msg });
22
- }
23
- else {
24
- console.log(`${pc.green("✓")} ${msg}`);
25
- }
26
- }
27
- /** Warning message */
28
- export function warn(msg) {
29
- if (options.json) {
30
- jsonOutput.messages.push({ level: "warn", text: msg });
31
- }
32
- else {
33
- console.warn(pc.yellow(`⚠ ${msg}`));
34
- }
35
- }
36
- /** Error message. Sets json output success=false. */
37
- export function error(msg) {
38
- jsonOutput.success = false;
39
- if (options.json) {
40
- jsonOutput.messages.push({ level: "error", text: msg });
41
- }
42
- else {
43
- console.error(pc.red(`✗ ${msg}`));
44
- }
45
- }
46
- /** Debug message (only in --verbose mode) */
47
- export function debug(msg) {
48
- if (options.json) {
49
- if (options.verbose)
50
- jsonOutput.messages.push({ level: "debug", text: msg });
51
- }
52
- else if (options.verbose) {
53
- console.log(pc.dim(`[debug] ${msg}`));
54
- }
55
- }
56
- /** Set structured data for json output */
57
- export function setData(key, value) {
58
- jsonOutput.data[key] = value;
59
- }
60
- /** Flush json output at end of command. No-op in text mode. */
61
- export function flush() {
62
- if (options.json) {
63
- console.log(JSON.stringify(jsonOutput, null, 2));
64
- }
65
- }
66
- /** Check if json mode is active */
67
- export function isJson() {
68
- return options.json;
69
- }
70
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=frontmatter-parser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter-parser.test.d.ts","sourceRoot":"","sources":["../../../src/migrate/__tests__/frontmatter-parser.test.ts"],"names":[],"mappings":""}
@@ -1,73 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { parseFrontmatter } from "../frontmatter-parser.js";
3
- describe("parseFrontmatter", () => {
4
- it("parses standard YAML frontmatter", () => {
5
- const result = parseFrontmatter(`---
6
- name: scout
7
- description: Quick file scout
8
- model: opus
9
- ---
10
- Body content here`);
11
- expect(result.frontmatter.name).toBe("scout");
12
- expect(result.frontmatter.description).toBe("Quick file scout");
13
- expect(result.frontmatter.model).toBe("opus");
14
- expect(result.body).toBe("Body content here");
15
- expect(result.warnings).toEqual([]);
16
- });
17
- it("returns empty frontmatter when no fence", () => {
18
- const result = parseFrontmatter("Just a body, no frontmatter");
19
- expect(result.frontmatter).toEqual({});
20
- expect(result.body).toBe("Just a body, no frontmatter");
21
- });
22
- it("strips BOM from input", () => {
23
- const result = parseFrontmatter(`---
24
- name: scout
25
- ---
26
- Body`);
27
- expect(result.frontmatter.name).toBe("scout");
28
- });
29
- it("handles CRLF line endings", () => {
30
- const result = parseFrontmatter("---\r\nname: scout\r\n---\r\nBody");
31
- expect(result.frontmatter.name).toBe("scout");
32
- });
33
- it("normalizes argument-hint to argumentHint", () => {
34
- const result = parseFrontmatter(`---
35
- argument-hint: <agent-name>
36
- ---
37
- `);
38
- expect(result.frontmatter.argumentHint).toBe("<agent-name>");
39
- });
40
- it("preserves extra unknown fields", () => {
41
- const result = parseFrontmatter(`---
42
- name: foo
43
- custom-field: bar
44
- ---
45
- Body`);
46
- expect(result.frontmatter["custom-field"]).toBe("bar");
47
- expect(result.frontmatter.name).toBe("foo");
48
- });
49
- it("truncates over-long description with warning", () => {
50
- const longDesc = "x".repeat(600);
51
- const result = parseFrontmatter(`---
52
- description: ${longDesc}
53
- ---
54
- `);
55
- expect(result.frontmatter.description?.length).toBeLessThanOrEqual(500);
56
- expect(result.warnings.some((w) => /description.*truncated/.test(w))).toBe(true);
57
- });
58
- it("falls through to fallback parser on YAML errors", () => {
59
- // Unquoted YAML value with colon — strict YAML would fail; fallback should rescue
60
- const result = parseFrontmatter(`---
61
- description: Tools: read, write, edit
62
- ---
63
- Body`);
64
- // Either YAML or fallback — both should produce something usable
65
- expect(result.body).toBeTruthy();
66
- });
67
- it("handles whitespace-only frontmatter block", () => {
68
- const result = parseFrontmatter("---\n\n---\nJust body");
69
- expect(result.frontmatter).toEqual({});
70
- expect(result.body).toBe("Just body");
71
- });
72
- });
73
- //# sourceMappingURL=frontmatter-parser.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter-parser.test.js","sourceRoot":"","sources":["../../../src/migrate/__tests__/frontmatter-parser.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=md-strip-mewkit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"md-strip-mewkit.test.d.ts","sourceRoot":"","sources":["../../../src/migrate/__tests__/md-strip-mewkit.test.ts"],"names":[],"mappings":""}
@@ -1,55 +0,0 @@
1
- // Tests for mewkit-specific additions to md-strip (CLI verb rewrites + slash refs).
2
- import { describe, expect, it } from "vitest";
3
- import { stripClaudeRefs } from "../converters/md-strip.js";
4
- describe("stripClaudeRefs — mewkit additions", () => {
5
- it("rewrites mewkit init to provider-neutral phrasing", () => {
6
- const { content } = stripClaudeRefs("Run mewkit init to set up.", { provider: "cursor" });
7
- expect(content.toLowerCase()).toContain("scaffold the kit");
8
- expect(content.toLowerCase()).not.toContain("mewkit init");
9
- });
10
- it("rewrites npx mewkit migrate", () => {
11
- const { content } = stripClaudeRefs("Run npx mewkit migrate to export.", { provider: "cursor" });
12
- expect(content.toLowerCase()).toContain("migrate the kit");
13
- });
14
- it("rewrites meowkit <verb> generically", () => {
15
- const { content } = stripClaudeRefs("Run meowkit upgrade for updates.", { provider: "cursor" });
16
- expect(content.toLowerCase()).toContain("kit upgrade");
17
- });
18
- it("strips /meow: slash command refs", () => {
19
- const { content } = stripClaudeRefs("Use /meow:cook to start.", { provider: "cursor" });
20
- expect(content).not.toContain("/meow:cook");
21
- });
22
- it("strips /mk: shortform slash refs", () => {
23
- const { content } = stripClaudeRefs("Try /mk:plan first.", { provider: "cursor" });
24
- expect(content).not.toContain("/mk:plan");
25
- });
26
- it("preserves real filesystem paths (e.g. /src/app.ts)", () => {
27
- const { content } = stripClaudeRefs("Edit /src/app.ts for changes.", { provider: "cursor" });
28
- expect(content).toContain("/src/app.ts");
29
- });
30
- it("preserves mewkit slash refs inside code blocks", () => {
31
- const input = "Try this:\n```\n/meow:cook\n```\nEnd.";
32
- const { content } = stripClaudeRefs(input, { provider: "cursor" });
33
- expect(content).toContain("/meow:cook");
34
- });
35
- it("rewrites .claude/agents/ paths to provider-specific paths", () => {
36
- const { content } = stripClaudeRefs("See .claude/agents/scout.md", { provider: "cursor" });
37
- expect(content).not.toContain(".claude/agents/");
38
- });
39
- it("replaces CLAUDE.md with provider config target", () => {
40
- const { content } = stripClaudeRefs("See CLAUDE.md for details.", { provider: "cursor" });
41
- expect(content).not.toContain("CLAUDE.md");
42
- });
43
- it("warns when content is empty after stripping", () => {
44
- const { warnings } = stripClaudeRefs("/meow:cook", { provider: "cursor" });
45
- // The slash command alone strips to nothing
46
- expect(warnings.some((w) => /Claude-specific/.test(w))).toBe(true);
47
- });
48
- it("respects max content size guard", () => {
49
- const huge = "x".repeat(600_000);
50
- const { content, warnings } = stripClaudeRefs(huge, { provider: "cursor" });
51
- expect(content).toBe(huge);
52
- expect(warnings.some((w) => /exceeds.*chars/.test(w))).toBe(true);
53
- });
54
- });
55
- //# sourceMappingURL=md-strip-mewkit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"md-strip-mewkit.test.js","sourceRoot":"","sources":["../../../src/migrate/__tests__/md-strip-mewkit.test.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7F,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GAAG,uCAAuC,CAAC;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3E,4CAA4C;QAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=migrate-scope-resolver.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate-scope-resolver.test.d.ts","sourceRoot":"","sources":["../../../src/migrate/__tests__/migrate-scope-resolver.test.ts"],"names":[],"mappings":""}
@@ -1,53 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { resolveMigrationScope } from "../migrate-scope-resolver.js";
3
- describe("resolveMigrationScope", () => {
4
- it("default: all six types enabled", () => {
5
- const scope = resolveMigrationScope([], {});
6
- expect(scope).toEqual({
7
- agents: true, commands: true, skills: true, config: true, rules: true, hooks: true,
8
- });
9
- });
10
- it("--only=skills,hooks narrows scope", () => {
11
- const scope = resolveMigrationScope([], { only: "skills,hooks" });
12
- expect(scope).toEqual({
13
- agents: false, commands: false, skills: true, config: false, rules: false, hooks: true,
14
- });
15
- });
16
- it("--only conflicts with --skip-config", () => {
17
- expect(() => resolveMigrationScope([], { only: "skills", skipConfig: true })).toThrow(/mutually exclusive/);
18
- });
19
- it("--skip-config excludes config only", () => {
20
- const scope = resolveMigrationScope(["--skip-config"], { skipConfig: true });
21
- expect(scope.config).toBe(false);
22
- expect(scope.agents).toBe(true);
23
- });
24
- it("--no-config (alias) also excludes config", () => {
25
- const scope = resolveMigrationScope(["--no-config"], {});
26
- expect(scope.config).toBe(false);
27
- });
28
- it("positive --config flag: only-mode enables only config", () => {
29
- const scope = resolveMigrationScope(["--config"], {});
30
- expect(scope).toEqual({
31
- agents: false, commands: false, skills: false, config: true, rules: false, hooks: false,
32
- });
33
- });
34
- it("multiple positive flags: only those enabled", () => {
35
- const scope = resolveMigrationScope(["--config", "--rules"], {});
36
- expect(scope.config).toBe(true);
37
- expect(scope.rules).toBe(true);
38
- expect(scope.agents).toBe(false);
39
- expect(scope.hooks).toBe(false);
40
- });
41
- it("--only ignores unknown types silently", () => {
42
- const scope = resolveMigrationScope([], { only: "skills,bogus" });
43
- expect(scope.skills).toBe(true);
44
- expect(scope.agents).toBe(false);
45
- });
46
- it("--skip-hooks alone keeps everything else", () => {
47
- const scope = resolveMigrationScope(["--skip-hooks"], { skipHooks: true });
48
- expect(scope.hooks).toBe(false);
49
- expect(scope.agents).toBe(true);
50
- expect(scope.skills).toBe(true);
51
- });
52
- });
53
- //# sourceMappingURL=migrate-scope-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate-scope-resolver.test.js","sourceRoot":"","sources":["../../../src/migrate/__tests__/migrate-scope-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=process-lock.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-lock.test.d.ts","sourceRoot":"","sources":["../../../src/migrate/__tests__/process-lock.test.ts"],"names":[],"mappings":""}
@@ -1,63 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
2
- import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- // Test the process-lock semantics directly. We can't easily intercept the home dir
6
- // the production module uses, so we test the algorithm by importing functions and
7
- // stubbing path resolution via env. Simplification: test the public surface end-to-end
8
- // using a temp project dir.
9
- import { acquireMigrationLock, releaseMigrationLock } from "../reconcile/process-lock.js";
10
- describe("process-lock", () => {
11
- let testDir;
12
- let originalCwd;
13
- beforeEach(() => {
14
- originalCwd = process.cwd();
15
- testDir = join(tmpdir(), `mewkit-lock-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
16
- mkdirSync(testDir, { recursive: true });
17
- process.chdir(testDir);
18
- });
19
- afterEach(() => {
20
- process.chdir(originalCwd);
21
- rmSync(testDir, { recursive: true, force: true });
22
- });
23
- it("acquires lock when none exists", async () => {
24
- const result = await acquireMigrationLock({ scope: "project" });
25
- expect(result.acquired).toBe(true);
26
- expect(existsSync(result.lockPath)).toBe(true);
27
- await releaseMigrationLock(result.lockPath);
28
- expect(existsSync(result.lockPath)).toBe(false);
29
- });
30
- it("refuses second acquisition while live PID holds lock", async () => {
31
- // First acquire — uses our process.pid (which is alive)
32
- const first = await acquireMigrationLock({ scope: "project" });
33
- expect(first.acquired).toBe(true);
34
- // Second attempt should refuse because our PID is alive
35
- const second = await acquireMigrationLock({ scope: "project" });
36
- expect(second.acquired).toBe(false);
37
- expect(second.heldBy).toBe(process.pid);
38
- await releaseMigrationLock(first.lockPath);
39
- });
40
- it("auto-clears stale lock with dead PID", async () => {
41
- // Discover the lock path the function actually uses (vitest workers can have
42
- // stale process.cwd state — easier to probe than to fight it).
43
- const probe = await acquireMigrationLock({ scope: "project" });
44
- expect(probe.acquired).toBe(true);
45
- const liveLockPath = probe.lockPath;
46
- await releaseMigrationLock(liveLockPath);
47
- // Plant a stale lock with definitely-dead PID at the actual path
48
- const lockDir = join(liveLockPath, "..");
49
- mkdirSync(lockDir, { recursive: true });
50
- writeFileSync(liveLockPath, "999999\n0\n", "utf-8");
51
- // Acquisition should clear stale lock and succeed
52
- const result = await acquireMigrationLock({ scope: "project" });
53
- expect(result.acquired).toBe(true);
54
- expect(result.lockPath).toBe(liveLockPath);
55
- await releaseMigrationLock(result.lockPath);
56
- });
57
- it("release is idempotent (safe to call when lock missing)", async () => {
58
- const fakeLockPath = join(testDir, ".mewkit", ".lock");
59
- // Don't create the lock — just call release
60
- await expect(releaseMigrationLock(fakeLockPath)).resolves.not.toThrow();
61
- });
62
- });
63
- //# sourceMappingURL=process-lock.test.js.map