mewkit 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +7 -0
  2. package/dist/commands/capabilities.d.ts +13 -0
  3. package/dist/commands/capabilities.d.ts.map +1 -0
  4. package/dist/commands/capabilities.js +230 -0
  5. package/dist/commands/capabilities.js.map +1 -0
  6. package/dist/commands/context.d.ts +10 -0
  7. package/dist/commands/context.d.ts.map +1 -0
  8. package/dist/commands/context.js +125 -0
  9. package/dist/commands/context.js.map +1 -0
  10. package/dist/commands/doctor.d.ts +27 -0
  11. package/dist/commands/doctor.d.ts.map +1 -1
  12. package/dist/commands/doctor.js +123 -0
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/providers.d.ts +2 -0
  15. package/dist/commands/providers.d.ts.map +1 -1
  16. package/dist/commands/providers.js +77 -0
  17. package/dist/commands/providers.js.map +1 -1
  18. package/dist/commands/task-state.d.ts +13 -0
  19. package/dist/commands/task-state.d.ts.map +1 -0
  20. package/dist/commands/task-state.js +106 -0
  21. package/dist/commands/task-state.js.map +1 -0
  22. package/dist/commands/validate.d.ts +48 -1
  23. package/dist/commands/validate.d.ts.map +1 -1
  24. package/dist/commands/validate.js +97 -24
  25. package/dist/commands/validate.js.map +1 -1
  26. package/dist/core/availability.d.ts +40 -0
  27. package/dist/core/availability.d.ts.map +1 -0
  28. package/dist/core/availability.js +47 -0
  29. package/dist/core/availability.js.map +1 -0
  30. package/dist/core/bootstrap.d.ts +19 -0
  31. package/dist/core/bootstrap.d.ts.map +1 -0
  32. package/dist/core/bootstrap.js +42 -0
  33. package/dist/core/bootstrap.js.map +1 -0
  34. package/dist/core/build-capabilities.d.ts +9 -0
  35. package/dist/core/build-capabilities.d.ts.map +1 -0
  36. package/dist/core/build-capabilities.js +123 -0
  37. package/dist/core/build-capabilities.js.map +1 -0
  38. package/dist/core/build-inventory.d.ts +2 -0
  39. package/dist/core/build-inventory.d.ts.map +1 -1
  40. package/dist/core/build-inventory.js +1 -1
  41. package/dist/core/build-inventory.js.map +1 -1
  42. package/dist/core/capability-authored.d.ts +26 -0
  43. package/dist/core/capability-authored.d.ts.map +1 -0
  44. package/dist/core/capability-authored.js +117 -0
  45. package/dist/core/capability-authored.js.map +1 -0
  46. package/dist/core/capability-snapshot.d.ts +13 -0
  47. package/dist/core/capability-snapshot.d.ts.map +1 -0
  48. package/dist/core/capability-snapshot.js +53 -0
  49. package/dist/core/capability-snapshot.js.map +1 -0
  50. package/dist/core/capability.d.ts +519 -0
  51. package/dist/core/capability.d.ts.map +1 -0
  52. package/dist/core/capability.js +114 -0
  53. package/dist/core/capability.js.map +1 -0
  54. package/dist/core/compute-checksums.d.ts.map +1 -1
  55. package/dist/core/compute-checksums.js +8 -2
  56. package/dist/core/compute-checksums.js.map +1 -1
  57. package/dist/core/consolidation-ledger.d.ts +30 -0
  58. package/dist/core/consolidation-ledger.d.ts.map +1 -0
  59. package/dist/core/consolidation-ledger.js +145 -0
  60. package/dist/core/consolidation-ledger.js.map +1 -0
  61. package/dist/core/generate-capability-view.d.ts +21 -0
  62. package/dist/core/generate-capability-view.d.ts.map +1 -0
  63. package/dist/core/generate-capability-view.js +48 -0
  64. package/dist/core/generate-capability-view.js.map +1 -0
  65. package/dist/core/install-metadata.d.ts +47 -30
  66. package/dist/core/install-metadata.d.ts.map +1 -1
  67. package/dist/core/install-metadata.js +49 -9
  68. package/dist/core/install-metadata.js.map +1 -1
  69. package/dist/core/plugin-manifest.d.ts +16 -16
  70. package/dist/core/provider-adapter.d.ts +28 -0
  71. package/dist/core/provider-adapter.d.ts.map +1 -0
  72. package/dist/core/provider-adapter.js +31 -0
  73. package/dist/core/provider-adapter.js.map +1 -0
  74. package/dist/core/provider-invocation.d.ts +14 -0
  75. package/dist/core/provider-invocation.d.ts.map +1 -0
  76. package/dist/core/provider-invocation.js +56 -0
  77. package/dist/core/provider-invocation.js.map +1 -0
  78. package/dist/core/provider-lifecycle.d.ts +35 -0
  79. package/dist/core/provider-lifecycle.d.ts.map +1 -0
  80. package/dist/core/provider-lifecycle.js +101 -0
  81. package/dist/core/provider-lifecycle.js.map +1 -0
  82. package/dist/core/provider-projection.d.ts +29 -0
  83. package/dist/core/provider-projection.d.ts.map +1 -0
  84. package/dist/core/provider-projection.js +47 -0
  85. package/dist/core/provider-projection.js.map +1 -0
  86. package/dist/core/release-metadata.d.ts +9 -2
  87. package/dist/core/release-metadata.d.ts.map +1 -1
  88. package/dist/core/release-metadata.js +13 -0
  89. package/dist/core/release-metadata.js.map +1 -1
  90. package/dist/core/repo-context-adapter.d.ts +23 -0
  91. package/dist/core/repo-context-adapter.d.ts.map +1 -0
  92. package/dist/core/repo-context-adapter.js +44 -0
  93. package/dist/core/repo-context-adapter.js.map +1 -0
  94. package/dist/core/repo-context.d.ts +147 -0
  95. package/dist/core/repo-context.d.ts.map +1 -0
  96. package/dist/core/repo-context.js +204 -0
  97. package/dist/core/repo-context.js.map +1 -0
  98. package/dist/core/resolve-capabilities.d.ts +70 -0
  99. package/dist/core/resolve-capabilities.d.ts.map +1 -0
  100. package/dist/core/resolve-capabilities.js +124 -0
  101. package/dist/core/resolve-capabilities.js.map +1 -0
  102. package/dist/core/smart-update.d.ts.map +1 -1
  103. package/dist/core/smart-update.js +13 -12
  104. package/dist/core/smart-update.js.map +1 -1
  105. package/dist/core/task-record.d.ts +252 -0
  106. package/dist/core/task-record.d.ts.map +1 -0
  107. package/dist/core/task-record.js +252 -0
  108. package/dist/core/task-record.js.map +1 -0
  109. package/dist/core/validate-capabilities.d.ts +12 -0
  110. package/dist/core/validate-capabilities.d.ts.map +1 -0
  111. package/dist/core/validate-capabilities.js +138 -0
  112. package/dist/core/validate-capabilities.js.map +1 -0
  113. package/dist/index.js +66 -4
  114. package/dist/index.js.map +1 -1
  115. package/dist/migrate/apply-env-var-rewrites.d.ts +15 -0
  116. package/dist/migrate/apply-env-var-rewrites.d.ts.map +1 -0
  117. package/dist/migrate/apply-env-var-rewrites.js +26 -0
  118. package/dist/migrate/apply-env-var-rewrites.js.map +1 -0
  119. package/dist/migrate/capability-bootstrap-projection.d.ts +11 -0
  120. package/dist/migrate/capability-bootstrap-projection.d.ts.map +1 -0
  121. package/dist/migrate/capability-bootstrap-projection.js +48 -0
  122. package/dist/migrate/capability-bootstrap-projection.js.map +1 -0
  123. package/dist/migrate/converters/command-to-codex-skill.d.ts.map +1 -1
  124. package/dist/migrate/converters/command-to-codex-skill.js +15 -5
  125. package/dist/migrate/converters/command-to-codex-skill.js.map +1 -1
  126. package/dist/migrate/converters/fm-to-codex-toml.d.ts +4 -1
  127. package/dist/migrate/converters/fm-to-codex-toml.d.ts.map +1 -1
  128. package/dist/migrate/converters/fm-to-codex-toml.js +7 -2
  129. package/dist/migrate/converters/fm-to-codex-toml.js.map +1 -1
  130. package/dist/migrate/converters/index.js +1 -1
  131. package/dist/migrate/converters/index.js.map +1 -1
  132. package/dist/migrate/discovery/config-discovery.d.ts +29 -0
  133. package/dist/migrate/discovery/config-discovery.d.ts.map +1 -1
  134. package/dist/migrate/discovery/config-discovery.js +45 -0
  135. package/dist/migrate/discovery/config-discovery.js.map +1 -1
  136. package/dist/migrate/discovery/handlers-json-filter.d.ts.map +1 -1
  137. package/dist/migrate/discovery/handlers-json-filter.js +4 -2
  138. package/dist/migrate/discovery/handlers-json-filter.js.map +1 -1
  139. package/dist/migrate/discovery/hooks-discovery.d.ts +5 -0
  140. package/dist/migrate/discovery/hooks-discovery.d.ts.map +1 -1
  141. package/dist/migrate/discovery/hooks-discovery.js +21 -5
  142. package/dist/migrate/discovery/hooks-discovery.js.map +1 -1
  143. package/dist/migrate/hooks/codex-hook-wrapper.d.ts +15 -1
  144. package/dist/migrate/hooks/codex-hook-wrapper.d.ts.map +1 -1
  145. package/dist/migrate/hooks/codex-hook-wrapper.js +78 -7
  146. package/dist/migrate/hooks/codex-hook-wrapper.js.map +1 -1
  147. package/dist/migrate/hooks/codex-path-safety.d.ts +29 -0
  148. package/dist/migrate/hooks/codex-path-safety.d.ts.map +1 -1
  149. package/dist/migrate/hooks/codex-path-safety.js +36 -1
  150. package/dist/migrate/hooks/codex-path-safety.js.map +1 -1
  151. package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts +8 -0
  152. package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts.map +1 -0
  153. package/dist/migrate/hooks/codex-sh-wrapper-script.js +118 -0
  154. package/dist/migrate/hooks/codex-sh-wrapper-script.js.map +1 -0
  155. package/dist/migrate/hooks/codex-shell-env-installer.d.ts +14 -0
  156. package/dist/migrate/hooks/codex-shell-env-installer.d.ts.map +1 -0
  157. package/dist/migrate/hooks/codex-shell-env-installer.js +82 -0
  158. package/dist/migrate/hooks/codex-shell-env-installer.js.map +1 -0
  159. package/dist/migrate/hooks/codex-toml-installer.d.ts +2 -0
  160. package/dist/migrate/hooks/codex-toml-installer.d.ts.map +1 -1
  161. package/dist/migrate/hooks/codex-toml-installer.js +3 -1
  162. package/dist/migrate/hooks/codex-toml-installer.js.map +1 -1
  163. package/dist/migrate/hooks/hooks-settings-merger.d.ts +3 -0
  164. package/dist/migrate/hooks/hooks-settings-merger.d.ts.map +1 -1
  165. package/dist/migrate/hooks/hooks-settings-merger.js +152 -20
  166. package/dist/migrate/hooks/hooks-settings-merger.js.map +1 -1
  167. package/dist/migrate/migrate-orchestrator.d.ts +19 -0
  168. package/dist/migrate/migrate-orchestrator.d.ts.map +1 -1
  169. package/dist/migrate/migrate-orchestrator.js +176 -24
  170. package/dist/migrate/migrate-orchestrator.js.map +1 -1
  171. package/dist/migrate/migrate-ui-summary.d.ts +23 -0
  172. package/dist/migrate/migrate-ui-summary.d.ts.map +1 -1
  173. package/dist/migrate/migrate-ui-summary.js +24 -0
  174. package/dist/migrate/migrate-ui-summary.js.map +1 -1
  175. package/dist/migrate/model-routing-config.d.ts +3 -1
  176. package/dist/migrate/model-routing-config.d.ts.map +1 -1
  177. package/dist/migrate/model-routing-config.js +28 -0
  178. package/dist/migrate/model-routing-config.js.map +1 -1
  179. package/dist/migrate/portable-installer.d.ts +14 -1
  180. package/dist/migrate/portable-installer.d.ts.map +1 -1
  181. package/dist/migrate/portable-installer.js +110 -9
  182. package/dist/migrate/portable-installer.js.map +1 -1
  183. package/dist/migrate/providers/codex/capabilities.d.ts +5 -0
  184. package/dist/migrate/providers/codex/capabilities.d.ts.map +1 -1
  185. package/dist/migrate/providers/codex/capabilities.js +31 -0
  186. package/dist/migrate/providers/codex/capabilities.js.map +1 -1
  187. package/dist/migrate/providers/codex/config.d.ts.map +1 -1
  188. package/dist/migrate/providers/codex/config.js +8 -2
  189. package/dist/migrate/providers/codex/config.js.map +1 -1
  190. package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts +27 -0
  191. package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts.map +1 -0
  192. package/dist/migrate/providers/codex/shell-env-policy-emitter.js +86 -0
  193. package/dist/migrate/providers/codex/shell-env-policy-emitter.js.map +1 -0
  194. package/dist/migrate/reconcile/index.d.ts +1 -1
  195. package/dist/migrate/reconcile/index.d.ts.map +1 -1
  196. package/dist/migrate/reconcile/index.js +1 -1
  197. package/dist/migrate/reconcile/index.js.map +1 -1
  198. package/dist/migrate/reconcile/portable-manifest.d.ts +6 -0
  199. package/dist/migrate/reconcile/portable-manifest.d.ts.map +1 -1
  200. package/dist/migrate/reconcile/portable-manifest.js +23 -0
  201. package/dist/migrate/reconcile/portable-manifest.js.map +1 -1
  202. package/dist/migrate/reconcile/reconcile-state-builders.d.ts +12 -5
  203. package/dist/migrate/reconcile/reconcile-state-builders.d.ts.map +1 -1
  204. package/dist/migrate/reconcile/reconcile-state-builders.js +2 -2
  205. package/dist/migrate/reconcile/reconcile-state-builders.js.map +1 -1
  206. package/dist/migrate/references/env-var-rewrite-table.d.ts +36 -0
  207. package/dist/migrate/references/env-var-rewrite-table.d.ts.map +1 -0
  208. package/dist/migrate/references/env-var-rewrite-table.js +97 -0
  209. package/dist/migrate/references/env-var-rewrite-table.js.map +1 -0
  210. package/dist/migrate/references/reference-classifier.d.ts +15 -0
  211. package/dist/migrate/references/reference-classifier.d.ts.map +1 -1
  212. package/dist/migrate/references/reference-classifier.js +33 -0
  213. package/dist/migrate/references/reference-classifier.js.map +1 -1
  214. package/dist/migrate/runtime-compat-audit.d.ts +1 -0
  215. package/dist/migrate/runtime-compat-audit.d.ts.map +1 -1
  216. package/dist/migrate/runtime-compat-audit.js +8 -3
  217. package/dist/migrate/runtime-compat-audit.js.map +1 -1
  218. package/dist/migrate/runtime-coupling-patterns.d.ts +30 -2
  219. package/dist/migrate/runtime-coupling-patterns.d.ts.map +1 -1
  220. package/dist/migrate/runtime-coupling-patterns.js +36 -8
  221. package/dist/migrate/runtime-coupling-patterns.js.map +1 -1
  222. package/dist/migrate/skill-directory-audit.d.ts +14 -0
  223. package/dist/migrate/skill-directory-audit.d.ts.map +1 -1
  224. package/dist/migrate/skill-directory-audit.js +68 -10
  225. package/dist/migrate/skill-directory-audit.js.map +1 -1
  226. package/dist/migrate/skill-directory-installer.d.ts +3 -0
  227. package/dist/migrate/skill-directory-installer.d.ts.map +1 -1
  228. package/dist/migrate/skill-directory-installer.js +98 -1
  229. package/dist/migrate/skill-directory-installer.js.map +1 -1
  230. package/dist/migrate/state-changing-script-detector.d.ts +16 -0
  231. package/dist/migrate/state-changing-script-detector.d.ts.map +1 -0
  232. package/dist/migrate/state-changing-script-detector.js +144 -0
  233. package/dist/migrate/state-changing-script-detector.js.map +1 -0
  234. package/dist/migrate/validation/migrate-conversion-report.d.ts +28 -0
  235. package/dist/migrate/validation/migrate-conversion-report.d.ts.map +1 -1
  236. package/dist/migrate/validation/migrate-conversion-report.js +48 -7
  237. package/dist/migrate/validation/migrate-conversion-report.js.map +1 -1
  238. package/dist/migrate/validation/migration-ledger-inputs.d.ts +56 -0
  239. package/dist/migrate/validation/migration-ledger-inputs.d.ts.map +1 -0
  240. package/dist/migrate/validation/migration-ledger-inputs.js +160 -0
  241. package/dist/migrate/validation/migration-ledger-inputs.js.map +1 -0
  242. package/dist/migrate/validation/migration-record-types.d.ts +38 -0
  243. package/dist/migrate/validation/migration-record-types.d.ts.map +1 -0
  244. package/dist/migrate/validation/migration-record-types.js +12 -0
  245. package/dist/migrate/validation/migration-record-types.js.map +1 -0
  246. package/dist/migrate/validation/migration-report-writer.d.ts +98 -0
  247. package/dist/migrate/validation/migration-report-writer.d.ts.map +1 -0
  248. package/dist/migrate/validation/migration-report-writer.js +0 -0
  249. package/dist/migrate/validation/migration-report-writer.js.map +1 -0
  250. package/dist/orchviz-web/index.js +3 -3
  251. package/package.json +1 -1
  252. package/portable-manifest.json +10 -2
  253. package/dist/commands/evolve.d.ts +0 -11
  254. package/dist/commands/evolve.d.ts.map +0 -1
  255. package/dist/commands/evolve.js +0 -63
  256. package/dist/commands/evolve.js.map +0 -1
  257. package/dist/commands/health.d.ts +0 -14
  258. package/dist/commands/health.d.ts.map +0 -1
  259. package/dist/commands/health.js +0 -193
  260. package/dist/commands/health.js.map +0 -1
  261. package/dist/commands/policy.d.ts +0 -8
  262. package/dist/commands/policy.d.ts.map +0 -1
  263. package/dist/commands/policy.js +0 -65
  264. package/dist/commands/policy.js.map +0 -1
  265. package/dist/commands/portability.d.ts +0 -7
  266. package/dist/commands/portability.d.ts.map +0 -1
  267. package/dist/commands/portability.js +0 -50
  268. package/dist/commands/portability.js.map +0 -1
  269. package/dist/commands/reflect.d.ts +0 -14
  270. package/dist/commands/reflect.d.ts.map +0 -1
  271. package/dist/commands/reflect.js +0 -135
  272. package/dist/commands/reflect.js.map +0 -1
  273. package/dist/commands/simulate.d.ts +0 -14
  274. package/dist/commands/simulate.d.ts.map +0 -1
  275. package/dist/commands/simulate.js +0 -86
  276. package/dist/commands/simulate.js.map +0 -1
  277. package/dist/core/event-log.d.ts +0 -44
  278. package/dist/core/event-log.d.ts.map +0 -1
  279. package/dist/core/event-log.js +0 -169
  280. package/dist/core/event-log.js.map +0 -1
  281. package/dist/core/evolution/event-clusters.d.ts +0 -4
  282. package/dist/core/evolution/event-clusters.d.ts.map +0 -1
  283. package/dist/core/evolution/event-clusters.js +0 -82
  284. package/dist/core/evolution/event-clusters.js.map +0 -1
  285. package/dist/core/evolution/recommendation-renderer.d.ts +0 -3
  286. package/dist/core/evolution/recommendation-renderer.d.ts.map +0 -1
  287. package/dist/core/evolution/recommendation-renderer.js +0 -24
  288. package/dist/core/evolution/recommendation-renderer.js.map +0 -1
  289. package/dist/core/evolution/review-failure-clusters.d.ts +0 -10
  290. package/dist/core/evolution/review-failure-clusters.d.ts.map +0 -1
  291. package/dist/core/evolution/review-failure-clusters.js +0 -30
  292. package/dist/core/evolution/review-failure-clusters.js.map +0 -1
  293. package/dist/core/evolution/suggestions.d.ts +0 -24
  294. package/dist/core/evolution/suggestions.d.ts.map +0 -1
  295. package/dist/core/evolution/suggestions.js +0 -11
  296. package/dist/core/evolution/suggestions.js.map +0 -1
  297. package/dist/core/gate-policy.d.ts +0 -20
  298. package/dist/core/gate-policy.d.ts.map +0 -1
  299. package/dist/core/gate-policy.js +0 -64
  300. package/dist/core/gate-policy.js.map +0 -1
  301. package/dist/core/portability-matrix.d.ts +0 -17
  302. package/dist/core/portability-matrix.d.ts.map +0 -1
  303. package/dist/core/portability-matrix.js +0 -31
  304. package/dist/core/portability-matrix.js.map +0 -1
  305. package/dist/core/simulation-runner.d.ts +0 -93
  306. package/dist/core/simulation-runner.d.ts.map +0 -1
  307. package/dist/core/simulation-runner.js +0 -161
  308. package/dist/core/simulation-runner.js.map +0 -1
  309. package/dist/core/usage/usage-analyzer.d.ts +0 -18
  310. package/dist/core/usage/usage-analyzer.d.ts.map +0 -1
  311. package/dist/core/usage/usage-analyzer.js +0 -41
  312. package/dist/core/usage/usage-analyzer.js.map +0 -1
  313. package/dist/memory/archive.d.ts +0 -9
  314. package/dist/memory/archive.d.ts.map +0 -1
  315. package/dist/memory/archive.js +0 -42
  316. package/dist/memory/archive.js.map +0 -1
  317. package/dist/memory/compact.d.ts +0 -9
  318. package/dist/memory/compact.d.ts.map +0 -1
  319. package/dist/memory/compact.js +0 -33
  320. package/dist/memory/compact.js.map +0 -1
  321. package/dist/memory/conflicts.d.ts +0 -8
  322. package/dist/memory/conflicts.d.ts.map +0 -1
  323. package/dist/memory/conflicts.js +0 -28
  324. package/dist/memory/conflicts.js.map +0 -1
  325. package/dist/memory/promote.d.ts +0 -8
  326. package/dist/memory/promote.d.ts.map +0 -1
  327. package/dist/memory/promote.js +0 -10
  328. package/dist/memory/promote.js.map +0 -1
  329. package/dist/memory/store-utils.d.ts +0 -14
  330. package/dist/memory/store-utils.d.ts.map +0 -1
  331. package/dist/memory/store-utils.js +0 -44
  332. package/dist/memory/store-utils.js.map +0 -1
  333. package/dist/migrate/__tests__/frontmatter-parser.test.d.ts +0 -2
  334. package/dist/migrate/__tests__/frontmatter-parser.test.d.ts.map +0 -1
  335. package/dist/migrate/__tests__/frontmatter-parser.test.js +0 -73
  336. package/dist/migrate/__tests__/frontmatter-parser.test.js.map +0 -1
  337. package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts +0 -2
  338. package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts.map +0 -1
  339. package/dist/migrate/__tests__/md-strip-mewkit.test.js +0 -55
  340. package/dist/migrate/__tests__/md-strip-mewkit.test.js.map +0 -1
  341. package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts +0 -2
  342. package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts.map +0 -1
  343. package/dist/migrate/__tests__/migrate-scope-resolver.test.js +0 -53
  344. package/dist/migrate/__tests__/migrate-scope-resolver.test.js.map +0 -1
  345. package/dist/migrate/__tests__/process-lock.test.d.ts +0 -2
  346. package/dist/migrate/__tests__/process-lock.test.d.ts.map +0 -1
  347. package/dist/migrate/__tests__/process-lock.test.js +0 -63
  348. package/dist/migrate/__tests__/process-lock.test.js.map +0 -1
  349. package/dist/migrate/__tests__/provider-registry.test.d.ts +0 -2
  350. package/dist/migrate/__tests__/provider-registry.test.d.ts.map +0 -1
  351. package/dist/migrate/__tests__/provider-registry.test.js +0 -53
  352. package/dist/migrate/__tests__/provider-registry.test.js.map +0 -1
  353. package/dist/migrate/__tests__/reconciler.test.d.ts +0 -2
  354. package/dist/migrate/__tests__/reconciler.test.d.ts.map +0 -1
  355. package/dist/migrate/__tests__/reconciler.test.js +0 -180
  356. package/dist/migrate/__tests__/reconciler.test.js.map +0 -1
  357. package/dist/migrate/__tests__/skill-id-utils.test.d.ts +0 -2
  358. package/dist/migrate/__tests__/skill-id-utils.test.d.ts.map +0 -1
  359. package/dist/migrate/__tests__/skill-id-utils.test.js +0 -78
  360. package/dist/migrate/__tests__/skill-id-utils.test.js.map +0 -1
  361. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.d.ts +0 -15
  362. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.d.ts.map +0 -1
  363. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.js +0 -165
  364. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.js.map +0 -1
  365. package/dist/orchviz/plan/__tests__/atomic-write.test.d.ts +0 -11
  366. package/dist/orchviz/plan/__tests__/atomic-write.test.d.ts.map +0 -1
  367. package/dist/orchviz/plan/__tests__/atomic-write.test.js +0 -89
  368. package/dist/orchviz/plan/__tests__/atomic-write.test.js.map +0 -1
  369. package/dist/orchviz/plan/__tests__/end-to-end.test.d.ts +0 -10
  370. package/dist/orchviz/plan/__tests__/end-to-end.test.d.ts.map +0 -1
  371. package/dist/orchviz/plan/__tests__/end-to-end.test.js +0 -132
  372. package/dist/orchviz/plan/__tests__/end-to-end.test.js.map +0 -1
  373. package/dist/orchviz/plan/__tests__/etag.test.d.ts +0 -11
  374. package/dist/orchviz/plan/__tests__/etag.test.d.ts.map +0 -1
  375. package/dist/orchviz/plan/__tests__/etag.test.js +0 -92
  376. package/dist/orchviz/plan/__tests__/etag.test.js.map +0 -1
  377. package/dist/orchviz/plan/__tests__/list-plans.test.d.ts +0 -14
  378. package/dist/orchviz/plan/__tests__/list-plans.test.d.ts.map +0 -1
  379. package/dist/orchviz/plan/__tests__/list-plans.test.js +0 -154
  380. package/dist/orchviz/plan/__tests__/list-plans.test.js.map +0 -1
  381. package/dist/orchviz/server/__tests__/security-smoke.test.d.ts +0 -13
  382. package/dist/orchviz/server/__tests__/security-smoke.test.d.ts.map +0 -1
  383. package/dist/orchviz/server/__tests__/security-smoke.test.js +0 -207
  384. package/dist/orchviz/server/__tests__/security-smoke.test.js.map +0 -1
  385. package/dist/orchviz/server/__tests__/write-handlers.test.d.ts +0 -24
  386. package/dist/orchviz/server/__tests__/write-handlers.test.d.ts.map +0 -1
  387. package/dist/orchviz/server/__tests__/write-handlers.test.js +0 -347
  388. package/dist/orchviz/server/__tests__/write-handlers.test.js.map +0 -1
  389. package/dist/orchviz/test-server-boot.d.ts +0 -28
  390. package/dist/orchviz/test-server-boot.d.ts.map +0 -1
  391. package/dist/orchviz/test-server-boot.js +0 -64
  392. package/dist/orchviz/test-server-boot.js.map +0 -1
package/README.md CHANGED
@@ -25,6 +25,7 @@ npx mewkit <command> # Runtime commands
25
25
  | `meowkit status` | Print version, channel, and config |
26
26
  | `meowkit task new` | Create structured task file from template |
27
27
  | `meowkit task list` | List active tasks with status |
28
+ | `meowkit capabilities` | Resolve installed skills/commands/tools for an intent (`list`, `explain`, `resolve`, `projections`) |
28
29
  | `meowkit orchviz` | Live web visualizer for the active Claude Code session |
29
30
  | `meowkit pack` | `list` / `add <pack>` / `remove <pack>` — manage installed domains |
30
31
  | `meowkit migrate` | Export the `.claude/` setup to other coding agents (Codex, Cursor, …) |
@@ -59,6 +60,12 @@ What migrates where for Codex:
59
60
  | `.claude/hooks/*.cjs` | `.codex/hooks/` + `hooks.json` (version-gated events) |
60
61
  | `.mcp.json` (opt-in) | `config.toml [mcp_servers]` (`--include-mcp`) |
61
62
 
63
+ For Codex, migration also writes a bounded capability-resolution instruction to
64
+ `AGENTS.md` and a data-only `.codex/capabilities.json` snapshot. This lets an
65
+ agent run `npx mewkit capabilities resolve --intent "..." --provider codex`
66
+ even when the original `.claude/` directory is no longer present. The snapshot
67
+ is resolver data; it is not injected into model context.
68
+
62
69
  Markdown references are rewritten with a fence-aware classifier: inline
63
70
  references point at the new locations, runnable fenced commands are only
64
71
  rewritten when the referenced asset migrates in the same run (otherwise they
@@ -0,0 +1,13 @@
1
+ import type { AvailabilityProbes } from "../core/availability.js";
2
+ interface CapabilitiesOptions {
3
+ subcommand?: string;
4
+ target?: string;
5
+ json?: boolean;
6
+ intent?: string;
7
+ provider?: string;
8
+ write?: boolean;
9
+ }
10
+ export declare function capabilities(args?: CapabilitiesOptions): Promise<void>;
11
+ export declare function hostProbes(projectRoot: string): AvailabilityProbes;
12
+ export {};
13
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AASlE,UAAU,mBAAmB;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFhF;AAoDD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CA0ClE"}
@@ -0,0 +1,230 @@
1
+ // `mewkit capabilities list|explain` — read-only inspection of the model-agnostic
2
+ // capability manifest. The manifest is on-disk CLI data; it is NEVER injected into a
3
+ // model session and does not constitute agent discovery (that is Phase 3's projection).
4
+ import fs from "node:fs";
5
+ import path from "node:path";
6
+ import pc from "picocolors";
7
+ import { validateCapabilities } from "../core/validate-capabilities.js";
8
+ import { resolveWithHost } from "../core/resolve-capabilities.js";
9
+ import { renderCapabilityView } from "../core/generate-capability-view.js";
10
+ import { renderBootstrap, BOOTSTRAP_FILENAME } from "../core/bootstrap.js";
11
+ import { PROVIDER_PROJECTIONS, isProjectedProvider } from "../core/provider-projection.js";
12
+ import { findCapabilitySource } from "../core/capability-snapshot.js";
13
+ import { commandExists } from "./setup.js";
14
+ function findClaudeDir() {
15
+ const candidate = path.join(process.cwd(), ".claude");
16
+ return fs.existsSync(candidate) && fs.statSync(candidate).isDirectory() ? candidate : null;
17
+ }
18
+ export async function capabilities(args = {}) {
19
+ const sub = args.subcommand ?? "list";
20
+ // `projections` reports how the capability surface reaches each provider — static.
21
+ if (sub === "projections") {
22
+ projections(args.json ?? false);
23
+ return;
24
+ }
25
+ // `bootstrap` is a static trusted constant — no `.claude/` scan required.
26
+ if (sub === "bootstrap") {
27
+ const provider = args.provider ?? "claude-code";
28
+ if (!isProjectedProvider(provider)) {
29
+ console.error(pc.red(`No bootstrap projection for provider "${provider}" (report-only). Projected: ${Object.keys(PROVIDER_PROJECTIONS).join(", ")}.`));
30
+ process.exit(1);
31
+ }
32
+ const text = renderBootstrap(provider);
33
+ if (args.write) {
34
+ // Regenerate the committed file the SessionStart hook emits. Requires .claude/.
35
+ const dir = findClaudeDir();
36
+ if (!dir) {
37
+ console.error(pc.red("Could not find .claude/ directory to write the bootstrap file."));
38
+ process.exit(1);
39
+ }
40
+ const dest = path.join(dir, BOOTSTRAP_FILENAME);
41
+ fs.writeFileSync(dest, text + "\n", "utf-8");
42
+ console.log(pc.green(`Wrote ${path.relative(process.cwd(), dest)}`));
43
+ return;
44
+ }
45
+ console.log(text);
46
+ return;
47
+ }
48
+ const source = findCapabilitySource();
49
+ if (!source) {
50
+ console.error(pc.red("Could not find a capability source. Expected .claude/ or a Codex projection at .codex/capabilities.json. Run `npx mewkit init` or `npx mewkit migrate codex`."));
51
+ process.exit(1);
52
+ }
53
+ const entries = source.entries;
54
+ if (sub === "explain") {
55
+ explain(entries, args.target, args.json ?? false);
56
+ return;
57
+ }
58
+ if (sub === "resolve") {
59
+ resolve(entries, args.intent ?? args.target, args.provider ?? null, process.cwd(), args.json ?? false);
60
+ return;
61
+ }
62
+ if (sub === "view") {
63
+ // Generated compatible portion of the trigger registry (maintainer/CI diffs it in).
64
+ console.log(renderCapabilityView(entries));
65
+ return;
66
+ }
67
+ if (sub !== "list") {
68
+ console.error(pc.red(`Unknown capabilities subcommand "${sub}". Expected list|explain|resolve|view|bootstrap|projections.`));
69
+ process.exit(1);
70
+ }
71
+ if (args.json) {
72
+ console.log(JSON.stringify({ schemaVersion: "1.0", entries }, null, 2));
73
+ return;
74
+ }
75
+ console.log(pc.bold(pc.cyan("MeowKit Capabilities")));
76
+ const issues = source.kind === "claude-directory" ? validateCapabilities(source.path) : [];
77
+ const errors = issues.filter((i) => i.level === "error");
78
+ const warns = issues.filter((i) => i.level === "warn");
79
+ console.log(pc.dim(`${entries.length} capabilities — ${errors.length} error(s), ${warns.length} warning(s)\n`));
80
+ const byKind = new Map();
81
+ for (const e of entries)
82
+ byKind.set(e.kind, [...(byKind.get(e.kind) ?? []), e]);
83
+ for (const [kind, list] of [...byKind].sort((a, b) => (a[0] < b[0] ? -1 : 1))) {
84
+ console.log(pc.bold(kind));
85
+ for (const e of list)
86
+ console.log(` ${e.id}${e.description ? pc.dim(` — ${e.description}`) : ""}`);
87
+ console.log();
88
+ }
89
+ for (const i of errors)
90
+ console.log(` [${pc.red("ERROR")}] ${i.capabilityId ?? "-"}: ${i.message}`);
91
+ for (const i of warns)
92
+ console.log(` [${pc.yellow("WARN")}] ${i.capabilityId ?? "-"}: ${i.message}`);
93
+ if (errors.length > 0)
94
+ process.exit(1);
95
+ }
96
+ function explain(entries, target, json) {
97
+ if (!target) {
98
+ console.error(pc.red("`capabilities explain` requires a capability id."));
99
+ process.exit(1);
100
+ }
101
+ const entry = entries.find((e) => e.id === target);
102
+ if (!entry) {
103
+ console.error(pc.red(`No capability with id "${target}".`));
104
+ process.exit(1);
105
+ }
106
+ if (json) {
107
+ console.log(JSON.stringify(entry, null, 2));
108
+ return;
109
+ }
110
+ console.log(pc.bold(pc.cyan(`Capability: ${entry.id}`)));
111
+ console.log(` kind: ${entry.kind}`);
112
+ console.log(` description: ${entry.description || pc.dim("(none)")}`);
113
+ console.log(` source: ${entry.sourcePath ?? pc.dim("(authored, no disk artifact)")}`);
114
+ console.log(` owner: ${entry.owner || pc.dim("(unknown)")} / ${entry.installedState}`);
115
+ console.log(` invocation: ${entry.invocation.kind}:${entry.invocation.id}`);
116
+ console.log(` intents: ${entry.intents.length ? entry.intents.join(", ") : pc.dim("(none)")}`);
117
+ console.log(` requires: ${entry.requirements.length ? entry.requirements.map((r) => `${r.type}:${r.id}`).join(", ") : pc.dim("(none)")}`);
118
+ console.log(` verify: ${entry.verification.kind}${entry.verification.id ? `:${entry.verification.id}` : ""}`);
119
+ console.log(` provenance: ${Object.entries(entry.provenance).map(([k, v]) => `${k}=${v}`).join(", ") || pc.dim("(none)")}`);
120
+ }
121
+ /**
122
+ * Real host-availability probes for the CLI. External binaries via PATH; MCP/apps via
123
+ * `.mcp.json` presence (no secrets read); files via a containment-checked existence probe
124
+ * that returns `null` for a bare, absent id (a logical name we can't resolve to a path),
125
+ * so it surfaces as `unknown` rather than a false `unavailable`.
126
+ */
127
+ /** Report how the capability surface projects into each provider + the four support levels. */
128
+ function projections(json) {
129
+ const all = Object.values(PROVIDER_PROJECTIONS);
130
+ if (json) {
131
+ console.log(JSON.stringify(all, null, 2));
132
+ return;
133
+ }
134
+ console.log(pc.bold(pc.cyan("Capability provider projections")));
135
+ console.log(pc.dim("Four independent levels; `enforceable` is claimed only where a real gating hook exists.\n"));
136
+ for (const p of all) {
137
+ console.log(`${pc.bold(p.provider)} ${pc.dim(`(${p.status}, placement: ${p.bootstrapPlacement})`)}`);
138
+ const l = p.levels;
139
+ console.log(` discoverable=${l.discoverable} selectable=${l.selectable} invocable=${l.invocable} enforceable=${l.enforceable}`);
140
+ console.log(pc.dim(` ${p.evidence}\n`));
141
+ }
142
+ console.log(pc.dim("Providers not listed are report-only — no capability behavior is claimed for them."));
143
+ }
144
+ export function hostProbes(projectRoot) {
145
+ return {
146
+ // NOTE: PATH-only binary detection under-reports package-local CLIs (e.g. a `mewkit`
147
+ // runnable via `npx`/workspace bin but not on global PATH reads as not-found). The
148
+ // per-requirement evidence stays truthful ("PATH lookup: not found").
149
+ commandExists: (cmd) => commandExists(cmd),
150
+ containedFileExists: (id) => {
151
+ if (!id || id === ".")
152
+ return null; // not a concrete requirement path
153
+ const abs = path.resolve(projectRoot, id);
154
+ const escapes = (from, to) => {
155
+ const rel = path.relative(from, to);
156
+ return rel === ".." || rel.startsWith(".." + path.sep) || path.isAbsolute(rel);
157
+ };
158
+ if (escapes(projectRoot, abs))
159
+ return false; // lexical escape
160
+ if (fs.existsSync(abs)) {
161
+ // True containment: resolve symlinks so an in-root link pointing outside the
162
+ // tree is rejected, not followed (a lexical check alone would pass it).
163
+ try {
164
+ if (escapes(fs.realpathSync(projectRoot), fs.realpathSync(abs)))
165
+ return false;
166
+ }
167
+ catch {
168
+ return false;
169
+ }
170
+ return true;
171
+ }
172
+ // Absent: a path-shaped id is definitively absent; a bare logical id is undetermined
173
+ // (→ unknown). Extensionless real-file names (Makefile, .gitignore) also read as bare
174
+ // here — an accepted bias toward `unknown` over a false `unavailable`.
175
+ const looksLikePath = id.includes("/") || id.includes("\\") || path.extname(id) !== "";
176
+ return looksLikePath ? false : null;
177
+ },
178
+ mcpServerConfigured: (id) => {
179
+ const mcpPath = path.join(projectRoot, ".mcp.json");
180
+ if (!fs.existsSync(mcpPath))
181
+ return null;
182
+ try {
183
+ const parsed = JSON.parse(fs.readFileSync(mcpPath, "utf-8"));
184
+ const servers = parsed.mcpServers ?? parsed.servers ?? {};
185
+ return Object.prototype.hasOwnProperty.call(servers, id);
186
+ }
187
+ catch {
188
+ return null;
189
+ }
190
+ },
191
+ };
192
+ }
193
+ function resolve(entries, intent, provider, projectRoot, json) {
194
+ if (!intent) {
195
+ console.error(pc.red("`capabilities resolve` requires an intent (--intent \"…\" or a positional phrase)."));
196
+ process.exit(1);
197
+ }
198
+ const ctx = { provider: provider ?? "claude-code", checkedAt: new Date().toISOString(), probes: hostProbes(projectRoot) };
199
+ const result = resolveWithHost(entries, intent, ctx);
200
+ if (json) {
201
+ console.log(JSON.stringify(result, null, 2));
202
+ return;
203
+ }
204
+ console.log(pc.bold(pc.cyan(`Resolve: "${intent}" (host: ${ctx.provider}) — status: ${result.status}`)));
205
+ if (result.candidates.length === 0) {
206
+ console.log(pc.yellow(" No capability matched this intent."));
207
+ return;
208
+ }
209
+ for (const c of result.candidates) {
210
+ console.log(` ${c.id} ${pc.dim(`(${c.kind}, score ${c.score})`)} — ${c.reason}`);
211
+ console.log(pc.dim(` invocable: ${c.invocable}; verify: ${c.verification.kind}`));
212
+ for (const a of c.availability) {
213
+ console.log(pc.dim(` • ${a.requirementType}:${a.id} → ${a.status}`));
214
+ }
215
+ }
216
+ // When the selected candidate needs task-scoped repo context, show HOW this provider acquires
217
+ // it (Phase 5). The agent runs these host-native tools, then records via `context record`.
218
+ const top = result.candidates[0];
219
+ if (top?.contextRequirement) {
220
+ const acq = result.acquisition;
221
+ console.log(pc.bold(` needs repo context (${top.contextRequirement.reason}) — acquire via ${acq.provider} [${acq.status}]:`));
222
+ console.log(pc.dim(` read: ${acq.read ? `${acq.read.tool} — ${acq.read.note}` : "(no read surface — host-provided paths only)"}`));
223
+ console.log(pc.dim(` search: ${acq.search ? `${acq.search.tool} — ${acq.search.note}` : "(no search surface — report-only)"}`));
224
+ }
225
+ // Self-auditing: cite the adapter + evidence behind this result's provider claims (Phase 6).
226
+ const cite = result.adapterCitation;
227
+ console.log(pc.dim(` adapter: ${cite.provider} [${cite.projectionStatus}] — ${cite.projectionEvidence}`));
228
+ console.log(pc.dim(` can gate on: ${cite.gatingEvents.length ? cite.gatingEvents.join(", ") : "no events (advisory host)"}`));
229
+ }
230
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface ContextOptions {
2
+ subcommand?: string;
3
+ target?: string;
4
+ root?: string;
5
+ /** `context record`: the active durable task id to merge the envelope's evidence into. */
6
+ task?: string;
7
+ json?: boolean;
8
+ }
9
+ export declare function context(args?: ContextOptions): Promise<void>;
10
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,OAAO,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkHtE"}
@@ -0,0 +1,125 @@
1
+ // `mewkit context resolve|check|record` — inspect + record the repository-context evidence
2
+ // ledger (Phase 5). `resolve` builds an evidence ref for a path (owning repo, revision, hash,
3
+ // redaction); `check` re-hashes a recorded envelope's evidence and reports per-path freshness;
4
+ // `record` merges an envelope's owning repos + evidence paths into an active durable task record
5
+ // (advisory, best-effort). MeowKit records + verifies evidence; the host's own tools acquire it.
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ import pc from "picocolors";
9
+ import { buildEvidenceRef, checkEvidenceFreshness, ContextEnvelopeSchema, distinctRepos, isWithinBoundary, } from "../core/repo-context.js";
10
+ import { recordContextEvidence } from "../core/task-record.js";
11
+ export async function context(args = {}) {
12
+ const sub = args.subcommand ?? "resolve";
13
+ const boundary = args.root ? path.resolve(args.root) : process.cwd();
14
+ if (sub === "resolve") {
15
+ if (!args.target) {
16
+ console.error(pc.red("`context resolve` requires a path."));
17
+ process.exit(1);
18
+ }
19
+ const abs = path.resolve(boundary, args.target);
20
+ if (!isWithinBoundary(boundary, abs)) {
21
+ console.error(pc.red(`Path escapes the boundary root: ${args.target}`));
22
+ process.exit(1);
23
+ }
24
+ const ref = buildEvidenceRef(abs, boundary);
25
+ if (args.json) {
26
+ console.log(JSON.stringify(ref, null, 2));
27
+ return;
28
+ }
29
+ console.log(pc.bold(pc.cyan(`Evidence: ${path.relative(boundary, abs) || abs}`)));
30
+ console.log(` owning repo: ${ref.owningRepoIdentity}`);
31
+ console.log(` revision: ${ref.revision ?? pc.dim("(non-git / unresolved)")}`);
32
+ console.log(` content: ${ref.contentHash ?? pc.yellow("(missing)")}`);
33
+ console.log(` redacted: ${ref.redacted ? pc.yellow("yes (secret-shaped path)") : "no"}`);
34
+ return;
35
+ }
36
+ if (sub === "check") {
37
+ if (!args.target) {
38
+ console.error(pc.red("`context check` requires an envelope JSON path."));
39
+ process.exit(1);
40
+ }
41
+ const envPath = path.resolve(boundary, args.target);
42
+ if (!fs.existsSync(envPath)) {
43
+ console.error(pc.red(`Envelope not found: ${args.target}`));
44
+ process.exit(1);
45
+ }
46
+ let envelope;
47
+ try {
48
+ envelope = ContextEnvelopeSchema.parse(JSON.parse(fs.readFileSync(envPath, "utf-8")));
49
+ }
50
+ catch (err) {
51
+ console.error(pc.red(`Invalid context envelope: ${err.message.split("\n")[0]}`));
52
+ process.exit(1);
53
+ }
54
+ // Boundary-scope the freshness check: an untrusted envelope's evidence paths are never
55
+ // stat-ed/hashed outside the boundary (no arbitrary-path existence/hash oracle).
56
+ const results = checkEvidenceFreshness(envelope.evidence, boundary);
57
+ // Pair each result with its evidence ref (1:1, same order) to group BY OWNING REPO.
58
+ const paired = results.map((r, i) => ({ ...r, ref: envelope.evidence[i] }));
59
+ if (args.json) {
60
+ console.log(JSON.stringify({ boundaryRoot: envelope.boundaryRoot, repos: distinctRepos(envelope.evidence), results }, null, 2));
61
+ return;
62
+ }
63
+ const tagFor = (s) => s === "fresh" ? pc.green("fresh") : s === "stale" ? pc.yellow("stale") : s === "out-of-scope" ? pc.red("out-of-scope") : pc.red("missing");
64
+ console.log(pc.bold(pc.cyan(`Context freshness — scope: ${envelope.boundaryRoot}`)));
65
+ // Per-repo grouping: each owning repo (with its own revision) is reported separately, so a
66
+ // multi-repo task never loses which repo an evidence file — and its freshness — belongs to.
67
+ for (const repo of distinctRepos(envelope.evidence)) {
68
+ console.log(pc.bold(` ${repo.identity} ${pc.dim(`@ ${repo.revision ?? "(non-git)"}`)}`));
69
+ for (const p of paired.filter((x) => x.ref.owningRepoIdentity === repo.identity)) {
70
+ console.log(` [${tagFor(p.status)}] ${p.ref.path}`);
71
+ }
72
+ }
73
+ const needsAction = results.filter((r) => r.status !== "fresh");
74
+ if (needsAction.length > 0) {
75
+ console.log(pc.dim(`\n ${needsAction.length} evidence path(s) need reacquisition or are out of scope.`));
76
+ process.exit(1);
77
+ }
78
+ return;
79
+ }
80
+ if (sub === "record") {
81
+ if (!args.task) {
82
+ console.error(pc.red("`context record` requires --task <id> (the active durable task to record into)."));
83
+ process.exit(1);
84
+ }
85
+ if (!args.target) {
86
+ console.error(pc.red("`context record` requires an envelope JSON path."));
87
+ process.exit(1);
88
+ }
89
+ const envPath = path.resolve(boundary, args.target);
90
+ if (!fs.existsSync(envPath)) {
91
+ console.error(pc.red(`Envelope not found: ${args.target}`));
92
+ process.exit(1);
93
+ }
94
+ let envelope;
95
+ try {
96
+ envelope = ContextEnvelopeSchema.parse(JSON.parse(fs.readFileSync(envPath, "utf-8")));
97
+ }
98
+ catch (err) {
99
+ console.error(pc.red(`Invalid context envelope: ${err.message.split("\n")[0]}`));
100
+ process.exit(1);
101
+ }
102
+ // Advisory + best-effort (task-state-emission Rule 3): merge the envelope's owning repos +
103
+ // evidence paths into the CONSUMER PROJECT's task record (cwd-keyed, per task-record.ts).
104
+ // A missing/incompatible record surfaces non-zero but is never fatal to the caller's flow.
105
+ try {
106
+ const rec = await recordContextEvidence(process.cwd(), args.task, envelope, new Date().toISOString());
107
+ if (args.json) {
108
+ console.log(JSON.stringify({ taskId: rec.taskId, repos: rec.repos, evidenceRefs: rec.evidenceRefs }, null, 2));
109
+ return;
110
+ }
111
+ console.log(pc.bold(pc.cyan(`Recorded context evidence → task ${rec.taskId}`)));
112
+ for (const r of rec.repos)
113
+ console.log(` repo: ${r.identity} ${pc.dim(`@ ${r.revision ?? "(non-git)"}`)}`);
114
+ console.log(pc.dim(` ${rec.evidenceRefs.length} evidence path(s) tracked`));
115
+ return;
116
+ }
117
+ catch (err) {
118
+ console.error(pc.yellow(`context record skipped (advisory): ${err.message}`));
119
+ process.exit(1);
120
+ }
121
+ }
122
+ console.error(pc.red(`Unknown context subcommand "${sub}". Expected resolve|check|record.`));
123
+ process.exit(1);
124
+ }
125
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,32 @@ export declare function doctor(args?: {
3
3
  providers?: boolean;
4
4
  state?: boolean;
5
5
  hardGates?: boolean;
6
+ provenance?: boolean;
7
+ explain?: boolean;
8
+ consolidation?: boolean;
6
9
  }): Promise<void>;
10
+ /** A file's provenance verifiability, decided only from locally available evidence. */
11
+ type ProvenanceClass = "verified" | "known-modified" | "unknown";
12
+ /**
13
+ * Classify one installed entry's provenance from metadata alone (no fetching).
14
+ * `trustedBaseline` is true only when the `baseChecksum` is a real as-shipped hash
15
+ * (canonical `new` metadata). Legacy sources reconstruct `baseChecksum` from the disk
16
+ * itself, so a `checksum === baseChecksum` match proves nothing about what shipped —
17
+ * such kit files are `unknown`, never `verified`.
18
+ */
19
+ export declare function classifyProvenance(entry: {
20
+ owner: string;
21
+ checksum: string;
22
+ baseChecksum: string;
23
+ }, trustedBaseline: boolean): ProvenanceClass;
24
+ /**
25
+ * Read-only `doctor provenance --explain`. Reports what provenance can and cannot be
26
+ * proven from locally available evidence, in three honest classes: verified (as-shipped
27
+ * identity provable), known-modified (diverged from a KNOWN baseline), and unknown (no
28
+ * baseline recorded). It NEVER fetches a release, and it proposes a repair only when an
29
+ * exact trusted payload is locally available — doctor has none on disk, so it proposes
30
+ * none and says so, rather than relabeling or reconstructing silently.
31
+ */
32
+ export declare function explainProvenance(root: string | null, explain: boolean): void;
33
+ export {};
7
34
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AA8DA,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGhB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AA+DA,wBAAsB,MAAM,CAAC,IAAI,CAAC,EAAE;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GhB;AA4CD,uFAAuF;AACvF,KAAK,eAAe,GAAG,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAChE,eAAe,EAAE,OAAO,GACtB,eAAe,CASjB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA0E7E"}
@@ -7,6 +7,7 @@ import { checkHardGates } from "./doctor-hard-gates.js";
7
7
  import { collectProviderContractDiagnostics, summarizeProviderContractDiagnostics, } from "../migrate/provider-contract-diagnostics.js";
8
8
  import { readInstallMetadata, CorruptInstallMetadataError } from "../core/install-metadata.js";
9
9
  import { readPortableRegistry } from "../migrate/reconcile/portable-registry.js";
10
+ import { getConsolidationLedger } from "../core/consolidation-ledger.js";
10
11
  function statusIcon(status) {
11
12
  switch (status) {
12
13
  case "pass":
@@ -39,6 +40,10 @@ function findProjectRoot() {
39
40
  return null;
40
41
  }
41
42
  export async function doctor(args) {
43
+ if (args?.provenance) {
44
+ explainProvenance(findProjectRoot(), args.explain ?? false);
45
+ return;
46
+ }
42
47
  console.log(pc.bold(pc.cyan("MeowKit Doctor")));
43
48
  console.log(pc.dim("Diagnosing common issues...\n"));
44
49
  const root = findProjectRoot();
@@ -88,6 +93,9 @@ export async function doctor(args) {
88
93
  if (args?.hardGates) {
89
94
  results.push(...(await checkHardGates(root)));
90
95
  }
96
+ if (args?.consolidation) {
97
+ results.push(...checkConsolidation());
98
+ }
91
99
  for (const r of results) {
92
100
  console.log(` [${statusIcon(r.status)}] ${r.name}`);
93
101
  console.log(` ${pc.dim(r.detail)}`);
@@ -168,6 +176,98 @@ function checkInstalledMetadata(root) {
168
176
  throw err;
169
177
  }
170
178
  }
179
+ /**
180
+ * Classify one installed entry's provenance from metadata alone (no fetching).
181
+ * `trustedBaseline` is true only when the `baseChecksum` is a real as-shipped hash
182
+ * (canonical `new` metadata). Legacy sources reconstruct `baseChecksum` from the disk
183
+ * itself, so a `checksum === baseChecksum` match proves nothing about what shipped —
184
+ * such kit files are `unknown`, never `verified`.
185
+ */
186
+ export function classifyProvenance(entry, trustedBaseline) {
187
+ // No as-shipped baseline recorded ⇒ we cannot prove what shipped.
188
+ if (!entry.baseChecksum)
189
+ return "unknown";
190
+ if (entry.owner === "user")
191
+ return "verified"; // user-owned by design, not a kit claim
192
+ if (entry.owner === "meowkit-modified")
193
+ return "known-modified";
194
+ // Kit-owned pristine match is provable ONLY against a trusted (release-sourced)
195
+ // baseline; a disk-reconstructed legacy baseline cannot attest as-shipped identity.
196
+ if (entry.checksum !== entry.baseChecksum)
197
+ return "known-modified";
198
+ return trustedBaseline ? "verified" : "unknown";
199
+ }
200
+ /**
201
+ * Read-only `doctor provenance --explain`. Reports what provenance can and cannot be
202
+ * proven from locally available evidence, in three honest classes: verified (as-shipped
203
+ * identity provable), known-modified (diverged from a KNOWN baseline), and unknown (no
204
+ * baseline recorded). It NEVER fetches a release, and it proposes a repair only when an
205
+ * exact trusted payload is locally available — doctor has none on disk, so it proposes
206
+ * none and says so, rather than relabeling or reconstructing silently.
207
+ */
208
+ export function explainProvenance(root, explain) {
209
+ console.log(pc.bold(pc.cyan("MeowKit Provenance")));
210
+ console.log(pc.dim("Read-only: reports what can and cannot be proven locally. No fetch, no relabel.\n"));
211
+ if (!root) {
212
+ console.log(pc.yellow(" Project root not found — nothing to explain."));
213
+ return;
214
+ }
215
+ let source;
216
+ let files;
217
+ try {
218
+ const result = readInstallMetadata(path.join(root, ".claude"));
219
+ if (result.source === "none" || !result.meta) {
220
+ console.log(pc.yellow(" No installed metadata found — provenance cannot be established."));
221
+ console.log(pc.dim(" Run `mewkit upgrade` to write canonical metadata, then re-run this command."));
222
+ return;
223
+ }
224
+ source = result.source;
225
+ files = result.meta.files;
226
+ }
227
+ catch (err) {
228
+ if (err instanceof CorruptInstallMetadataError) {
229
+ console.log(pc.red(` Canonical metadata.json is corrupt: ${err.detail}`));
230
+ console.log(pc.dim(" Provenance is unprovable until it is regenerated (`mewkit upgrade`)."));
231
+ return;
232
+ }
233
+ throw err;
234
+ }
235
+ // Only canonical `new` metadata carries a trusted as-shipped baseline. Legacy
236
+ // sources reconstruct baselines from disk, so their "matches" prove nothing.
237
+ const trustedBaseline = source === "new";
238
+ const buckets = { verified: [], "known-modified": [], unknown: [] };
239
+ for (const f of files)
240
+ buckets[classifyProvenance(f, trustedBaseline)].push(f.path);
241
+ console.log(` ${pc.dim("Metadata source:")} ${source}`);
242
+ if (!trustedBaseline) {
243
+ console.log(pc.yellow(` Baseline is reconstructed from disk (source=${source}), not a trusted release payload —\n` +
244
+ " as-shipped identity is NOT provable for these files. Run `mewkit upgrade` to write\n" +
245
+ " canonical metadata with real baselines."));
246
+ }
247
+ if (files.length === 0) {
248
+ console.log(pc.red(" No file-level provenance recorded — nothing can be proven. Run `mewkit upgrade`."));
249
+ return;
250
+ }
251
+ console.log(` ${pc.green("verified")} ${buckets.verified.length} — as-shipped identity provable`);
252
+ console.log(` ${pc.yellow("known-modified")} ${buckets["known-modified"].length} — diverged from a known baseline`);
253
+ console.log(` ${pc.red("unknown")} ${buckets.unknown.length} — as-shipped identity not provable\n`);
254
+ if (explain) {
255
+ const sample = (paths) => paths.length === 0 ? "(none)" : paths.slice(0, 10).join(", ") + (paths.length > 10 ? `, …(+${paths.length - 10})` : "");
256
+ console.log(` ${pc.yellow("known-modified")}: ${sample(buckets["known-modified"])}`);
257
+ console.log(` ${pc.red("unknown")}: ${sample(buckets.unknown)}\n`);
258
+ }
259
+ // Repair proposal is gated on a locally-available trusted payload. doctor never
260
+ // downloads a release, so it cannot repair here — it says so instead of guessing.
261
+ const repairable = buckets["known-modified"].length + buckets.unknown.length;
262
+ if (repairable === 0) {
263
+ console.log(pc.green(" All tracked files have provable provenance. No repair needed."));
264
+ }
265
+ else {
266
+ console.log(pc.dim(` ${repairable} file(s) are modified or lack a baseline. No repair is proposed here: doctor has no\n` +
267
+ " trusted release payload on disk. Exact historical repair requires the matching release\n" +
268
+ " payload and a separately-approved repair flow — it is never reconstructed silently."));
269
+ }
270
+ }
171
271
  async function checkMetadataHealth(root) {
172
272
  const results = [checkInstalledMetadata(root)];
173
273
  // The portable registry is global (~/.mewkit/), not per-project, so it is
@@ -189,6 +289,29 @@ async function checkMetadataHealth(root) {
189
289
  }
190
290
  return results;
191
291
  }
292
+ /**
293
+ * Phase-7 consolidation ledger surfacing. Reports each candidate's deprecation/experimental/
294
+ * authoring-only status HONESTLY: the status label is NOT a runtime-availability claim (a
295
+ * deprecated or authoring-only artifact may be fully functional at runtime). Every candidate is
296
+ * `deletionThisPhase:false`, so nothing here is a failure — statuses map to pass/na/warn, never
297
+ * fail. The `detail` always names the outstanding gates so a reader sees WHY nothing is removed.
298
+ */
299
+ function checkConsolidation() {
300
+ const statusToDiag = {
301
+ canonical: "pass",
302
+ "keep-legacy": "pass",
303
+ "authoring-only": "na",
304
+ experimental: "na",
305
+ deprecated: "warn",
306
+ undecided: "na",
307
+ };
308
+ return getConsolidationLedger().map((c) => ({
309
+ status: statusToDiag[c.status],
310
+ name: `Consolidation: ${c.id} [${c.status}]`,
311
+ // Honest: status is a classification, not a runtime-availability verdict. Gates say why it stays.
312
+ detail: `${c.purpose} — status is a classification, not a runtime-availability claim; not removed this phase. Gates: ${c.remainingGates.join("; ")}`,
313
+ }));
314
+ }
192
315
  function checkStateTaxonomy(root) {
193
316
  if (!root) {
194
317
  return [{ status: "warn", name: "State taxonomy", detail: "Project root not found; skipped state path checks." }];