@shrkcrft/cli 0.1.0-alpha.2

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 (450) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/asset-preview/apply-action-hint-stub.d.ts +28 -0
  4. package/dist/asset-preview/apply-action-hint-stub.d.ts.map +1 -0
  5. package/dist/asset-preview/apply-action-hint-stub.js +170 -0
  6. package/dist/asset-preview/apply-asset-preview.d.ts +31 -0
  7. package/dist/asset-preview/apply-asset-preview.d.ts.map +1 -0
  8. package/dist/asset-preview/apply-asset-preview.js +210 -0
  9. package/dist/asset-preview/apply-knowledge-stale-fix.d.ts +37 -0
  10. package/dist/asset-preview/apply-knowledge-stale-fix.d.ts.map +1 -0
  11. package/dist/asset-preview/apply-knowledge-stale-fix.js +344 -0
  12. package/dist/asset-preview/apply-missing-barrel.d.ts +15 -0
  13. package/dist/asset-preview/apply-missing-barrel.d.ts.map +1 -0
  14. package/dist/asset-preview/apply-missing-barrel.js +65 -0
  15. package/dist/asset-preview/apply-template-drift-fix.d.ts +21 -0
  16. package/dist/asset-preview/apply-template-drift-fix.d.ts.map +1 -0
  17. package/dist/asset-preview/apply-template-drift-fix.js +125 -0
  18. package/dist/asset-preview/apply-template-update.d.ts +43 -0
  19. package/dist/asset-preview/apply-template-update.d.ts.map +1 -0
  20. package/dist/asset-preview/apply-template-update.js +257 -0
  21. package/dist/asset-preview/entry-mutator.d.ts +106 -0
  22. package/dist/asset-preview/entry-mutator.d.ts.map +1 -0
  23. package/dist/asset-preview/entry-mutator.js +428 -0
  24. package/dist/authoring/authoring-kit.d.ts +36 -0
  25. package/dist/authoring/authoring-kit.d.ts.map +1 -0
  26. package/dist/authoring/authoring-kit.js +106 -0
  27. package/dist/command-registry.d.ts +158 -0
  28. package/dist/command-registry.d.ts.map +1 -0
  29. package/dist/command-registry.js +348 -0
  30. package/dist/commands/apply.command.d.ts +3 -0
  31. package/dist/commands/apply.command.d.ts.map +1 -0
  32. package/dist/commands/apply.command.js +879 -0
  33. package/dist/commands/architecture.command.d.ts +5 -0
  34. package/dist/commands/architecture.command.d.ts.map +1 -0
  35. package/dist/commands/architecture.command.js +141 -0
  36. package/dist/commands/ask.command.d.ts +3 -0
  37. package/dist/commands/ask.command.d.ts.map +1 -0
  38. package/dist/commands/ask.command.js +58 -0
  39. package/dist/commands/audit.command.d.ts +3 -0
  40. package/dist/commands/audit.command.d.ts.map +1 -0
  41. package/dist/commands/audit.command.js +141 -0
  42. package/dist/commands/biome.command.d.ts +7 -0
  43. package/dist/commands/biome.command.d.ts.map +1 -0
  44. package/dist/commands/biome.command.js +350 -0
  45. package/dist/commands/boundaries.command.d.ts +9 -0
  46. package/dist/commands/boundaries.command.d.ts.map +1 -0
  47. package/dist/commands/boundaries.command.js +314 -0
  48. package/dist/commands/brief.command.d.ts +3 -0
  49. package/dist/commands/brief.command.d.ts.map +1 -0
  50. package/dist/commands/brief.command.js +206 -0
  51. package/dist/commands/bundle.command.d.ts +3 -0
  52. package/dist/commands/bundle.command.d.ts.map +1 -0
  53. package/dist/commands/bundle.command.js +1183 -0
  54. package/dist/commands/changes.command.d.ts +3 -0
  55. package/dist/commands/changes.command.d.ts.map +1 -0
  56. package/dist/commands/changes.command.js +155 -0
  57. package/dist/commands/check.command.d.ts +3 -0
  58. package/dist/commands/check.command.d.ts.map +1 -0
  59. package/dist/commands/check.command.js +553 -0
  60. package/dist/commands/checks.command.d.ts +29 -0
  61. package/dist/commands/checks.command.d.ts.map +1 -0
  62. package/dist/commands/checks.command.js +521 -0
  63. package/dist/commands/ci.command.d.ts +3 -0
  64. package/dist/commands/ci.command.d.ts.map +1 -0
  65. package/dist/commands/ci.command.js +680 -0
  66. package/dist/commands/codemod.command.d.ts +3 -0
  67. package/dist/commands/codemod.command.d.ts.map +1 -0
  68. package/dist/commands/codemod.command.js +130 -0
  69. package/dist/commands/command-catalog.d.ts +265 -0
  70. package/dist/commands/command-catalog.d.ts.map +1 -0
  71. package/dist/commands/command-catalog.js +3242 -0
  72. package/dist/commands/commands.command.d.ts +92 -0
  73. package/dist/commands/commands.command.d.ts.map +1 -0
  74. package/dist/commands/commands.command.js +1208 -0
  75. package/dist/commands/constructs.command.d.ts +15 -0
  76. package/dist/commands/constructs.command.d.ts.map +1 -0
  77. package/dist/commands/constructs.command.js +669 -0
  78. package/dist/commands/context.command.d.ts +3 -0
  79. package/dist/commands/context.command.d.ts.map +1 -0
  80. package/dist/commands/context.command.js +120 -0
  81. package/dist/commands/contract-gate.command.d.ts +5 -0
  82. package/dist/commands/contract-gate.command.d.ts.map +1 -0
  83. package/dist/commands/contract-gate.command.js +208 -0
  84. package/dist/commands/contract-templates.command.d.ts +8 -0
  85. package/dist/commands/contract-templates.command.d.ts.map +1 -0
  86. package/dist/commands/contract-templates.command.js +151 -0
  87. package/dist/commands/contract.command.d.ts +3 -0
  88. package/dist/commands/contract.command.d.ts.map +1 -0
  89. package/dist/commands/contract.command.js +105 -0
  90. package/dist/commands/conventions.command.d.ts +8 -0
  91. package/dist/commands/conventions.command.d.ts.map +1 -0
  92. package/dist/commands/conventions.command.js +169 -0
  93. package/dist/commands/coverage.command.d.ts +3 -0
  94. package/dist/commands/coverage.command.d.ts.map +1 -0
  95. package/dist/commands/coverage.command.js +56 -0
  96. package/dist/commands/daily.commands.d.ts +5 -0
  97. package/dist/commands/daily.commands.d.ts.map +1 -0
  98. package/dist/commands/daily.commands.js +224 -0
  99. package/dist/commands/dashboard-export.command.d.ts +4 -0
  100. package/dist/commands/dashboard-export.command.d.ts.map +1 -0
  101. package/dist/commands/dashboard-export.command.js +86 -0
  102. package/dist/commands/dashboard.command.d.ts +3 -0
  103. package/dist/commands/dashboard.command.d.ts.map +1 -0
  104. package/dist/commands/dashboard.command.js +106 -0
  105. package/dist/commands/dev.command.d.ts +3 -0
  106. package/dist/commands/dev.command.d.ts.map +1 -0
  107. package/dist/commands/dev.command.js +1392 -0
  108. package/dist/commands/diagnostics.command.d.ts +5 -0
  109. package/dist/commands/diagnostics.command.d.ts.map +1 -0
  110. package/dist/commands/diagnostics.command.js +97 -0
  111. package/dist/commands/docs.command.d.ts +4 -0
  112. package/dist/commands/docs.command.d.ts.map +1 -0
  113. package/dist/commands/docs.command.js +34 -0
  114. package/dist/commands/doctor.command.d.ts +7 -0
  115. package/dist/commands/doctor.command.d.ts.map +1 -0
  116. package/dist/commands/doctor.command.js +681 -0
  117. package/dist/commands/drift.command.d.ts +3 -0
  118. package/dist/commands/drift.command.d.ts.map +1 -0
  119. package/dist/commands/drift.command.js +124 -0
  120. package/dist/commands/eslint.command.d.ts +7 -0
  121. package/dist/commands/eslint.command.d.ts.map +1 -0
  122. package/dist/commands/eslint.command.js +423 -0
  123. package/dist/commands/explore.command.d.ts +3 -0
  124. package/dist/commands/explore.command.d.ts.map +1 -0
  125. package/dist/commands/explore.command.js +65 -0
  126. package/dist/commands/export-bundle.command.d.ts +6 -0
  127. package/dist/commands/export-bundle.command.d.ts.map +1 -0
  128. package/dist/commands/export-bundle.command.js +96 -0
  129. package/dist/commands/export.command.d.ts +3 -0
  130. package/dist/commands/export.command.d.ts.map +1 -0
  131. package/dist/commands/export.command.js +83 -0
  132. package/dist/commands/feedback-dispatch.command.d.ts +12 -0
  133. package/dist/commands/feedback-dispatch.command.d.ts.map +1 -0
  134. package/dist/commands/feedback-dispatch.command.js +63 -0
  135. package/dist/commands/feedback.command.d.ts +11 -0
  136. package/dist/commands/feedback.command.d.ts.map +1 -0
  137. package/dist/commands/feedback.command.js +336 -0
  138. package/dist/commands/fix.command.d.ts +3 -0
  139. package/dist/commands/fix.command.d.ts.map +1 -0
  140. package/dist/commands/fix.command.js +776 -0
  141. package/dist/commands/gen.command.d.ts +3 -0
  142. package/dist/commands/gen.command.d.ts.map +1 -0
  143. package/dist/commands/gen.command.js +136 -0
  144. package/dist/commands/git.command.d.ts +6 -0
  145. package/dist/commands/git.command.d.ts.map +1 -0
  146. package/dist/commands/git.command.js +81 -0
  147. package/dist/commands/graph.command.d.ts +3 -0
  148. package/dist/commands/graph.command.d.ts.map +1 -0
  149. package/dist/commands/graph.command.js +287 -0
  150. package/dist/commands/grounding.command.d.ts +7 -0
  151. package/dist/commands/grounding.command.d.ts.map +1 -0
  152. package/dist/commands/grounding.command.js +54 -0
  153. package/dist/commands/help.command.d.ts +20 -0
  154. package/dist/commands/help.command.d.ts.map +1 -0
  155. package/dist/commands/help.command.js +127 -0
  156. package/dist/commands/helper.command.d.ts +6 -0
  157. package/dist/commands/helper.command.d.ts.map +1 -0
  158. package/dist/commands/helper.command.js +170 -0
  159. package/dist/commands/ide.command.d.ts +6 -0
  160. package/dist/commands/ide.command.d.ts.map +1 -0
  161. package/dist/commands/ide.command.js +340 -0
  162. package/dist/commands/impact.command.d.ts +3 -0
  163. package/dist/commands/impact.command.d.ts.map +1 -0
  164. package/dist/commands/impact.command.js +819 -0
  165. package/dist/commands/import.command.d.ts +3 -0
  166. package/dist/commands/import.command.d.ts.map +1 -0
  167. package/dist/commands/import.command.js +115 -0
  168. package/dist/commands/infer.command.d.ts +3 -0
  169. package/dist/commands/infer.command.d.ts.map +1 -0
  170. package/dist/commands/infer.command.js +227 -0
  171. package/dist/commands/ingest.command.d.ts +6 -0
  172. package/dist/commands/ingest.command.d.ts.map +1 -0
  173. package/dist/commands/ingest.command.js +532 -0
  174. package/dist/commands/init.command.d.ts +3 -0
  175. package/dist/commands/init.command.d.ts.map +1 -0
  176. package/dist/commands/init.command.js +301 -0
  177. package/dist/commands/inspect.command.d.ts +3 -0
  178. package/dist/commands/inspect.command.d.ts.map +1 -0
  179. package/dist/commands/inspect.command.js +122 -0
  180. package/dist/commands/knowledge-author.command.d.ts +22 -0
  181. package/dist/commands/knowledge-author.command.d.ts.map +1 -0
  182. package/dist/commands/knowledge-author.command.js +366 -0
  183. package/dist/commands/knowledge-propose.command.d.ts +3 -0
  184. package/dist/commands/knowledge-propose.command.d.ts.map +1 -0
  185. package/dist/commands/knowledge-propose.command.js +125 -0
  186. package/dist/commands/knowledge.command.d.ts +18 -0
  187. package/dist/commands/knowledge.command.d.ts.map +1 -0
  188. package/dist/commands/knowledge.command.js +538 -0
  189. package/dist/commands/languages.command.d.ts +3 -0
  190. package/dist/commands/languages.command.d.ts.map +1 -0
  191. package/dist/commands/languages.command.js +300 -0
  192. package/dist/commands/lint.command.d.ts +15 -0
  193. package/dist/commands/lint.command.d.ts.map +1 -0
  194. package/dist/commands/lint.command.js +194 -0
  195. package/dist/commands/mcp.command.d.ts +3 -0
  196. package/dist/commands/mcp.command.d.ts.map +1 -0
  197. package/dist/commands/mcp.command.js +74 -0
  198. package/dist/commands/memory.command.d.ts +11 -0
  199. package/dist/commands/memory.command.d.ts.map +1 -0
  200. package/dist/commands/memory.command.js +264 -0
  201. package/dist/commands/onboard.command.d.ts +3 -0
  202. package/dist/commands/onboard.command.d.ts.map +1 -0
  203. package/dist/commands/onboard.command.js +650 -0
  204. package/dist/commands/orchestrate.command.d.ts +3 -0
  205. package/dist/commands/orchestrate.command.d.ts.map +1 -0
  206. package/dist/commands/orchestrate.command.js +49 -0
  207. package/dist/commands/owners.command.d.ts +5 -0
  208. package/dist/commands/owners.command.d.ts.map +1 -0
  209. package/dist/commands/owners.command.js +113 -0
  210. package/dist/commands/ownership.command.d.ts +5 -0
  211. package/dist/commands/ownership.command.d.ts.map +1 -0
  212. package/dist/commands/ownership.command.js +117 -0
  213. package/dist/commands/pack-author.command.d.ts +30 -0
  214. package/dist/commands/pack-author.command.d.ts.map +1 -0
  215. package/dist/commands/pack-author.command.js +242 -0
  216. package/dist/commands/packs-new.d.ts +27 -0
  217. package/dist/commands/packs-new.d.ts.map +1 -0
  218. package/dist/commands/packs-new.js +805 -0
  219. package/dist/commands/packs.command.d.ts +15 -0
  220. package/dist/commands/packs.command.d.ts.map +1 -0
  221. package/dist/commands/packs.command.js +958 -0
  222. package/dist/commands/paths.command.d.ts +6 -0
  223. package/dist/commands/paths.command.d.ts.map +1 -0
  224. package/dist/commands/paths.command.js +97 -0
  225. package/dist/commands/pipelines.command.d.ts +9 -0
  226. package/dist/commands/pipelines.command.d.ts.map +1 -0
  227. package/dist/commands/pipelines.command.js +308 -0
  228. package/dist/commands/plan-check.command.d.ts +27 -0
  229. package/dist/commands/plan-check.command.d.ts.map +1 -0
  230. package/dist/commands/plan-check.command.js +150 -0
  231. package/dist/commands/plan-simulate.command.d.ts +3 -0
  232. package/dist/commands/plan-simulate.command.d.ts.map +1 -0
  233. package/dist/commands/plan-simulate.command.js +60 -0
  234. package/dist/commands/plan.command.d.ts +8 -0
  235. package/dist/commands/plan.command.d.ts.map +1 -0
  236. package/dist/commands/plan.command.js +139 -0
  237. package/dist/commands/playbooks.command.d.ts +10 -0
  238. package/dist/commands/playbooks.command.d.ts.map +1 -0
  239. package/dist/commands/playbooks.command.js +296 -0
  240. package/dist/commands/plugin.command.d.ts +11 -0
  241. package/dist/commands/plugin.command.d.ts.map +1 -0
  242. package/dist/commands/plugin.command.js +394 -0
  243. package/dist/commands/policy.command.d.ts +8 -0
  244. package/dist/commands/policy.command.d.ts.map +1 -0
  245. package/dist/commands/policy.command.js +451 -0
  246. package/dist/commands/pr.command.d.ts +3 -0
  247. package/dist/commands/pr.command.d.ts.map +1 -0
  248. package/dist/commands/pr.command.js +132 -0
  249. package/dist/commands/preflight.command.d.ts +3 -0
  250. package/dist/commands/preflight.command.d.ts.map +1 -0
  251. package/dist/commands/preflight.command.js +102 -0
  252. package/dist/commands/presets.command.d.ts +17 -0
  253. package/dist/commands/presets.command.d.ts.map +1 -0
  254. package/dist/commands/presets.command.js +647 -0
  255. package/dist/commands/profiles.command.d.ts +7 -0
  256. package/dist/commands/profiles.command.d.ts.map +1 -0
  257. package/dist/commands/profiles.command.js +151 -0
  258. package/dist/commands/provenance.command.d.ts +26 -0
  259. package/dist/commands/provenance.command.d.ts.map +1 -0
  260. package/dist/commands/provenance.command.js +237 -0
  261. package/dist/commands/quality.command.d.ts +5 -0
  262. package/dist/commands/quality.command.d.ts.map +1 -0
  263. package/dist/commands/quality.command.js +69 -0
  264. package/dist/commands/recommend.command.d.ts +4 -0
  265. package/dist/commands/recommend.command.d.ts.map +1 -0
  266. package/dist/commands/recommend.command.js +270 -0
  267. package/dist/commands/registrations.command.d.ts +3 -0
  268. package/dist/commands/registrations.command.d.ts.map +1 -0
  269. package/dist/commands/registrations.command.js +300 -0
  270. package/dist/commands/registry.command.d.ts +4 -0
  271. package/dist/commands/registry.command.d.ts.map +1 -0
  272. package/dist/commands/registry.command.js +37 -0
  273. package/dist/commands/release.command.d.ts +4 -0
  274. package/dist/commands/release.command.d.ts.map +1 -0
  275. package/dist/commands/release.command.js +639 -0
  276. package/dist/commands/repo.command.d.ts +3 -0
  277. package/dist/commands/repo.command.d.ts.map +1 -0
  278. package/dist/commands/repo.command.js +24 -0
  279. package/dist/commands/report.command.d.ts +3 -0
  280. package/dist/commands/report.command.d.ts.map +1 -0
  281. package/dist/commands/report.command.js +511 -0
  282. package/dist/commands/reposet.command.d.ts +6 -0
  283. package/dist/commands/reposet.command.d.ts.map +1 -0
  284. package/dist/commands/reposet.command.js +120 -0
  285. package/dist/commands/review.command.d.ts +3 -0
  286. package/dist/commands/review.command.d.ts.map +1 -0
  287. package/dist/commands/review.command.js +354 -0
  288. package/dist/commands/risk.command.d.ts +3 -0
  289. package/dist/commands/risk.command.d.ts.map +1 -0
  290. package/dist/commands/risk.command.js +56 -0
  291. package/dist/commands/rounds.command.d.ts +8 -0
  292. package/dist/commands/rounds.command.d.ts.map +1 -0
  293. package/dist/commands/rounds.command.js +180 -0
  294. package/dist/commands/rules.command.d.ts +49 -0
  295. package/dist/commands/rules.command.d.ts.map +1 -0
  296. package/dist/commands/rules.command.js +435 -0
  297. package/dist/commands/runtime.command.d.ts +3 -0
  298. package/dist/commands/runtime.command.d.ts.map +1 -0
  299. package/dist/commands/runtime.command.js +56 -0
  300. package/dist/commands/safety.command.d.ts +3 -0
  301. package/dist/commands/safety.command.d.ts.map +1 -0
  302. package/dist/commands/safety.command.js +117 -0
  303. package/dist/commands/scaffolds.command.d.ts +5 -0
  304. package/dist/commands/scaffolds.command.d.ts.map +1 -0
  305. package/dist/commands/scaffolds.command.js +122 -0
  306. package/dist/commands/schemas.command.d.ts +21 -0
  307. package/dist/commands/schemas.command.d.ts.map +1 -0
  308. package/dist/commands/schemas.command.js +296 -0
  309. package/dist/commands/search.command.d.ts +12 -0
  310. package/dist/commands/search.command.d.ts.map +1 -0
  311. package/dist/commands/search.command.js +275 -0
  312. package/dist/commands/self-config.command.d.ts +7 -0
  313. package/dist/commands/self-config.command.d.ts.map +1 -0
  314. package/dist/commands/self-config.command.js +156 -0
  315. package/dist/commands/self.command.d.ts +3 -0
  316. package/dist/commands/self.command.d.ts.map +1 -0
  317. package/dist/commands/self.command.js +117 -0
  318. package/dist/commands/simulate.command.d.ts +3 -0
  319. package/dist/commands/simulate.command.d.ts.map +1 -0
  320. package/dist/commands/simulate.command.js +54 -0
  321. package/dist/commands/spec.command.d.ts +29 -0
  322. package/dist/commands/spec.command.d.ts.map +1 -0
  323. package/dist/commands/spec.command.js +985 -0
  324. package/dist/commands/start-here.command.d.ts +3 -0
  325. package/dist/commands/start-here.command.d.ts.map +1 -0
  326. package/dist/commands/start-here.command.js +35 -0
  327. package/dist/commands/stats.command.d.ts +3 -0
  328. package/dist/commands/stats.command.d.ts.map +1 -0
  329. package/dist/commands/stats.command.js +88 -0
  330. package/dist/commands/surface.command.d.ts +15 -0
  331. package/dist/commands/surface.command.d.ts.map +1 -0
  332. package/dist/commands/surface.command.js +328 -0
  333. package/dist/commands/task-context.command.d.ts +7 -0
  334. package/dist/commands/task-context.command.d.ts.map +1 -0
  335. package/dist/commands/task-context.command.js +646 -0
  336. package/dist/commands/task.command.d.ts +3 -0
  337. package/dist/commands/task.command.d.ts.map +1 -0
  338. package/dist/commands/task.command.js +301 -0
  339. package/dist/commands/template-quality.command.d.ts +5 -0
  340. package/dist/commands/template-quality.command.d.ts.map +1 -0
  341. package/dist/commands/template-quality.command.js +128 -0
  342. package/dist/commands/templates.command.d.ts +26 -0
  343. package/dist/commands/templates.command.d.ts.map +1 -0
  344. package/dist/commands/templates.command.js +964 -0
  345. package/dist/commands/test.command.d.ts +3 -0
  346. package/dist/commands/test.command.d.ts.map +1 -0
  347. package/dist/commands/test.command.js +262 -0
  348. package/dist/commands/tests.command.d.ts +5 -0
  349. package/dist/commands/tests.command.d.ts.map +1 -0
  350. package/dist/commands/tests.command.js +97 -0
  351. package/dist/commands/trace.command.d.ts +3 -0
  352. package/dist/commands/trace.command.d.ts.map +1 -0
  353. package/dist/commands/trace.command.js +121 -0
  354. package/dist/commands/upgrade.command.d.ts +4 -0
  355. package/dist/commands/upgrade.command.d.ts.map +1 -0
  356. package/dist/commands/upgrade.command.js +43 -0
  357. package/dist/commands/version.command.d.ts +3 -0
  358. package/dist/commands/version.command.d.ts.map +1 -0
  359. package/dist/commands/version.command.js +10 -0
  360. package/dist/commands/why.command.d.ts +24 -0
  361. package/dist/commands/why.command.d.ts.map +1 -0
  362. package/dist/commands/why.command.js +119 -0
  363. package/dist/dashboard/dashboard-api-server.d.ts +21 -0
  364. package/dist/dashboard/dashboard-api-server.d.ts.map +1 -0
  365. package/dist/dashboard/dashboard-api-server.js +410 -0
  366. package/dist/dashboard/live-session-server.d.ts +18 -0
  367. package/dist/dashboard/live-session-server.d.ts.map +1 -0
  368. package/dist/dashboard/live-session-server.js +133 -0
  369. package/dist/diff/collect-changed-paths.d.ts +27 -0
  370. package/dist/diff/collect-changed-paths.d.ts.map +1 -0
  371. package/dist/diff/collect-changed-paths.js +68 -0
  372. package/dist/doctor/doctor-tags.d.ts +63 -0
  373. package/dist/doctor/doctor-tags.d.ts.map +1 -0
  374. package/dist/doctor/doctor-tags.js +146 -0
  375. package/dist/export/export-formats.d.ts +22 -0
  376. package/dist/export/export-formats.d.ts.map +1 -0
  377. package/dist/export/export-formats.js +135 -0
  378. package/dist/index.d.ts +22 -0
  379. package/dist/index.d.ts.map +1 -0
  380. package/dist/index.js +21 -0
  381. package/dist/init/detected-block.d.ts +57 -0
  382. package/dist/init/detected-block.d.ts.map +1 -0
  383. package/dist/init/detected-block.js +197 -0
  384. package/dist/init/gitignore.d.ts +30 -0
  385. package/dist/init/gitignore.d.ts.map +1 -0
  386. package/dist/init/gitignore.js +110 -0
  387. package/dist/init/init-templates.d.ts +6 -0
  388. package/dist/init/init-templates.d.ts.map +1 -0
  389. package/dist/init/init-templates.js +413 -0
  390. package/dist/main.d.ts +18 -0
  391. package/dist/main.d.ts.map +1 -0
  392. package/dist/main.js +699 -0
  393. package/dist/output/failure-hints.d.ts +55 -0
  394. package/dist/output/failure-hints.d.ts.map +1 -0
  395. package/dist/output/failure-hints.js +159 -0
  396. package/dist/output/format-output.d.ts +9 -0
  397. package/dist/output/format-output.d.ts.map +1 -0
  398. package/dist/output/format-output.js +26 -0
  399. package/dist/output/print-error.d.ts +3 -0
  400. package/dist/output/print-error.d.ts.map +1 -0
  401. package/dist/output/print-error.js +14 -0
  402. package/dist/output/watch-loop.d.ts +37 -0
  403. package/dist/output/watch-loop.d.ts.map +1 -0
  404. package/dist/output/watch-loop.js +115 -0
  405. package/dist/schemas/json-schemas.d.ts +1630 -0
  406. package/dist/schemas/json-schemas.d.ts.map +1 -0
  407. package/dist/schemas/json-schemas.js +811 -0
  408. package/dist/surface/about.d.ts +10 -0
  409. package/dist/surface/about.d.ts.map +1 -0
  410. package/dist/surface/about.js +53 -0
  411. package/dist/surface/load-surface-context.d.ts +34 -0
  412. package/dist/surface/load-surface-context.d.ts.map +1 -0
  413. package/dist/surface/load-surface-context.js +100 -0
  414. package/dist/surface/no-args-landing.d.ts +7 -0
  415. package/dist/surface/no-args-landing.d.ts.map +1 -0
  416. package/dist/surface/no-args-landing.js +36 -0
  417. package/dist/surface/not-enabled-error.d.ts +24 -0
  418. package/dist/surface/not-enabled-error.d.ts.map +1 -0
  419. package/dist/surface/not-enabled-error.js +36 -0
  420. package/dist/surface/profiles.d.ts +37 -0
  421. package/dist/surface/profiles.d.ts.map +1 -0
  422. package/dist/surface/profiles.js +151 -0
  423. package/dist/surface/shape-defaults.d.ts +21 -0
  424. package/dist/surface/shape-defaults.d.ts.map +1 -0
  425. package/dist/surface/shape-defaults.js +50 -0
  426. package/dist/surface/spine-extractor.d.ts +38 -0
  427. package/dist/surface/spine-extractor.d.ts.map +1 -0
  428. package/dist/surface/spine-extractor.js +100 -0
  429. package/dist/surface/surface-config-writer.d.ts +59 -0
  430. package/dist/surface/surface-config-writer.d.ts.map +1 -0
  431. package/dist/surface/surface-config-writer.js +135 -0
  432. package/dist/surface/surface-summary.d.ts +66 -0
  433. package/dist/surface/surface-summary.d.ts.map +1 -0
  434. package/dist/surface/surface-summary.js +162 -0
  435. package/dist/surface/tier.d.ts +100 -0
  436. package/dist/surface/tier.d.ts.map +1 -0
  437. package/dist/surface/tier.js +172 -0
  438. package/dist/task-next/apply-batch-runner.d.ts +42 -0
  439. package/dist/task-next/apply-batch-runner.d.ts.map +1 -0
  440. package/dist/task-next/apply-batch-runner.js +192 -0
  441. package/dist/task-next/task-next-ranker.d.ts +75 -0
  442. package/dist/task-next/task-next-ranker.d.ts.map +1 -0
  443. package/dist/task-next/task-next-ranker.js +179 -0
  444. package/dist/usage/usage-log.d.ts +54 -0
  445. package/dist/usage/usage-log.d.ts.map +1 -0
  446. package/dist/usage/usage-log.js +105 -0
  447. package/dist/validation/run-validation-loop.d.ts +38 -0
  448. package/dist/validation/run-validation-loop.d.ts.map +1 -0
  449. package/dist/validation/run-validation-loop.js +100 -0
  450. package/package.json +73 -0
@@ -0,0 +1,650 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import * as nodePath from 'node:path';
3
+ import { AdoptionCategory, AdoptionCheckpointStatus, AdoptionKind, archivePreviousAdoptionOutputs, buildAdoptionCheck, buildAdoptionMergePreview, buildAdoptionReport, buildOnboardAdoptionDiff, buildOnboardingAdoptionPlan, buildOnboardingDiff, buildOnboardingPlan, computeAdoptionFreshness, evaluateAdoptionCheckpoint, hashDiffBody, importAgentRulesForOnboarding, inspectSharkcraft, readAdoptionCheckpoint, readAdoptionState, recordAdoptionCheckpoint, renderAdoptionMergePreviewHtml, renderAdoptionMergePreviewMarkdown, renderAdoptionMergePreviewText, renderAdoptionReportHtml, renderAdoptionReportJson, renderAdoptionReportMarkdown, renderAdoptionReportText, renderOnboardAdoptionDiff, renderOnboardingDiff, validatePatchTargets, writeAdoptionPatch, writeOnboardingDrafts, AdoptionCheckResult, AdoptionFreshnessStatus, } from '@shrkcrft/inspector';
4
+ import { flagBool, flagNumber, flagString, flagList, resolveCwd, } from "../command-registry.js";
5
+ import { asJson, header, kv } from "../output/format-output.js";
6
+ export const onboardCommand = {
7
+ name: 'onboard',
8
+ description: 'Analyze an existing repository and produce a SharkCraft onboarding plan (rules / paths / templates / boundaries / pipelines + readiness estimate). Default is dry-run; `--write-drafts` writes advisory drafts under sharkcraft/onboarding/ (never overwrites rules.ts / paths.ts / templates.ts). `--scaffold-templates` drafts runnable template bodies. `--import-agents` parses AGENTS.md / CLAUDE.md / .cursor/rules into a draft. `--diff` compares the plan against the live config.',
9
+ usage: 'shrk [--cwd <dir>] onboard [--dry-run] [--write-drafts] [--scaffold-templates] [--import-agents] [--diff] [--preset <id>] [--json]',
10
+ async run(args) {
11
+ // Dispatch sub-verb: `shrk onboard adopt [...]`.
12
+ if (args.positional[0] === 'adopt') {
13
+ const sliced = { ...args, positional: args.positional.slice(1) };
14
+ return runOnboardAdopt(sliced);
15
+ }
16
+ const cwd = resolveCwd(args);
17
+ const writeDrafts = flagBool(args, 'write-drafts');
18
+ const scaffoldTemplates = flagBool(args, 'scaffold-templates');
19
+ const importAgents = flagBool(args, 'import-agents');
20
+ const diffMode = flagBool(args, 'diff');
21
+ const dryRun = flagBool(args, 'dry-run') || !writeDrafts;
22
+ const preferredPreset = flagString(args, 'preset');
23
+ const asJsonOut = flagBool(args, 'json');
24
+ const inspection = await inspectSharkcraft({ cwd });
25
+ const plan = buildOnboardingPlan(inspection, {
26
+ ...(preferredPreset ? { preferredPreset } : {}),
27
+ ...(scaffoldTemplates ? { scaffoldTemplates: true } : {}),
28
+ });
29
+ let importedAgentRules;
30
+ if (importAgents) {
31
+ importedAgentRules = importAgentRulesForOnboarding({ projectRoot: cwd });
32
+ }
33
+ let written;
34
+ if (writeDrafts) {
35
+ written = writeOnboardingDrafts(plan, {
36
+ projectRoot: cwd,
37
+ ...(importedAgentRules ? { importedAgentRules } : {}),
38
+ });
39
+ }
40
+ const diff = diffMode ? buildOnboardingDiff(inspection, plan) : undefined;
41
+ if (asJsonOut) {
42
+ process.stdout.write(asJson({
43
+ mode: diffMode
44
+ ? 'diff'
45
+ : writeDrafts
46
+ ? 'write-drafts'
47
+ : 'dry-run',
48
+ plan,
49
+ ...(diff ? { diff } : {}),
50
+ ...(importedAgentRules ? { importedAgentRules } : {}),
51
+ written: written
52
+ ? {
53
+ outDir: written.outDir,
54
+ files: written.files.map((f) => ({
55
+ path: f.path,
56
+ bytes: f.bytes,
57
+ })),
58
+ }
59
+ : undefined,
60
+ }) + '\n');
61
+ return 0;
62
+ }
63
+ if (diffMode && diff) {
64
+ process.stdout.write(renderOnboardingDiff(diff));
65
+ return 0;
66
+ }
67
+ // Human-readable output.
68
+ process.stdout.write(header('SharkCraft onboarding'));
69
+ process.stdout.write(kv('mode', diffMode ? 'diff' : writeDrafts ? 'write-drafts' : 'dry-run') + '\n');
70
+ process.stdout.write(kv('project', plan.projectSummary.projectName ?? plan.projectSummary.projectRoot) + '\n');
71
+ process.stdout.write(kv('profiles', plan.projectSummary.profiles.length
72
+ ? plan.projectSummary.profiles.join(', ')
73
+ : 'none') + '\n');
74
+ process.stdout.write(kv('readiness', `${plan.readiness.current} (${plan.readiness.currentScore}) → ${plan.readiness.expected} (${plan.readiness.expectedScore})`) + '\n');
75
+ process.stdout.write('\n');
76
+ if (plan.recommendedPresets.length) {
77
+ process.stdout.write('Recommended presets:\n');
78
+ for (const r of plan.recommendedPresets) {
79
+ process.stdout.write(` • ${r.preset.id.padEnd(24)} ${r.confidence.padEnd(8)} ${r.preset.title}\n`);
80
+ }
81
+ process.stdout.write('\n');
82
+ }
83
+ if (plan.inferredPathConventions.length) {
84
+ process.stdout.write(`Path conventions inferred: ${plan.inferredPathConventions.length}\n`);
85
+ for (const p of plan.inferredPathConventions) {
86
+ process.stdout.write(` • ${p.id} — ${p.title}\n`);
87
+ }
88
+ process.stdout.write('\n');
89
+ }
90
+ if (plan.inferredVerificationCommands.length) {
91
+ process.stdout.write(`Verification commands inferred: ${plan.inferredVerificationCommands.length}\n`);
92
+ for (const v of plan.inferredVerificationCommands) {
93
+ process.stdout.write(` • ${v.id.padEnd(14)} ${v.command}\n`);
94
+ }
95
+ process.stdout.write('\n');
96
+ }
97
+ if (plan.inferredBoundaryRules.length) {
98
+ process.stdout.write(`Boundary rules inferred: ${plan.inferredBoundaryRules.length}\n`);
99
+ for (const b of plan.inferredBoundaryRules) {
100
+ process.stdout.write(` • ${b.id} (${b.severity}) — ${b.title}\n`);
101
+ }
102
+ process.stdout.write('\n');
103
+ }
104
+ if (plan.inferredTemplateCandidates.length) {
105
+ process.stdout.write(`Template candidates: ${plan.inferredTemplateCandidates.length}\n`);
106
+ for (const t of plan.inferredTemplateCandidates) {
107
+ const scaffoldTag = t.scaffold ? ' [runnable draft]' : '';
108
+ process.stdout.write(` • ${t.id.padEnd(22)} ${t.confidence.padEnd(7)} ${t.name}${scaffoldTag}\n`);
109
+ }
110
+ process.stdout.write('\n');
111
+ }
112
+ if (plan.inferredRules.length) {
113
+ process.stdout.write(`Rules inferred: ${plan.inferredRules.length}\n`);
114
+ for (const r of plan.inferredRules) {
115
+ process.stdout.write(` • ${r.id.padEnd(28)} ${r.priority.padEnd(8)} ${r.title}\n`);
116
+ }
117
+ process.stdout.write('\n');
118
+ }
119
+ if (plan.inferredPipelines.length) {
120
+ process.stdout.write(`Pipelines inferred: ${plan.inferredPipelines.length}\n`);
121
+ for (const p of plan.inferredPipelines) {
122
+ process.stdout.write(` • ${p.id.padEnd(18)} ${p.title}\n`);
123
+ }
124
+ process.stdout.write('\n');
125
+ }
126
+ if (plan.detectedInstructionFiles.length) {
127
+ process.stdout.write('Existing instruction files:\n');
128
+ for (const f of plan.detectedInstructionFiles) {
129
+ process.stdout.write(` • ${f.path} → ${f.importCommand}\n`);
130
+ }
131
+ process.stdout.write('\n');
132
+ }
133
+ if (plan.monorepoSummary) {
134
+ const m = plan.monorepoSummary;
135
+ process.stdout.write(`Monorepo summary:\n`);
136
+ process.stdout.write(` apps: ${m.apps.length}, packages: ${m.packages.length}, libs: ${m.libs.length}\n`);
137
+ for (const n of m.notes)
138
+ process.stdout.write(` - ${n}\n`);
139
+ if (m.boundaryCandidates.length) {
140
+ process.stdout.write(` boundary candidates: ${m.boundaryCandidates.length}\n`);
141
+ }
142
+ process.stdout.write('\n');
143
+ }
144
+ if (importedAgentRules) {
145
+ process.stdout.write(`Imported agent rules: ${importedAgentRules.entries.length} entr${importedAgentRules.entries.length === 1 ? 'y' : 'ies'}\n`);
146
+ for (const s of importedAgentRules.perSource) {
147
+ process.stdout.write(` • ${s.kind.padEnd(13)} ${s.path.padEnd(20)} ${s.entryCount} entr${s.entryCount === 1 ? 'y' : 'ies'}\n`);
148
+ }
149
+ if (importedAgentRules.warnings.length) {
150
+ for (const w of importedAgentRules.warnings) {
151
+ process.stdout.write(` ! ${w}\n`);
152
+ }
153
+ }
154
+ process.stdout.write('\n');
155
+ }
156
+ if (plan.risks.length) {
157
+ process.stdout.write('Risks / warnings:\n');
158
+ for (const r of plan.risks)
159
+ process.stdout.write(` ! ${r}\n`);
160
+ process.stdout.write('\n');
161
+ }
162
+ process.stdout.write('Next:\n');
163
+ for (const c of plan.nextCommands)
164
+ process.stdout.write(` $ ${c}\n`);
165
+ process.stdout.write('\n');
166
+ if (writeDrafts && written) {
167
+ process.stdout.write(`Wrote ${written.files.length} draft file(s) to:\n ${written.outDir}\n`);
168
+ for (const f of written.files) {
169
+ process.stdout.write(` + ${f.path} (${f.bytes} bytes)\n`);
170
+ }
171
+ }
172
+ else if (dryRun) {
173
+ process.stdout.write('Dry-run only. Re-run with `--write-drafts` to write advisory drafts.\n');
174
+ }
175
+ return 0;
176
+ },
177
+ };
178
+ // ─── shrk onboard adopt ─────────────────────────────────────────────────────
179
+ const CONFIDENCE_VALUES = new Set(['high', 'medium', 'low']);
180
+ const KIND_MAP = {
181
+ rules: AdoptionKind.Rule,
182
+ rule: AdoptionKind.Rule,
183
+ paths: AdoptionKind.Path,
184
+ path: AdoptionKind.Path,
185
+ verifications: AdoptionKind.Verification,
186
+ verification: AdoptionKind.Verification,
187
+ templates: AdoptionKind.Template,
188
+ template: AdoptionKind.Template,
189
+ boundaries: AdoptionKind.Boundary,
190
+ boundary: AdoptionKind.Boundary,
191
+ pipelines: AdoptionKind.Pipeline,
192
+ pipeline: AdoptionKind.Pipeline,
193
+ };
194
+ function parseKindList(values) {
195
+ const out = new Set();
196
+ for (const v of values) {
197
+ const k = KIND_MAP[v.toLowerCase()];
198
+ if (!k) {
199
+ process.stderr.write(`Unknown kind: "${v}" — expected one of rules|paths|verifications|templates|boundaries|pipelines\n`);
200
+ continue;
201
+ }
202
+ out.add(k);
203
+ }
204
+ return [...out];
205
+ }
206
+ async function runOnboardAdopt(args) {
207
+ const subVerb = args.positional[0];
208
+ if (subVerb === 'status')
209
+ return runAdoptStatus(args);
210
+ if (subVerb === 'regenerate')
211
+ return runAdoptRegenerate(args);
212
+ if (subVerb === 'merge-preview')
213
+ return runAdoptMergePreview(args);
214
+ if (subVerb === 'report')
215
+ return runAdoptReport(args);
216
+ if (subVerb === 'check')
217
+ return runAdoptCheck(args);
218
+ if (subVerb === 'diff')
219
+ return runAdoptDiff(args);
220
+ const reviewMode = subVerb === 'review';
221
+ const cwd = resolveCwd(args);
222
+ const inspection = await inspectSharkcraft({ cwd });
223
+ const plan = buildOnboardingPlan(inspection, {});
224
+ const confidenceFlag = flagString(args, 'confidence') ?? 'high';
225
+ if (!CONFIDENCE_VALUES.has(confidenceFlag)) {
226
+ process.stderr.write(`Invalid --confidence: "${confidenceFlag}". Use high|medium|low.\n`);
227
+ return 2;
228
+ }
229
+ const include = parseKindList(flagList(args, 'include'));
230
+ const exclude = parseKindList(flagList(args, 'exclude'));
231
+ const adoption = buildOnboardingAdoptionPlan({
232
+ inspection,
233
+ plan,
234
+ confidence: confidenceFlag,
235
+ ...(include.length > 0 ? { include } : {}),
236
+ ...(exclude.length > 0 ? { exclude } : {}),
237
+ });
238
+ if (reviewMode) {
239
+ return outputAdoptionReview(args, adoption);
240
+ }
241
+ const wantJson = flagBool(args, 'json');
242
+ const wantWritePatch = flagBool(args, 'write-patch');
243
+ const dryRun = flagBool(args, 'dry-run') || !wantWritePatch;
244
+ if (wantWritePatch) {
245
+ const diffFormat = (flagString(args, 'diff-format') ?? 'pseudo');
246
+ if (diffFormat !== 'pseudo' && diffFormat !== 'unified') {
247
+ process.stderr.write(`Invalid --diff-format "${diffFormat}". Use pseudo|unified.\n`);
248
+ return 2;
249
+ }
250
+ const noAutoRegen = flagBool(args, 'no-auto-regenerate');
251
+ const written = writeAdoptionPatch({
252
+ projectRoot: cwd,
253
+ plan: adoption,
254
+ format: diffFormat,
255
+ noAutoRegenerate: noAutoRegen,
256
+ });
257
+ // Record the adoption checkpoint so the diff/status flow can
258
+ // tell whether anything drifted since the last write.
259
+ try {
260
+ const diff = buildOnboardAdoptionDiff(inspection);
261
+ const canonical = renderOnboardAdoptionDiff(diff, 'json');
262
+ const { targets, drafts } = onboardCheckpointArtifacts(diff);
263
+ recordAdoptionCheckpoint({
264
+ projectRoot: cwd,
265
+ kind: 'onboard',
266
+ command: 'shrk onboard adopt --write-patch',
267
+ diffHash: hashDiffBody(canonical),
268
+ targets,
269
+ drafts,
270
+ });
271
+ }
272
+ catch {
273
+ // Best-effort — never block --write-patch on checkpoint write failure.
274
+ }
275
+ if (wantJson) {
276
+ process.stdout.write(asJson({
277
+ mode: 'write-patch',
278
+ format: written.format,
279
+ outDir: written.outDir,
280
+ files: written.files.map((f) => ({ path: f.path, bytes: f.bytes })),
281
+ targets: written.targets,
282
+ summary: adoption.summary,
283
+ statePath: written.statePath,
284
+ archived: written.archived,
285
+ wasStale: written.wasStale,
286
+ }) + '\n');
287
+ return 0;
288
+ }
289
+ process.stdout.write(header(`Onboarding adoption — patch written (${written.format})`));
290
+ process.stdout.write(kv('outDir', written.outDir) + '\n');
291
+ for (const f of written.files)
292
+ process.stdout.write(` + ${f.path} (${f.bytes} bytes)\n`);
293
+ if (written.wasStale && written.archived.length > 0) {
294
+ process.stdout.write(`\n! Previous patch was stale. Archived ${written.archived.length} file(s):\n`);
295
+ for (const a of written.archived)
296
+ process.stdout.write(` • ${a}\n`);
297
+ }
298
+ else if (written.wasStale && noAutoRegen) {
299
+ process.stdout.write('\n! Previous patch was stale, but --no-auto-regenerate kept it.\n');
300
+ }
301
+ if (written.format === 'unified') {
302
+ process.stdout.write('\nTargets:\n');
303
+ for (const t of written.targets) {
304
+ const tag = t.existed ? 'append' : 'create';
305
+ process.stdout.write(` • ${tag.padEnd(7)} ${t.relativePath}${t.beforeHash ? ' hash=' + t.beforeHash.slice(0, 12) : ''}\n`);
306
+ }
307
+ }
308
+ process.stdout.write(`\nReview the patch before applying:\n git apply ${written.outDir}/adopt.patch\n`);
309
+ process.stdout.write(`Status:\n shrk onboard adopt status\n`);
310
+ return 0;
311
+ }
312
+ if (wantJson) {
313
+ process.stdout.write(asJson({
314
+ mode: dryRun ? 'dry-run' : 'preview',
315
+ confidence: adoption.confidence,
316
+ included: adoption.included,
317
+ excluded: adoption.excluded,
318
+ summary: adoption.summary,
319
+ items: adoption.items,
320
+ }) + '\n');
321
+ return 0;
322
+ }
323
+ process.stdout.write(header('Onboarding adoption (dry-run)'));
324
+ printAdoptionSummary(adoption);
325
+ process.stdout.write('\nDry-run only. Re-run with `--write-patch` to write a pseudo-patch under sharkcraft/onboarding/adoption/.\n');
326
+ return 0;
327
+ }
328
+ function outputAdoptionReview(args, adoption) {
329
+ // If a previously-written summary exists, validate target hashes so we can
330
+ // warn when target files changed between plan-time and review-time.
331
+ const cwd = resolveCwd(args);
332
+ const summaryPath = nodePath.join(cwd, 'sharkcraft', 'onboarding', 'adoption', 'adopt-summary.json');
333
+ let targets = [];
334
+ let changedTargets = [];
335
+ if (existsSync(summaryPath)) {
336
+ try {
337
+ const summary = JSON.parse(readFileSync(summaryPath, 'utf8'));
338
+ if (Array.isArray(summary.targets)) {
339
+ targets = summary.targets;
340
+ const v = validatePatchTargets(cwd, targets);
341
+ changedTargets = [...v.changed];
342
+ }
343
+ }
344
+ catch {
345
+ // Ignore — review still works without target validation.
346
+ }
347
+ }
348
+ if (flagBool(args, 'json')) {
349
+ process.stdout.write(asJson({
350
+ confidence: adoption.confidence,
351
+ summary: adoption.summary,
352
+ byCategory: adoption.byCategory,
353
+ patchTargets: targets,
354
+ changedTargets,
355
+ }) + '\n');
356
+ return 0;
357
+ }
358
+ process.stdout.write(header('Onboarding adoption — review'));
359
+ printAdoptionSummary(adoption);
360
+ if (changedTargets.length > 0) {
361
+ process.stdout.write('\n! Target files changed since the patch was written:\n');
362
+ for (const t of changedTargets) {
363
+ process.stdout.write(` • ${t.relativePath} (was hash=${t.beforeHash?.slice(0, 12) ?? '?'})\n`);
364
+ }
365
+ process.stdout.write(' Re-run `shrk onboard adopt --write-patch --diff-format unified` to regenerate.\n');
366
+ }
367
+ for (const cat of Object.values(AdoptionCategory)) {
368
+ const items = adoption.byCategory[cat];
369
+ if (items.length === 0)
370
+ continue;
371
+ process.stdout.write(`\n## ${cat}\n`);
372
+ for (const it of items) {
373
+ process.stdout.write(` • ${it.kind.padEnd(13)} ${it.id.padEnd(30)} ${it.title}\n`);
374
+ process.stdout.write(` reason: ${it.reason}\n`);
375
+ }
376
+ }
377
+ return 0;
378
+ }
379
+ function printAdoptionSummary(adoption) {
380
+ process.stdout.write(kv('confidence', adoption.confidence) + '\n');
381
+ process.stdout.write(kv('included', adoption.included.length ? adoption.included.join(',') : '(none)') + '\n');
382
+ if (adoption.excluded.length > 0) {
383
+ process.stdout.write(kv('excluded', adoption.excluded.join(',')) + '\n');
384
+ }
385
+ process.stdout.write('\nCategory counts:\n');
386
+ for (const cat of Object.values(AdoptionCategory)) {
387
+ process.stdout.write(` ${cat.padEnd(20)} ${adoption.summary[cat]}\n`);
388
+ }
389
+ }
390
+ // ─── shrk onboard adopt status / regenerate / merge-preview / report / check ─
391
+ async function runAdoptStatus(args) {
392
+ const cwd = resolveCwd(args);
393
+ const state = readAdoptionState(cwd);
394
+ const freshness = computeAdoptionFreshness(cwd, state);
395
+ const adoptionDir = nodePath.join(cwd, 'sharkcraft', 'onboarding', 'adoption');
396
+ const patchExists = existsSync(nodePath.join(adoptionDir, 'adopt.patch'));
397
+ const summaryExists = existsSync(nodePath.join(adoptionDir, 'adopt-summary.json'));
398
+ const stateExists = state !== null;
399
+ // Checkpoint evaluation; optional --max-age-days.
400
+ const checkpointRead = readAdoptionCheckpoint(cwd, 'onboard');
401
+ let checkpointEval = null;
402
+ if (checkpointRead.checkpoint) {
403
+ const inspection = await inspectSharkcraft({ cwd });
404
+ const diff = buildOnboardAdoptionDiff(inspection);
405
+ const canonical = renderOnboardAdoptionDiff(diff, 'json');
406
+ const maxAgeDaysRaw = flagNumber(args, 'max-age-days');
407
+ checkpointEval = evaluateAdoptionCheckpoint(cwd, checkpointRead.checkpoint, hashDiffBody(canonical), maxAgeDaysRaw !== undefined ? { maxAgeDays: maxAgeDaysRaw } : {});
408
+ }
409
+ let nextCommand = 'shrk onboard adopt review';
410
+ if (!stateExists) {
411
+ nextCommand = 'shrk onboard --write-drafts && shrk onboard adopt --write-patch';
412
+ }
413
+ else if (freshness.status !== AdoptionFreshnessStatus.Fresh) {
414
+ nextCommand = 'shrk onboard adopt regenerate';
415
+ }
416
+ else if (patchExists) {
417
+ nextCommand = 'shrk onboard adopt check';
418
+ }
419
+ if (flagBool(args, 'json')) {
420
+ process.stdout.write(asJson({
421
+ projectRoot: cwd,
422
+ patchExists,
423
+ summaryExists,
424
+ stateExists,
425
+ freshness,
426
+ categories: state?.categories ?? null,
427
+ nextCommand,
428
+ checkpoint: checkpointRead.checkpoint,
429
+ checkpointStatus: checkpointEval?.status ?? AdoptionCheckpointStatus.Missing,
430
+ checkpointReasons: checkpointEval?.reasons ?? ['no checkpoint'],
431
+ }) + '\n');
432
+ return 0;
433
+ }
434
+ process.stdout.write(header('Onboarding adoption — status'));
435
+ process.stdout.write(kv('project root', cwd) + '\n');
436
+ process.stdout.write(kv('patch.exists', patchExists ? 'yes' : 'no') + '\n');
437
+ process.stdout.write(kv('summary.exists', summaryExists ? 'yes' : 'no') + '\n');
438
+ process.stdout.write(kv('state.exists', stateExists ? 'yes' : 'no') + '\n');
439
+ process.stdout.write(kv('freshness', freshness.status) + '\n');
440
+ if (checkpointRead.checkpoint && checkpointEval) {
441
+ process.stdout.write(kv('checkpoint', checkpointEval.status) + '\n');
442
+ for (const r of checkpointEval.reasons)
443
+ process.stdout.write(` - ${r}\n`);
444
+ }
445
+ else {
446
+ process.stdout.write(kv('checkpoint', 'missing') + '\n');
447
+ }
448
+ if (freshness.staleReasons.length > 0) {
449
+ process.stdout.write('\nStale reasons:\n');
450
+ for (const r of freshness.staleReasons)
451
+ process.stdout.write(` - ${r}\n`);
452
+ }
453
+ if (state) {
454
+ process.stdout.write('\nCategory counts:\n');
455
+ for (const cat of Object.values(AdoptionCategory)) {
456
+ const ids = state.categories[cat] ?? [];
457
+ process.stdout.write(` ${cat.padEnd(20)} ${ids.length}\n`);
458
+ }
459
+ }
460
+ process.stdout.write(`\nNext:\n $ ${nextCommand}\n`);
461
+ if (!stateExists) {
462
+ process.stdout.write('\nTo create an adoption state:\n');
463
+ process.stdout.write(' $ shrk onboard --write-drafts\n');
464
+ process.stdout.write(' $ shrk onboard adopt --write-patch\n');
465
+ }
466
+ return 0;
467
+ }
468
+ async function runAdoptRegenerate(args) {
469
+ const cwd = resolveCwd(args);
470
+ const inspection = await inspectSharkcraft({ cwd });
471
+ const plan = buildOnboardingPlan(inspection, {});
472
+ const adoption = buildOnboardingAdoptionPlan({ inspection, plan });
473
+ const force = flagBool(args, 'force');
474
+ const wantJson = flagBool(args, 'json');
475
+ const diffFormat = (flagString(args, 'diff-format') ?? 'unified');
476
+ if (diffFormat !== 'pseudo' && diffFormat !== 'unified') {
477
+ process.stderr.write(`Invalid --diff-format "${diffFormat}". Use pseudo|unified.\n`);
478
+ return 2;
479
+ }
480
+ // Archive current outputs unless --force (which still archives — --force
481
+ // only overrides "refuse to regenerate" semantics for callers who script it).
482
+ void force;
483
+ const archived = archivePreviousAdoptionOutputs(cwd);
484
+ const written = writeAdoptionPatch({
485
+ projectRoot: cwd,
486
+ plan: adoption,
487
+ format: diffFormat,
488
+ noAutoRegenerate: true, // we already archived above
489
+ });
490
+ if (wantJson) {
491
+ process.stdout.write(asJson({
492
+ mode: 'regenerate',
493
+ archived: archived.archived,
494
+ historyDir: archived.historyDir,
495
+ outDir: written.outDir,
496
+ statePath: written.statePath,
497
+ files: written.files.map((f) => ({ path: f.path, bytes: f.bytes })),
498
+ targets: written.targets,
499
+ summary: adoption.summary,
500
+ }) + '\n');
501
+ return 0;
502
+ }
503
+ process.stdout.write(header('Onboarding adoption — regenerated'));
504
+ if (archived.archived.length > 0) {
505
+ process.stdout.write('Archived previous outputs:\n');
506
+ for (const a of archived.archived)
507
+ process.stdout.write(` • ${a}\n`);
508
+ }
509
+ process.stdout.write('\nWrote new outputs:\n');
510
+ for (const f of written.files)
511
+ process.stdout.write(` + ${f.path} (${f.bytes} bytes)\n`);
512
+ process.stdout.write(`\nNext:\n $ shrk onboard adopt status\n`);
513
+ return 0;
514
+ }
515
+ async function runAdoptMergePreview(args) {
516
+ const cwd = resolveCwd(args);
517
+ const inspection = await inspectSharkcraft({ cwd });
518
+ const plan = buildOnboardingPlan(inspection, {});
519
+ const adoption = buildOnboardingAdoptionPlan({ inspection, plan });
520
+ const preview = buildAdoptionMergePreview({ projectRoot: cwd, plan: adoption });
521
+ const wantJson = flagBool(args, 'json');
522
+ const format = (flagString(args, 'format') ?? (wantJson ? 'json' : 'text'));
523
+ if (wantJson || format === 'json') {
524
+ process.stdout.write(asJson(preview) + '\n');
525
+ return 0;
526
+ }
527
+ if (format === 'markdown') {
528
+ process.stdout.write(renderAdoptionMergePreviewMarkdown(preview));
529
+ return 0;
530
+ }
531
+ if (format === 'html') {
532
+ process.stdout.write(renderAdoptionMergePreviewHtml(preview));
533
+ return 0;
534
+ }
535
+ process.stdout.write(renderAdoptionMergePreviewText(preview));
536
+ return 0;
537
+ }
538
+ async function runAdoptReport(args) {
539
+ const cwd = resolveCwd(args);
540
+ const inspection = await inspectSharkcraft({ cwd });
541
+ const plan = buildOnboardingPlan(inspection, {});
542
+ const adoption = buildOnboardingAdoptionPlan({ inspection, plan });
543
+ const state = readAdoptionState(cwd);
544
+ const report = buildAdoptionReport({ projectRoot: cwd, plan: adoption, state });
545
+ const wantJson = flagBool(args, 'json');
546
+ const format = (flagString(args, 'format') ?? (wantJson ? 'json' : 'text'));
547
+ let body;
548
+ if (wantJson || format === 'json')
549
+ body = renderAdoptionReportJson(report);
550
+ else if (format === 'markdown')
551
+ body = renderAdoptionReportMarkdown(report);
552
+ else if (format === 'html')
553
+ body = renderAdoptionReportHtml(report);
554
+ else
555
+ body = renderAdoptionReportText(report);
556
+ const outputPath = flagString(args, 'output');
557
+ if (outputPath) {
558
+ const abs = nodePath.isAbsolute(outputPath) ? outputPath : nodePath.resolve(cwd, outputPath);
559
+ writeFileSync(abs, body, 'utf8');
560
+ if (!wantJson)
561
+ process.stdout.write(`Wrote adoption report to ${abs}\n`);
562
+ else
563
+ process.stdout.write(asJson({ wrote: abs, bytes: Buffer.byteLength(body) }) + '\n');
564
+ return 0;
565
+ }
566
+ process.stdout.write(body);
567
+ return 0;
568
+ }
569
+ function onboardCheckpointArtifacts(diff) {
570
+ const targets = [
571
+ 'sharkcraft/rules.ts',
572
+ 'sharkcraft/paths.ts',
573
+ 'sharkcraft/pipelines.ts',
574
+ 'sharkcraft/sharkcraft.config.ts',
575
+ 'sharkcraft/templates.ts',
576
+ 'sharkcraft/boundaries.ts',
577
+ ];
578
+ const drafts = [
579
+ 'sharkcraft/onboarding/inferred-rules.draft.ts',
580
+ 'sharkcraft/onboarding/inferred-paths.draft.ts',
581
+ 'sharkcraft/onboarding/inferred-pipelines.draft.ts',
582
+ 'sharkcraft/onboarding/inferred-templates.draft.ts',
583
+ 'sharkcraft/onboarding/inferred-boundaries.draft.ts',
584
+ 'sharkcraft/onboarding/onboarding-report.md',
585
+ ];
586
+ void diff;
587
+ return { targets, drafts };
588
+ }
589
+ async function runAdoptDiff(args) {
590
+ const cwd = resolveCwd(args);
591
+ const formatRaw = (flagString(args, 'format') ?? 'text');
592
+ const valid = new Set(['text', 'markdown', 'html', 'json']);
593
+ if (!valid.has(formatRaw)) {
594
+ process.stderr.write(`Unknown --format "${formatRaw}". Use text|markdown|html|json.\n`);
595
+ return 2;
596
+ }
597
+ const confidenceFlag = flagString(args, 'confidence') ?? 'high';
598
+ if (!CONFIDENCE_VALUES.has(confidenceFlag)) {
599
+ process.stderr.write(`Invalid --confidence: "${confidenceFlag}". Use high|medium|low.\n`);
600
+ return 2;
601
+ }
602
+ const include = parseKindList(flagList(args, 'include'));
603
+ const exclude = parseKindList(flagList(args, 'exclude'));
604
+ const inspection = await inspectSharkcraft({ cwd });
605
+ const diff = buildOnboardAdoptionDiff(inspection, {
606
+ confidence: confidenceFlag,
607
+ ...(include.length > 0 ? { include } : {}),
608
+ ...(exclude.length > 0 ? { exclude } : {}),
609
+ });
610
+ process.stdout.write(renderOnboardAdoptionDiff(diff, formatRaw));
611
+ if (flagBool(args, 'record-checkpoint')) {
612
+ const canonical = renderOnboardAdoptionDiff(diff, 'json');
613
+ const { targets, drafts } = onboardCheckpointArtifacts(diff);
614
+ const checkpoint = recordAdoptionCheckpoint({
615
+ projectRoot: cwd,
616
+ kind: 'onboard',
617
+ command: 'shrk onboard adopt diff --record-checkpoint',
618
+ diffHash: hashDiffBody(canonical),
619
+ targets,
620
+ drafts,
621
+ });
622
+ process.stdout.write(`\nRecorded checkpoint (diff hash ${checkpoint.diffHash.slice(0, 12)}…) at sharkcraft/onboarding/adoption/adoption-checkpoint.json\n`);
623
+ }
624
+ return 0;
625
+ }
626
+ function runAdoptCheck(args) {
627
+ const cwd = resolveCwd(args);
628
+ const result = buildAdoptionCheck({ projectRoot: cwd });
629
+ if (flagBool(args, 'json')) {
630
+ process.stdout.write(asJson(result) + '\n');
631
+ return result.canApply === AdoptionCheckResult.CanApply ? 0 : 1;
632
+ }
633
+ process.stdout.write(header('Onboarding adoption — check'));
634
+ process.stdout.write(kv('canApply', result.canApply) + '\n');
635
+ process.stdout.write(kv('patchFormat', result.patchFormat) + '\n');
636
+ if (result.patchPath)
637
+ process.stdout.write(kv('patchPath', result.patchPath) + '\n');
638
+ process.stdout.write('\nChecks:\n');
639
+ for (const c of result.checks) {
640
+ const tag = c.severity === 'error' ? 'ERR ' : c.severity === 'warning' ? 'WARN' : 'INFO';
641
+ process.stdout.write(` ${tag} ${c.id.padEnd(28)} ${c.message}\n`);
642
+ }
643
+ if (result.warnings.length > 0) {
644
+ process.stdout.write('\nWarnings:\n');
645
+ for (const w of result.warnings)
646
+ process.stdout.write(` - ${w}\n`);
647
+ }
648
+ process.stdout.write(`\nNext:\n $ ${result.nextCommand}\n`);
649
+ return result.canApply === AdoptionCheckResult.CanApply ? 0 : 1;
650
+ }
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const orchestrateCommand: ICommandHandler;
3
+ //# sourceMappingURL=orchestrate.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate.command.d.ts","sourceRoot":"","sources":["../../src/commands/orchestrate.command.ts"],"names":[],"mappings":"AASA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,kBAAkB,EAAE,eA8ChC,CAAC"}