@shrkcrft/cli 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +326 -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 +580 -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 +3255 -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 +682 -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 +129 -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 +300 -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 +203 -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 +662 -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 +964 -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 +380 -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 +721 -0
  393. package/dist/output/failure-hints.d.ts +63 -0
  394. package/dist/output/failure-hints.d.ts.map +1 -0
  395. package/dist/output/failure-hints.js +165 -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 +31 -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 +40 -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 +72 -0
@@ -0,0 +1,662 @@
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). Re-running `--write-drafts` against hand-edited drafts performs a three-way merge against the previous snapshot; conflicts emit conflict markers inside the draft (use `--abort-on-conflict` for CI to leave the file untouched and exit non-zero). `--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] [--abort-on-conflict] [--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 abortOnConflict = flagBool(args, 'abort-on-conflict');
19
+ const scaffoldTemplates = flagBool(args, 'scaffold-templates');
20
+ const importAgents = flagBool(args, 'import-agents');
21
+ const diffMode = flagBool(args, 'diff');
22
+ const dryRun = flagBool(args, 'dry-run') || !writeDrafts;
23
+ const preferredPreset = flagString(args, 'preset');
24
+ const asJsonOut = flagBool(args, 'json');
25
+ const inspection = await inspectSharkcraft({ cwd });
26
+ const plan = buildOnboardingPlan(inspection, {
27
+ ...(preferredPreset ? { preferredPreset } : {}),
28
+ ...(scaffoldTemplates ? { scaffoldTemplates: true } : {}),
29
+ });
30
+ let importedAgentRules;
31
+ if (importAgents) {
32
+ importedAgentRules = importAgentRulesForOnboarding({ projectRoot: cwd });
33
+ }
34
+ let written;
35
+ if (writeDrafts) {
36
+ written = writeOnboardingDrafts(plan, {
37
+ projectRoot: cwd,
38
+ ...(importedAgentRules ? { importedAgentRules } : {}),
39
+ abortOnConflict,
40
+ });
41
+ }
42
+ const diff = diffMode ? buildOnboardingDiff(inspection, plan) : undefined;
43
+ if (asJsonOut) {
44
+ process.stdout.write(asJson({
45
+ mode: diffMode
46
+ ? 'diff'
47
+ : writeDrafts
48
+ ? 'write-drafts'
49
+ : 'dry-run',
50
+ plan,
51
+ ...(diff ? { diff } : {}),
52
+ ...(importedAgentRules ? { importedAgentRules } : {}),
53
+ written: written
54
+ ? {
55
+ outDir: written.outDir,
56
+ files: written.files.map((f) => ({
57
+ path: f.path,
58
+ bytes: f.bytes,
59
+ })),
60
+ }
61
+ : undefined,
62
+ }) + '\n');
63
+ return 0;
64
+ }
65
+ if (diffMode && diff) {
66
+ process.stdout.write(renderOnboardingDiff(diff));
67
+ return 0;
68
+ }
69
+ // Human-readable output.
70
+ process.stdout.write(header('SharkCraft onboarding'));
71
+ process.stdout.write(kv('mode', diffMode ? 'diff' : writeDrafts ? 'write-drafts' : 'dry-run') + '\n');
72
+ process.stdout.write(kv('project', plan.projectSummary.projectName ?? plan.projectSummary.projectRoot) + '\n');
73
+ process.stdout.write(kv('profiles', plan.projectSummary.profiles.length
74
+ ? plan.projectSummary.profiles.join(', ')
75
+ : 'none') + '\n');
76
+ process.stdout.write(kv('readiness', `${plan.readiness.current} (${plan.readiness.currentScore}) → ${plan.readiness.expected} (${plan.readiness.expectedScore})`) + '\n');
77
+ process.stdout.write('\n');
78
+ if (plan.recommendedPresets.length) {
79
+ process.stdout.write('Recommended presets:\n');
80
+ for (const r of plan.recommendedPresets) {
81
+ process.stdout.write(` • ${r.preset.id.padEnd(24)} ${r.confidence.padEnd(8)} ${r.preset.title}\n`);
82
+ }
83
+ process.stdout.write('\n');
84
+ }
85
+ if (plan.inferredPathConventions.length) {
86
+ process.stdout.write(`Path conventions inferred: ${plan.inferredPathConventions.length}\n`);
87
+ for (const p of plan.inferredPathConventions) {
88
+ process.stdout.write(` • ${p.id} — ${p.title}\n`);
89
+ }
90
+ process.stdout.write('\n');
91
+ }
92
+ if (plan.inferredVerificationCommands.length) {
93
+ process.stdout.write(`Verification commands inferred: ${plan.inferredVerificationCommands.length}\n`);
94
+ for (const v of plan.inferredVerificationCommands) {
95
+ process.stdout.write(` • ${v.id.padEnd(14)} ${v.command}\n`);
96
+ }
97
+ process.stdout.write('\n');
98
+ }
99
+ if (plan.inferredBoundaryRules.length) {
100
+ process.stdout.write(`Boundary rules inferred: ${plan.inferredBoundaryRules.length}\n`);
101
+ for (const b of plan.inferredBoundaryRules) {
102
+ process.stdout.write(` • ${b.id} (${b.severity}) — ${b.title}\n`);
103
+ }
104
+ process.stdout.write('\n');
105
+ }
106
+ if (plan.inferredTemplateCandidates.length) {
107
+ process.stdout.write(`Template candidates: ${plan.inferredTemplateCandidates.length}\n`);
108
+ for (const t of plan.inferredTemplateCandidates) {
109
+ const scaffoldTag = t.scaffold ? ' [runnable draft]' : '';
110
+ process.stdout.write(` • ${t.id.padEnd(22)} ${t.confidence.padEnd(7)} ${t.name}${scaffoldTag}\n`);
111
+ }
112
+ process.stdout.write('\n');
113
+ }
114
+ if (plan.inferredRules.length) {
115
+ process.stdout.write(`Rules inferred: ${plan.inferredRules.length}\n`);
116
+ for (const r of plan.inferredRules) {
117
+ process.stdout.write(` • ${r.id.padEnd(28)} ${r.priority.padEnd(8)} ${r.title}\n`);
118
+ }
119
+ process.stdout.write('\n');
120
+ }
121
+ if (plan.inferredPipelines.length) {
122
+ process.stdout.write(`Pipelines inferred: ${plan.inferredPipelines.length}\n`);
123
+ for (const p of plan.inferredPipelines) {
124
+ process.stdout.write(` • ${p.id.padEnd(18)} ${p.title}\n`);
125
+ }
126
+ process.stdout.write('\n');
127
+ }
128
+ if (plan.detectedInstructionFiles.length) {
129
+ process.stdout.write('Existing instruction files:\n');
130
+ for (const f of plan.detectedInstructionFiles) {
131
+ process.stdout.write(` • ${f.path} → ${f.importCommand}\n`);
132
+ }
133
+ process.stdout.write('\n');
134
+ }
135
+ if (plan.monorepoSummary) {
136
+ const m = plan.monorepoSummary;
137
+ process.stdout.write(`Monorepo summary:\n`);
138
+ process.stdout.write(` apps: ${m.apps.length}, packages: ${m.packages.length}, libs: ${m.libs.length}\n`);
139
+ for (const n of m.notes)
140
+ process.stdout.write(` - ${n}\n`);
141
+ if (m.boundaryCandidates.length) {
142
+ process.stdout.write(` boundary candidates: ${m.boundaryCandidates.length}\n`);
143
+ }
144
+ process.stdout.write('\n');
145
+ }
146
+ if (importedAgentRules) {
147
+ process.stdout.write(`Imported agent rules: ${importedAgentRules.entries.length} entr${importedAgentRules.entries.length === 1 ? 'y' : 'ies'}\n`);
148
+ for (const s of importedAgentRules.perSource) {
149
+ process.stdout.write(` • ${s.kind.padEnd(13)} ${s.path.padEnd(20)} ${s.entryCount} entr${s.entryCount === 1 ? 'y' : 'ies'}\n`);
150
+ }
151
+ if (importedAgentRules.warnings.length) {
152
+ for (const w of importedAgentRules.warnings) {
153
+ process.stdout.write(` ! ${w}\n`);
154
+ }
155
+ }
156
+ process.stdout.write('\n');
157
+ }
158
+ if (plan.risks.length) {
159
+ process.stdout.write('Risks / warnings:\n');
160
+ for (const r of plan.risks)
161
+ process.stdout.write(` ! ${r}\n`);
162
+ process.stdout.write('\n');
163
+ }
164
+ process.stdout.write('Next:\n');
165
+ for (const c of plan.nextCommands)
166
+ process.stdout.write(` $ ${c}\n`);
167
+ process.stdout.write('\n');
168
+ if (writeDrafts && written) {
169
+ process.stdout.write(`Wrote ${written.files.length} draft file(s) to:\n ${written.outDir}\n`);
170
+ for (const f of written.files) {
171
+ process.stdout.write(` + ${f.path} (${f.bytes} bytes) [${f.mergeStatus}]\n`);
172
+ }
173
+ if (written.conflicts > 0) {
174
+ process.stderr.write(`\nConflict regions emitted in ${written.conflicts} draft file(s). ` +
175
+ 'Resolve <<<<<<< / ======= / >>>>>>> markers before adopting.\n');
176
+ }
177
+ if (written.aborted > 0) {
178
+ process.stderr.write(`\n--abort-on-conflict: ${written.aborted} draft file(s) left unchanged due to conflicts.\n`);
179
+ return 1;
180
+ }
181
+ if (written.conflicts > 0)
182
+ return 2;
183
+ }
184
+ else if (dryRun) {
185
+ process.stdout.write('Dry-run only. Re-run with `--write-drafts` to write advisory drafts.\n');
186
+ }
187
+ return 0;
188
+ },
189
+ };
190
+ // ─── shrk onboard adopt ─────────────────────────────────────────────────────
191
+ const CONFIDENCE_VALUES = new Set(['high', 'medium', 'low']);
192
+ const KIND_MAP = {
193
+ rules: AdoptionKind.Rule,
194
+ rule: AdoptionKind.Rule,
195
+ paths: AdoptionKind.Path,
196
+ path: AdoptionKind.Path,
197
+ verifications: AdoptionKind.Verification,
198
+ verification: AdoptionKind.Verification,
199
+ templates: AdoptionKind.Template,
200
+ template: AdoptionKind.Template,
201
+ boundaries: AdoptionKind.Boundary,
202
+ boundary: AdoptionKind.Boundary,
203
+ pipelines: AdoptionKind.Pipeline,
204
+ pipeline: AdoptionKind.Pipeline,
205
+ };
206
+ function parseKindList(values) {
207
+ const out = new Set();
208
+ for (const v of values) {
209
+ const k = KIND_MAP[v.toLowerCase()];
210
+ if (!k) {
211
+ process.stderr.write(`Unknown kind: "${v}" — expected one of rules|paths|verifications|templates|boundaries|pipelines\n`);
212
+ continue;
213
+ }
214
+ out.add(k);
215
+ }
216
+ return [...out];
217
+ }
218
+ async function runOnboardAdopt(args) {
219
+ const subVerb = args.positional[0];
220
+ if (subVerb === 'status')
221
+ return runAdoptStatus(args);
222
+ if (subVerb === 'regenerate')
223
+ return runAdoptRegenerate(args);
224
+ if (subVerb === 'merge-preview')
225
+ return runAdoptMergePreview(args);
226
+ if (subVerb === 'report')
227
+ return runAdoptReport(args);
228
+ if (subVerb === 'check')
229
+ return runAdoptCheck(args);
230
+ if (subVerb === 'diff')
231
+ return runAdoptDiff(args);
232
+ const reviewMode = subVerb === 'review';
233
+ const cwd = resolveCwd(args);
234
+ const inspection = await inspectSharkcraft({ cwd });
235
+ const plan = buildOnboardingPlan(inspection, {});
236
+ const confidenceFlag = flagString(args, 'confidence') ?? 'high';
237
+ if (!CONFIDENCE_VALUES.has(confidenceFlag)) {
238
+ process.stderr.write(`Invalid --confidence: "${confidenceFlag}". Use high|medium|low.\n`);
239
+ return 2;
240
+ }
241
+ const include = parseKindList(flagList(args, 'include'));
242
+ const exclude = parseKindList(flagList(args, 'exclude'));
243
+ const adoption = buildOnboardingAdoptionPlan({
244
+ inspection,
245
+ plan,
246
+ confidence: confidenceFlag,
247
+ ...(include.length > 0 ? { include } : {}),
248
+ ...(exclude.length > 0 ? { exclude } : {}),
249
+ });
250
+ if (reviewMode) {
251
+ return outputAdoptionReview(args, adoption);
252
+ }
253
+ const wantJson = flagBool(args, 'json');
254
+ const wantWritePatch = flagBool(args, 'write-patch');
255
+ const dryRun = flagBool(args, 'dry-run') || !wantWritePatch;
256
+ if (wantWritePatch) {
257
+ const diffFormat = (flagString(args, 'diff-format') ?? 'pseudo');
258
+ if (diffFormat !== 'pseudo' && diffFormat !== 'unified') {
259
+ process.stderr.write(`Invalid --diff-format "${diffFormat}". Use pseudo|unified.\n`);
260
+ return 2;
261
+ }
262
+ const noAutoRegen = flagBool(args, 'no-auto-regenerate');
263
+ const written = writeAdoptionPatch({
264
+ projectRoot: cwd,
265
+ plan: adoption,
266
+ format: diffFormat,
267
+ noAutoRegenerate: noAutoRegen,
268
+ });
269
+ // Record the adoption checkpoint so the diff/status flow can
270
+ // tell whether anything drifted since the last write.
271
+ try {
272
+ const diff = buildOnboardAdoptionDiff(inspection);
273
+ const canonical = renderOnboardAdoptionDiff(diff, 'json');
274
+ const { targets, drafts } = onboardCheckpointArtifacts(diff);
275
+ recordAdoptionCheckpoint({
276
+ projectRoot: cwd,
277
+ kind: 'onboard',
278
+ command: 'shrk onboard adopt --write-patch',
279
+ diffHash: hashDiffBody(canonical),
280
+ targets,
281
+ drafts,
282
+ });
283
+ }
284
+ catch {
285
+ // Best-effort — never block --write-patch on checkpoint write failure.
286
+ }
287
+ if (wantJson) {
288
+ process.stdout.write(asJson({
289
+ mode: 'write-patch',
290
+ format: written.format,
291
+ outDir: written.outDir,
292
+ files: written.files.map((f) => ({ path: f.path, bytes: f.bytes })),
293
+ targets: written.targets,
294
+ summary: adoption.summary,
295
+ statePath: written.statePath,
296
+ archived: written.archived,
297
+ wasStale: written.wasStale,
298
+ }) + '\n');
299
+ return 0;
300
+ }
301
+ process.stdout.write(header(`Onboarding adoption — patch written (${written.format})`));
302
+ process.stdout.write(kv('outDir', written.outDir) + '\n');
303
+ for (const f of written.files)
304
+ process.stdout.write(` + ${f.path} (${f.bytes} bytes)\n`);
305
+ if (written.wasStale && written.archived.length > 0) {
306
+ process.stdout.write(`\n! Previous patch was stale. Archived ${written.archived.length} file(s):\n`);
307
+ for (const a of written.archived)
308
+ process.stdout.write(` • ${a}\n`);
309
+ }
310
+ else if (written.wasStale && noAutoRegen) {
311
+ process.stdout.write('\n! Previous patch was stale, but --no-auto-regenerate kept it.\n');
312
+ }
313
+ if (written.format === 'unified') {
314
+ process.stdout.write('\nTargets:\n');
315
+ for (const t of written.targets) {
316
+ const tag = t.existed ? 'append' : 'create';
317
+ process.stdout.write(` • ${tag.padEnd(7)} ${t.relativePath}${t.beforeHash ? ' hash=' + t.beforeHash.slice(0, 12) : ''}\n`);
318
+ }
319
+ }
320
+ process.stdout.write(`\nReview the patch before applying:\n git apply ${written.outDir}/adopt.patch\n`);
321
+ process.stdout.write(`Status:\n shrk onboard adopt status\n`);
322
+ return 0;
323
+ }
324
+ if (wantJson) {
325
+ process.stdout.write(asJson({
326
+ mode: dryRun ? 'dry-run' : 'preview',
327
+ confidence: adoption.confidence,
328
+ included: adoption.included,
329
+ excluded: adoption.excluded,
330
+ summary: adoption.summary,
331
+ items: adoption.items,
332
+ }) + '\n');
333
+ return 0;
334
+ }
335
+ process.stdout.write(header('Onboarding adoption (dry-run)'));
336
+ printAdoptionSummary(adoption);
337
+ process.stdout.write('\nDry-run only. Re-run with `--write-patch` to write a pseudo-patch under sharkcraft/onboarding/adoption/.\n');
338
+ return 0;
339
+ }
340
+ function outputAdoptionReview(args, adoption) {
341
+ // If a previously-written summary exists, validate target hashes so we can
342
+ // warn when target files changed between plan-time and review-time.
343
+ const cwd = resolveCwd(args);
344
+ const summaryPath = nodePath.join(cwd, 'sharkcraft', 'onboarding', 'adoption', 'adopt-summary.json');
345
+ let targets = [];
346
+ let changedTargets = [];
347
+ if (existsSync(summaryPath)) {
348
+ try {
349
+ const summary = JSON.parse(readFileSync(summaryPath, 'utf8'));
350
+ if (Array.isArray(summary.targets)) {
351
+ targets = summary.targets;
352
+ const v = validatePatchTargets(cwd, targets);
353
+ changedTargets = [...v.changed];
354
+ }
355
+ }
356
+ catch {
357
+ // Ignore — review still works without target validation.
358
+ }
359
+ }
360
+ if (flagBool(args, 'json')) {
361
+ process.stdout.write(asJson({
362
+ confidence: adoption.confidence,
363
+ summary: adoption.summary,
364
+ byCategory: adoption.byCategory,
365
+ patchTargets: targets,
366
+ changedTargets,
367
+ }) + '\n');
368
+ return 0;
369
+ }
370
+ process.stdout.write(header('Onboarding adoption — review'));
371
+ printAdoptionSummary(adoption);
372
+ if (changedTargets.length > 0) {
373
+ process.stdout.write('\n! Target files changed since the patch was written:\n');
374
+ for (const t of changedTargets) {
375
+ process.stdout.write(` • ${t.relativePath} (was hash=${t.beforeHash?.slice(0, 12) ?? '?'})\n`);
376
+ }
377
+ process.stdout.write(' Re-run `shrk onboard adopt --write-patch --diff-format unified` to regenerate.\n');
378
+ }
379
+ for (const cat of Object.values(AdoptionCategory)) {
380
+ const items = adoption.byCategory[cat];
381
+ if (items.length === 0)
382
+ continue;
383
+ process.stdout.write(`\n## ${cat}\n`);
384
+ for (const it of items) {
385
+ process.stdout.write(` • ${it.kind.padEnd(13)} ${it.id.padEnd(30)} ${it.title}\n`);
386
+ process.stdout.write(` reason: ${it.reason}\n`);
387
+ }
388
+ }
389
+ return 0;
390
+ }
391
+ function printAdoptionSummary(adoption) {
392
+ process.stdout.write(kv('confidence', adoption.confidence) + '\n');
393
+ process.stdout.write(kv('included', adoption.included.length ? adoption.included.join(',') : '(none)') + '\n');
394
+ if (adoption.excluded.length > 0) {
395
+ process.stdout.write(kv('excluded', adoption.excluded.join(',')) + '\n');
396
+ }
397
+ process.stdout.write('\nCategory counts:\n');
398
+ for (const cat of Object.values(AdoptionCategory)) {
399
+ process.stdout.write(` ${cat.padEnd(20)} ${adoption.summary[cat]}\n`);
400
+ }
401
+ }
402
+ // ─── shrk onboard adopt status / regenerate / merge-preview / report / check ─
403
+ async function runAdoptStatus(args) {
404
+ const cwd = resolveCwd(args);
405
+ const state = readAdoptionState(cwd);
406
+ const freshness = computeAdoptionFreshness(cwd, state);
407
+ const adoptionDir = nodePath.join(cwd, 'sharkcraft', 'onboarding', 'adoption');
408
+ const patchExists = existsSync(nodePath.join(adoptionDir, 'adopt.patch'));
409
+ const summaryExists = existsSync(nodePath.join(adoptionDir, 'adopt-summary.json'));
410
+ const stateExists = state !== null;
411
+ // Checkpoint evaluation; optional --max-age-days.
412
+ const checkpointRead = readAdoptionCheckpoint(cwd, 'onboard');
413
+ let checkpointEval = null;
414
+ if (checkpointRead.checkpoint) {
415
+ const inspection = await inspectSharkcraft({ cwd });
416
+ const diff = buildOnboardAdoptionDiff(inspection);
417
+ const canonical = renderOnboardAdoptionDiff(diff, 'json');
418
+ const maxAgeDaysRaw = flagNumber(args, 'max-age-days');
419
+ checkpointEval = evaluateAdoptionCheckpoint(cwd, checkpointRead.checkpoint, hashDiffBody(canonical), maxAgeDaysRaw !== undefined ? { maxAgeDays: maxAgeDaysRaw } : {});
420
+ }
421
+ let nextCommand = 'shrk onboard adopt review';
422
+ if (!stateExists) {
423
+ nextCommand = 'shrk onboard --write-drafts && shrk onboard adopt --write-patch';
424
+ }
425
+ else if (freshness.status !== AdoptionFreshnessStatus.Fresh) {
426
+ nextCommand = 'shrk onboard adopt regenerate';
427
+ }
428
+ else if (patchExists) {
429
+ nextCommand = 'shrk onboard adopt check';
430
+ }
431
+ if (flagBool(args, 'json')) {
432
+ process.stdout.write(asJson({
433
+ projectRoot: cwd,
434
+ patchExists,
435
+ summaryExists,
436
+ stateExists,
437
+ freshness,
438
+ categories: state?.categories ?? null,
439
+ nextCommand,
440
+ checkpoint: checkpointRead.checkpoint,
441
+ checkpointStatus: checkpointEval?.status ?? AdoptionCheckpointStatus.Missing,
442
+ checkpointReasons: checkpointEval?.reasons ?? ['no checkpoint'],
443
+ }) + '\n');
444
+ return 0;
445
+ }
446
+ process.stdout.write(header('Onboarding adoption — status'));
447
+ process.stdout.write(kv('project root', cwd) + '\n');
448
+ process.stdout.write(kv('patch.exists', patchExists ? 'yes' : 'no') + '\n');
449
+ process.stdout.write(kv('summary.exists', summaryExists ? 'yes' : 'no') + '\n');
450
+ process.stdout.write(kv('state.exists', stateExists ? 'yes' : 'no') + '\n');
451
+ process.stdout.write(kv('freshness', freshness.status) + '\n');
452
+ if (checkpointRead.checkpoint && checkpointEval) {
453
+ process.stdout.write(kv('checkpoint', checkpointEval.status) + '\n');
454
+ for (const r of checkpointEval.reasons)
455
+ process.stdout.write(` - ${r}\n`);
456
+ }
457
+ else {
458
+ process.stdout.write(kv('checkpoint', 'missing') + '\n');
459
+ }
460
+ if (freshness.staleReasons.length > 0) {
461
+ process.stdout.write('\nStale reasons:\n');
462
+ for (const r of freshness.staleReasons)
463
+ process.stdout.write(` - ${r}\n`);
464
+ }
465
+ if (state) {
466
+ process.stdout.write('\nCategory counts:\n');
467
+ for (const cat of Object.values(AdoptionCategory)) {
468
+ const ids = state.categories[cat] ?? [];
469
+ process.stdout.write(` ${cat.padEnd(20)} ${ids.length}\n`);
470
+ }
471
+ }
472
+ process.stdout.write(`\nNext:\n $ ${nextCommand}\n`);
473
+ if (!stateExists) {
474
+ process.stdout.write('\nTo create an adoption state:\n');
475
+ process.stdout.write(' $ shrk onboard --write-drafts\n');
476
+ process.stdout.write(' $ shrk onboard adopt --write-patch\n');
477
+ }
478
+ return 0;
479
+ }
480
+ async function runAdoptRegenerate(args) {
481
+ const cwd = resolveCwd(args);
482
+ const inspection = await inspectSharkcraft({ cwd });
483
+ const plan = buildOnboardingPlan(inspection, {});
484
+ const adoption = buildOnboardingAdoptionPlan({ inspection, plan });
485
+ const force = flagBool(args, 'force');
486
+ const wantJson = flagBool(args, 'json');
487
+ const diffFormat = (flagString(args, 'diff-format') ?? 'unified');
488
+ if (diffFormat !== 'pseudo' && diffFormat !== 'unified') {
489
+ process.stderr.write(`Invalid --diff-format "${diffFormat}". Use pseudo|unified.\n`);
490
+ return 2;
491
+ }
492
+ // Archive current outputs unless --force (which still archives — --force
493
+ // only overrides "refuse to regenerate" semantics for callers who script it).
494
+ void force;
495
+ const archived = archivePreviousAdoptionOutputs(cwd);
496
+ const written = writeAdoptionPatch({
497
+ projectRoot: cwd,
498
+ plan: adoption,
499
+ format: diffFormat,
500
+ noAutoRegenerate: true, // we already archived above
501
+ });
502
+ if (wantJson) {
503
+ process.stdout.write(asJson({
504
+ mode: 'regenerate',
505
+ archived: archived.archived,
506
+ historyDir: archived.historyDir,
507
+ outDir: written.outDir,
508
+ statePath: written.statePath,
509
+ files: written.files.map((f) => ({ path: f.path, bytes: f.bytes })),
510
+ targets: written.targets,
511
+ summary: adoption.summary,
512
+ }) + '\n');
513
+ return 0;
514
+ }
515
+ process.stdout.write(header('Onboarding adoption — regenerated'));
516
+ if (archived.archived.length > 0) {
517
+ process.stdout.write('Archived previous outputs:\n');
518
+ for (const a of archived.archived)
519
+ process.stdout.write(` • ${a}\n`);
520
+ }
521
+ process.stdout.write('\nWrote new outputs:\n');
522
+ for (const f of written.files)
523
+ process.stdout.write(` + ${f.path} (${f.bytes} bytes)\n`);
524
+ process.stdout.write(`\nNext:\n $ shrk onboard adopt status\n`);
525
+ return 0;
526
+ }
527
+ async function runAdoptMergePreview(args) {
528
+ const cwd = resolveCwd(args);
529
+ const inspection = await inspectSharkcraft({ cwd });
530
+ const plan = buildOnboardingPlan(inspection, {});
531
+ const adoption = buildOnboardingAdoptionPlan({ inspection, plan });
532
+ const preview = buildAdoptionMergePreview({ projectRoot: cwd, plan: adoption });
533
+ const wantJson = flagBool(args, 'json');
534
+ const format = (flagString(args, 'format') ?? (wantJson ? 'json' : 'text'));
535
+ if (wantJson || format === 'json') {
536
+ process.stdout.write(asJson(preview) + '\n');
537
+ return 0;
538
+ }
539
+ if (format === 'markdown') {
540
+ process.stdout.write(renderAdoptionMergePreviewMarkdown(preview));
541
+ return 0;
542
+ }
543
+ if (format === 'html') {
544
+ process.stdout.write(renderAdoptionMergePreviewHtml(preview));
545
+ return 0;
546
+ }
547
+ process.stdout.write(renderAdoptionMergePreviewText(preview));
548
+ return 0;
549
+ }
550
+ async function runAdoptReport(args) {
551
+ const cwd = resolveCwd(args);
552
+ const inspection = await inspectSharkcraft({ cwd });
553
+ const plan = buildOnboardingPlan(inspection, {});
554
+ const adoption = buildOnboardingAdoptionPlan({ inspection, plan });
555
+ const state = readAdoptionState(cwd);
556
+ const report = buildAdoptionReport({ projectRoot: cwd, plan: adoption, state });
557
+ const wantJson = flagBool(args, 'json');
558
+ const format = (flagString(args, 'format') ?? (wantJson ? 'json' : 'text'));
559
+ let body;
560
+ if (wantJson || format === 'json')
561
+ body = renderAdoptionReportJson(report);
562
+ else if (format === 'markdown')
563
+ body = renderAdoptionReportMarkdown(report);
564
+ else if (format === 'html')
565
+ body = renderAdoptionReportHtml(report);
566
+ else
567
+ body = renderAdoptionReportText(report);
568
+ const outputPath = flagString(args, 'output');
569
+ if (outputPath) {
570
+ const abs = nodePath.isAbsolute(outputPath) ? outputPath : nodePath.resolve(cwd, outputPath);
571
+ writeFileSync(abs, body, 'utf8');
572
+ if (!wantJson)
573
+ process.stdout.write(`Wrote adoption report to ${abs}\n`);
574
+ else
575
+ process.stdout.write(asJson({ wrote: abs, bytes: Buffer.byteLength(body) }) + '\n');
576
+ return 0;
577
+ }
578
+ process.stdout.write(body);
579
+ return 0;
580
+ }
581
+ function onboardCheckpointArtifacts(diff) {
582
+ const targets = [
583
+ 'sharkcraft/rules.ts',
584
+ 'sharkcraft/paths.ts',
585
+ 'sharkcraft/pipelines.ts',
586
+ 'sharkcraft/sharkcraft.config.ts',
587
+ 'sharkcraft/templates.ts',
588
+ 'sharkcraft/boundaries.ts',
589
+ ];
590
+ const drafts = [
591
+ 'sharkcraft/onboarding/inferred-rules.draft.ts',
592
+ 'sharkcraft/onboarding/inferred-paths.draft.ts',
593
+ 'sharkcraft/onboarding/inferred-pipelines.draft.ts',
594
+ 'sharkcraft/onboarding/inferred-templates.draft.ts',
595
+ 'sharkcraft/onboarding/inferred-boundaries.draft.ts',
596
+ 'sharkcraft/onboarding/onboarding-report.md',
597
+ ];
598
+ void diff;
599
+ return { targets, drafts };
600
+ }
601
+ async function runAdoptDiff(args) {
602
+ const cwd = resolveCwd(args);
603
+ const formatRaw = (flagString(args, 'format') ?? 'text');
604
+ const valid = new Set(['text', 'markdown', 'html', 'json']);
605
+ if (!valid.has(formatRaw)) {
606
+ process.stderr.write(`Unknown --format "${formatRaw}". Use text|markdown|html|json.\n`);
607
+ return 2;
608
+ }
609
+ const confidenceFlag = flagString(args, 'confidence') ?? 'high';
610
+ if (!CONFIDENCE_VALUES.has(confidenceFlag)) {
611
+ process.stderr.write(`Invalid --confidence: "${confidenceFlag}". Use high|medium|low.\n`);
612
+ return 2;
613
+ }
614
+ const include = parseKindList(flagList(args, 'include'));
615
+ const exclude = parseKindList(flagList(args, 'exclude'));
616
+ const inspection = await inspectSharkcraft({ cwd });
617
+ const diff = buildOnboardAdoptionDiff(inspection, {
618
+ confidence: confidenceFlag,
619
+ ...(include.length > 0 ? { include } : {}),
620
+ ...(exclude.length > 0 ? { exclude } : {}),
621
+ });
622
+ process.stdout.write(renderOnboardAdoptionDiff(diff, formatRaw));
623
+ if (flagBool(args, 'record-checkpoint')) {
624
+ const canonical = renderOnboardAdoptionDiff(diff, 'json');
625
+ const { targets, drafts } = onboardCheckpointArtifacts(diff);
626
+ const checkpoint = recordAdoptionCheckpoint({
627
+ projectRoot: cwd,
628
+ kind: 'onboard',
629
+ command: 'shrk onboard adopt diff --record-checkpoint',
630
+ diffHash: hashDiffBody(canonical),
631
+ targets,
632
+ drafts,
633
+ });
634
+ process.stdout.write(`\nRecorded checkpoint (diff hash ${checkpoint.diffHash.slice(0, 12)}…) at sharkcraft/onboarding/adoption/adoption-checkpoint.json\n`);
635
+ }
636
+ return 0;
637
+ }
638
+ function runAdoptCheck(args) {
639
+ const cwd = resolveCwd(args);
640
+ const result = buildAdoptionCheck({ projectRoot: cwd });
641
+ if (flagBool(args, 'json')) {
642
+ process.stdout.write(asJson(result) + '\n');
643
+ return result.canApply === AdoptionCheckResult.CanApply ? 0 : 1;
644
+ }
645
+ process.stdout.write(header('Onboarding adoption — check'));
646
+ process.stdout.write(kv('canApply', result.canApply) + '\n');
647
+ process.stdout.write(kv('patchFormat', result.patchFormat) + '\n');
648
+ if (result.patchPath)
649
+ process.stdout.write(kv('patchPath', result.patchPath) + '\n');
650
+ process.stdout.write('\nChecks:\n');
651
+ for (const c of result.checks) {
652
+ const tag = c.severity === 'error' ? 'ERR ' : c.severity === 'warning' ? 'WARN' : 'INFO';
653
+ process.stdout.write(` ${tag} ${c.id.padEnd(28)} ${c.message}\n`);
654
+ }
655
+ if (result.warnings.length > 0) {
656
+ process.stdout.write('\nWarnings:\n');
657
+ for (const w of result.warnings)
658
+ process.stdout.write(` - ${w}\n`);
659
+ }
660
+ process.stdout.write(`\nNext:\n $ ${result.nextCommand}\n`);
661
+ return result.canApply === AdoptionCheckResult.CanApply ? 0 : 1;
662
+ }
@@ -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"}