@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,354 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import * as nodePath from 'node:path';
3
+ import { buildReviewPacket, buildReviewPacketV2, buildReviewPacketV3, inspectSharkcraft, renderReviewComment, renderReviewCommentV2, renderReviewCommentV3, REVIEW_PACKET_V2_SCHEMA, REVIEW_PACKET_V3_SCHEMA, } 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
+ function renderGithubActionYaml(options) {
7
+ const steps = [];
8
+ const artifacts = [
9
+ { name: 'sharkcraft-review-packet', path: 'review-packet.json' },
10
+ ];
11
+ steps.push(' - name: Build review packet', ' run: bun run shrk review --since origin/main --json > review-packet.json');
12
+ if (options.withBoundaries) {
13
+ steps.push(' - name: Check boundaries', ' run: bun run shrk check boundaries --json > boundaries.json');
14
+ artifacts.push({ name: 'sharkcraft-boundaries', path: 'boundaries.json' });
15
+ }
16
+ if (options.withCoverage) {
17
+ steps.push(' - name: Coverage report', ' run: bun run shrk coverage --json > coverage.json');
18
+ artifacts.push({ name: 'sharkcraft-coverage', path: 'coverage.json' });
19
+ }
20
+ if (options.withDrift) {
21
+ steps.push(' - name: Drift report', ' run: bun run shrk drift --json > drift.json');
22
+ artifacts.push({ name: 'sharkcraft-drift', path: 'drift.json' });
23
+ }
24
+ for (const a of artifacts) {
25
+ steps.push(' - uses: actions/upload-artifact@v4', ' with:', ` name: ${a.name}`, ` path: ${a.path}`);
26
+ }
27
+ if (options.commentPlaceholder && !options.artifactOnly) {
28
+ steps.push(' - name: Render PR comment markdown', ' run: bun run shrk review render-comment review-packet.json --output review-comment.md', ' - name: PR comment placeholder', ' run: |', ' echo "Generated review-comment.md from review-packet.json."', ' echo "Post it via \\`gh pr comment --body-file review-comment.md\\` or actions/github-script."');
29
+ }
30
+ const commentNoteIncluded = options.commentPlaceholder && !options.artifactOnly;
31
+ const lines = [
32
+ '# .github/workflows/sharkcraft-review.yml',
33
+ '# Generated by `shrk review scaffold github-action`.',
34
+ '#',
35
+ '# On every pull request:',
36
+ '# 1. Check out the PR (with origin/main available so `shrk review --since` can diff).',
37
+ '# 2. Install Bun and workspace deps.',
38
+ '# 3. Run the selected SharkCraft checks and upload their JSON artifacts.',
39
+ '#',
40
+ commentNoteIncluded
41
+ ? '# A comment-placeholder step is included so you can wire `actions/github-script`'
42
+ : '# Posting artifacts as a PR comment is left as a follow-up — wire it via',
43
+ commentNoteIncluded
44
+ ? '# or `gh pr comment` later. The artifacts above contain the full payload.'
45
+ : '# `actions/github-script` or `gh pr comment` once you have a stable schema.',
46
+ 'name: SharkCraft review packet',
47
+ '',
48
+ 'on:',
49
+ ' pull_request:',
50
+ ' branches: [main]',
51
+ '',
52
+ 'jobs:',
53
+ ' review:',
54
+ ' runs-on: ubuntu-latest',
55
+ ' steps:',
56
+ ' - uses: actions/checkout@v4',
57
+ ' with:',
58
+ ' fetch-depth: 0',
59
+ " - uses: oven-sh/setup-bun@v1",
60
+ ' with:',
61
+ " bun-version: '1.1'",
62
+ ' - run: bun install',
63
+ ...steps,
64
+ '',
65
+ ];
66
+ return lines.join('\n');
67
+ }
68
+ function scaffoldOptionsFromArgs(args) {
69
+ return {
70
+ withBoundaries: flagBool(args, 'with-boundaries'),
71
+ withCoverage: flagBool(args, 'with-coverage'),
72
+ withDrift: flagBool(args, 'with-drift'),
73
+ artifactOnly: flagBool(args, 'artifact-only'),
74
+ commentPlaceholder: flagBool(args, 'comment-placeholder'),
75
+ };
76
+ }
77
+ export const reviewCommand = {
78
+ name: 'review',
79
+ description: 'Build a PR-review packet: changed files (via git), affected path conventions, relevant rules/templates/pipelines, boundary violations on those files, missing-test heuristic, verification commands. Also: `shrk review scaffold github-action` prints a workflow template with optional `--with-boundaries / --with-coverage / --with-drift / --artifact-only / --comment-placeholder` flags. `shrk review render-comment <packet.json>` renders a Markdown PR comment from a saved packet.',
80
+ usage: 'shrk [--cwd <dir>] review [--since <ref>] [--staged] [--files a,b] [--json] | shrk review scaffold github-action [...] | shrk review render-comment <packet.json> [--output <file>]',
81
+ async run(args) {
82
+ if (args.positional[0] === 'scaffold') {
83
+ const which = args.positional[1] ?? 'github-action';
84
+ if (which !== 'github-action') {
85
+ process.stderr.write(`Unknown scaffold "${which}". Available: github-action\n`);
86
+ return 2;
87
+ }
88
+ const body = renderGithubActionYaml(scaffoldOptionsFromArgs(args));
89
+ process.stdout.write(body);
90
+ return 0;
91
+ }
92
+ if (args.positional[0] === 'render-comment') {
93
+ return runRenderComment(args);
94
+ }
95
+ if (args.positional[0] === 'packet') {
96
+ return runPacket(args);
97
+ }
98
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
99
+ const since = flagString(args, 'since');
100
+ const files = flagList(args, 'files');
101
+ const packet = buildReviewPacket(inspection, {
102
+ ...(since ? { since } : {}),
103
+ ...(flagBool(args, 'staged') ? { staged: true } : {}),
104
+ ...(files.length ? { files } : {}),
105
+ });
106
+ if (flagBool(args, 'json')) {
107
+ process.stdout.write(asJson(packet) + '\n');
108
+ return 0;
109
+ }
110
+ process.stdout.write(header('Review packet'));
111
+ process.stdout.write(kv('changed files', String(packet.changedFiles.length)) + '\n');
112
+ process.stdout.write(kv('affected paths', String(packet.affectedPaths.length)) + '\n');
113
+ process.stdout.write(kv('boundary violations', String(packet.boundaryViolations.length)) + '\n\n');
114
+ if (packet.changedFiles.length === 0) {
115
+ process.stdout.write('No changed files detected. Try `--since HEAD~1` or `--staged`.\n');
116
+ return 0;
117
+ }
118
+ process.stdout.write('Changed files:\n');
119
+ for (const f of packet.changedFiles.slice(0, 10))
120
+ process.stdout.write(` • ${f}\n`);
121
+ if (packet.changedFiles.length > 10) {
122
+ process.stdout.write(` … (${packet.changedFiles.length - 10} more)\n`);
123
+ }
124
+ if (packet.relevantRules.length) {
125
+ process.stdout.write('\nRelevant rules:\n');
126
+ for (const r of packet.relevantRules)
127
+ process.stdout.write(` • ${r.id} — ${r.title}\n`);
128
+ }
129
+ if (packet.relevantTemplates.length) {
130
+ process.stdout.write('\nRelevant templates:\n');
131
+ for (const t of packet.relevantTemplates)
132
+ process.stdout.write(` • ${t.id} ${t.name}\n`);
133
+ }
134
+ if (packet.boundaryViolations.length) {
135
+ process.stdout.write('\nBoundary violations in this change set:\n');
136
+ for (const v of packet.boundaryViolations) {
137
+ process.stdout.write(` ${v.severity.toUpperCase().padEnd(8)} ${v.file}:${v.line} ${v.importSpecifier} (${v.ruleId})\n`);
138
+ }
139
+ }
140
+ if (packet.missingTestsHeuristic.length) {
141
+ process.stdout.write('\nMissing tests heuristic:\n');
142
+ for (const m of packet.missingTestsHeuristic)
143
+ process.stdout.write(` • ${m}\n`);
144
+ }
145
+ if (packet.verificationCommands.length) {
146
+ process.stdout.write('\nVerification commands:\n');
147
+ for (const c of packet.verificationCommands)
148
+ process.stdout.write(` $ ${c}\n`);
149
+ }
150
+ process.stdout.write('\n' + packet.reviewerInstructions + '\n');
151
+ return 0;
152
+ },
153
+ };
154
+ async function runRenderComment(args) {
155
+ const inputPath = args.positional[1];
156
+ if (!inputPath) {
157
+ process.stderr.write('Usage: shrk review render-comment <packet.json> [--output <file>] [--title <title>]\n');
158
+ return 2;
159
+ }
160
+ const full = nodePath.isAbsolute(inputPath)
161
+ ? inputPath
162
+ : nodePath.resolve(resolveCwd(args), inputPath);
163
+ if (!existsSync(full)) {
164
+ process.stderr.write(`Review packet not found: ${full}\n`);
165
+ return 2;
166
+ }
167
+ let parsed;
168
+ try {
169
+ parsed = JSON.parse(readFileSync(full, 'utf8'));
170
+ }
171
+ catch (err) {
172
+ process.stderr.write(`Failed to parse review packet as JSON: ${err.message}\n`);
173
+ return 2;
174
+ }
175
+ // Auto-detect v3 first, then v2.
176
+ if (isReviewPacketV3Shape(parsed)) {
177
+ const format = (flagString(args, 'format') ?? 'markdown');
178
+ const maxFiles = flagNumber(args, 'max-files');
179
+ const maxItems = flagNumber(args, 'max-items');
180
+ const out = renderReviewCommentV3(parsed, {
181
+ format,
182
+ ...(maxFiles !== undefined ? { maxFiles } : {}),
183
+ ...(maxItems !== undefined ? { maxItems } : {}),
184
+ });
185
+ const output = flagString(args, 'output');
186
+ if (output) {
187
+ const outFull = nodePath.isAbsolute(output)
188
+ ? output
189
+ : nodePath.resolve(resolveCwd(args), output);
190
+ writeFileSync(outFull, out, 'utf8');
191
+ process.stdout.write(`Wrote ${out.length} bytes to ${outFull}\n`);
192
+ }
193
+ else {
194
+ process.stdout.write(out);
195
+ }
196
+ return 0;
197
+ }
198
+ // Auto-detect v2 schema and use the v2 renderer.
199
+ if (isReviewPacketV2Shape(parsed)) {
200
+ const format = flagString(args, 'format');
201
+ const maxFiles = flagNumber(args, 'max-files');
202
+ const maxItems = flagNumber(args, 'max-items');
203
+ const md = renderReviewCommentV2(parsed, {
204
+ ...(format ? { format } : {}),
205
+ ...(maxFiles !== undefined ? { maxFiles } : {}),
206
+ ...(maxItems !== undefined ? { maxItems } : {}),
207
+ });
208
+ const output = flagString(args, 'output');
209
+ if (output) {
210
+ const outFull = nodePath.isAbsolute(output)
211
+ ? output
212
+ : nodePath.resolve(resolveCwd(args), output);
213
+ writeFileSync(outFull, md, 'utf8');
214
+ process.stdout.write(`Wrote ${md.length} bytes to ${outFull}\n`);
215
+ }
216
+ else {
217
+ process.stdout.write(md);
218
+ }
219
+ return 0;
220
+ }
221
+ if (!isReviewPacketShape(parsed)) {
222
+ process.stderr.write('Input does not look like a review packet (missing expected fields).\n');
223
+ return 2;
224
+ }
225
+ const title = flagString(args, 'title');
226
+ const format = flagString(args, 'format');
227
+ const maxFiles = flagNumber(args, 'max-files');
228
+ const maxRules = flagNumber(args, 'max-rules');
229
+ const includeBoundaries = flagBool(args, 'include-boundaries');
230
+ const includeCoverage = flagBool(args, 'include-coverage');
231
+ const includeDrift = flagBool(args, 'include-drift');
232
+ const collapseLong = flagBool(args, 'collapse-long-sections');
233
+ const boundariesArtifact = readArtifact(args, 'boundaries');
234
+ const coverageArtifact = readArtifact(args, 'coverage');
235
+ const driftArtifact = readArtifact(args, 'drift');
236
+ const md = renderReviewComment(parsed, {
237
+ ...(title ? { title } : {}),
238
+ ...(format ? { format } : {}),
239
+ ...(maxFiles !== undefined ? { maxFiles } : {}),
240
+ ...(maxRules !== undefined ? { maxRules } : {}),
241
+ includeBoundaries: includeBoundaries !== false ? true : false,
242
+ ...(includeCoverage ? { includeCoverage: true } : {}),
243
+ ...(includeDrift ? { includeDrift: true } : {}),
244
+ ...(collapseLong ? { collapseLongSections: true } : {}),
245
+ ...(boundariesArtifact ? { boundariesArtifact } : {}),
246
+ ...(coverageArtifact ? { coverageArtifact } : {}),
247
+ ...(driftArtifact ? { driftArtifact } : {}),
248
+ });
249
+ const output = flagString(args, 'output');
250
+ if (output) {
251
+ const outFull = nodePath.isAbsolute(output)
252
+ ? output
253
+ : nodePath.resolve(resolveCwd(args), output);
254
+ writeFileSync(outFull, md, 'utf8');
255
+ process.stdout.write(`Wrote ${md.length} bytes to ${outFull}\n`);
256
+ }
257
+ else {
258
+ process.stdout.write(md);
259
+ }
260
+ return 0;
261
+ }
262
+ function readArtifact(args, name) {
263
+ const flag = flagString(args, name);
264
+ if (!flag)
265
+ return undefined;
266
+ const full = nodePath.isAbsolute(flag) ? flag : nodePath.resolve(resolveCwd(args), flag);
267
+ if (!existsSync(full)) {
268
+ process.stderr.write(`--${name} artifact not found: ${full}\n`);
269
+ return undefined;
270
+ }
271
+ try {
272
+ return JSON.parse(readFileSync(full, 'utf8'));
273
+ }
274
+ catch (e) {
275
+ process.stderr.write(`Failed to parse --${name} artifact: ${e.message}\n`);
276
+ return undefined;
277
+ }
278
+ }
279
+ function isReviewPacketShape(v) {
280
+ if (typeof v !== 'object' || v === null)
281
+ return false;
282
+ const p = v;
283
+ return (Array.isArray(p.changedFiles) &&
284
+ Array.isArray(p.boundaryViolations) &&
285
+ Array.isArray(p.verificationCommands));
286
+ }
287
+ function isReviewPacketV2Shape(v) {
288
+ if (typeof v !== 'object' || v === null)
289
+ return false;
290
+ return v.schema === REVIEW_PACKET_V2_SCHEMA;
291
+ }
292
+ function isReviewPacketV3Shape(v) {
293
+ if (typeof v !== 'object' || v === null)
294
+ return false;
295
+ return v.schema === REVIEW_PACKET_V3_SCHEMA;
296
+ }
297
+ async function runPacket(args) {
298
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
299
+ const since = flagString(args, 'since');
300
+ const files = flagList(args, 'files');
301
+ const v2 = flagBool(args, 'v2');
302
+ const baselineFile = flagString(args, 'quality-baseline');
303
+ const fmt = flagString(args, 'format') ?? 'json';
304
+ if (flagBool(args, 'v3')) {
305
+ const bundleId = flagString(args, 'bundle');
306
+ const packet = await buildReviewPacketV3(inspection, {
307
+ ...(since ? { since } : {}),
308
+ ...(flagBool(args, 'staged') ? { staged: true } : {}),
309
+ ...(files.length ? { files } : {}),
310
+ ...(baselineFile ? { qualityBaselineFile: baselineFile } : {}),
311
+ ...(bundleId ? { bundleId } : {}),
312
+ });
313
+ if (fmt === 'markdown') {
314
+ process.stdout.write(renderReviewCommentV3(packet, { format: 'markdown' }));
315
+ }
316
+ else if (fmt === 'html') {
317
+ process.stdout.write(renderReviewCommentV3(packet, { format: 'html' }));
318
+ }
319
+ else {
320
+ process.stdout.write(asJson(packet) + '\n');
321
+ }
322
+ return 0;
323
+ }
324
+ if (v2) {
325
+ const packet = await buildReviewPacketV2(inspection, {
326
+ ...(since ? { since } : {}),
327
+ ...(flagBool(args, 'staged') ? { staged: true } : {}),
328
+ ...(files.length ? { files } : {}),
329
+ ...(baselineFile ? { qualityBaselineFile: baselineFile } : {}),
330
+ });
331
+ if (fmt === 'markdown') {
332
+ process.stdout.write(renderReviewCommentV2(packet, { format: 'markdown' }));
333
+ }
334
+ else if (fmt === 'html') {
335
+ process.stdout.write(renderReviewCommentV2(packet, { format: 'html' }));
336
+ }
337
+ else {
338
+ process.stdout.write(asJson(packet) + '\n');
339
+ }
340
+ return 0;
341
+ }
342
+ const packet = buildReviewPacket(inspection, {
343
+ ...(since ? { since } : {}),
344
+ ...(flagBool(args, 'staged') ? { staged: true } : {}),
345
+ ...(files.length ? { files } : {}),
346
+ });
347
+ if (fmt === 'markdown' || fmt === 'html') {
348
+ process.stdout.write(renderReviewComment(packet));
349
+ }
350
+ else {
351
+ process.stdout.write(asJson(packet) + '\n');
352
+ }
353
+ return 0;
354
+ }
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const riskCommand: ICommandHandler;
3
+ //# sourceMappingURL=risk.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk.command.d.ts","sourceRoot":"","sources":["../../src/commands/risk.command.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAYhC,eAAO,MAAM,WAAW,EAAE,eA8CzB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { buildTaskRiskReport, inspectSharkcraft, renderTaskRiskMarkdown, renderTaskRiskText, } from '@shrkcrft/inspector';
2
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
3
+ import { asJson } from "../output/format-output.js";
4
+ function parseFilesFlag(args) {
5
+ const raw = flagString(args, 'files');
6
+ if (!raw)
7
+ return [];
8
+ return raw
9
+ .split(',')
10
+ .map((f) => f.trim())
11
+ .filter((f) => f.length > 0);
12
+ }
13
+ export const riskCommand = {
14
+ name: 'risk',
15
+ description: 'Compute a per-task risk report (intent + impact + architecture + boundaries + ownership + tests).',
16
+ usage: 'shrk risk "<task>" [--files a,b,c] [--since <ref>] [--staged] [--json] [--explain] [--format text|markdown|json]',
17
+ async run(args) {
18
+ const task = args.positional.join(' ').trim();
19
+ if (!task) {
20
+ process.stderr.write('Usage: shrk risk "<task>"\n');
21
+ return 2;
22
+ }
23
+ const cwd = resolveCwd(args);
24
+ const inspection = await inspectSharkcraft({ cwd });
25
+ const files = parseFilesFlag(args);
26
+ const since = flagString(args, 'since');
27
+ const staged = flagBool(args, 'staged');
28
+ const includeMemory = flagBool(args, 'include-memory');
29
+ const report = await buildTaskRiskReport(task, inspection, {
30
+ ...(files.length > 0 ? { files } : {}),
31
+ ...(since ? { since } : {}),
32
+ ...(staged ? { staged: true } : {}),
33
+ ...(includeMemory ? { includeMemory: true } : {}),
34
+ });
35
+ const format = (flagString(args, 'format') ?? '').toLowerCase();
36
+ if (flagBool(args, 'json') || format === 'json') {
37
+ process.stdout.write(asJson(report) + '\n');
38
+ return 0;
39
+ }
40
+ if (format === 'markdown') {
41
+ process.stdout.write(renderTaskRiskMarkdown(report));
42
+ return 0;
43
+ }
44
+ process.stdout.write(renderTaskRiskText(report));
45
+ if (flagBool(args, 'explain')) {
46
+ process.stdout.write('\nExplanation:\n');
47
+ process.stdout.write(` Score ${report.score} → ${report.riskLevel}; ` +
48
+ (report.humanApprovalRequired ? 'human approval required.' : 'human approval optional.') +
49
+ '\n');
50
+ for (const r of report.reasons) {
51
+ process.stdout.write(` • ${r.code}: ${r.message} (+${r.weight})\n`);
52
+ }
53
+ }
54
+ return 0;
55
+ },
56
+ };
@@ -0,0 +1,8 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const roundsCaptureCommand: ICommandHandler;
3
+ export declare const roundsListCommand: ICommandHandler;
4
+ export declare const roundsShowCommand: ICommandHandler;
5
+ export declare const diffParentCommand: ICommandHandler;
6
+ export declare const roundsParentCommand: ICommandHandler;
7
+ export declare const diffRoundsCommand: ICommandHandler;
8
+ //# sourceMappingURL=rounds.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rounds.command.d.ts","sourceRoot":"","sources":["../../src/commands/rounds.command.ts"],"names":[],"mappings":"AAsBA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAiBhC,eAAO,MAAM,oBAAoB,EAAE,eAgClC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAmB/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAiC/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAc/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAajC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAoC/B,CAAC"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * `shrk rounds capture` and `shrk diff rounds`.
3
+ *
4
+ * The rounds verb captures a snapshot of the engine surface (commands,
5
+ * MCP tools, docs) at HEAD and persists it under
6
+ * `.sharkcraft/rounds/<id>/`. The diff verb compares two snapshots and
7
+ * answers the "what shipped in round X vs round Y?" question without
8
+ * scraping git logs.
9
+ */
10
+ // DX#4 — `ALL_TOOLS_FOR_AUDIT` was deleted; project ALL_TOOLS inline.
11
+ import { ALL_TOOLS } from '@shrkcrft/mcp-server';
12
+ import { captureRoundSnapshot, diffRounds as diffRoundSnapshots, listRoundIds, loadRoundSnapshot, renderRoundsDiffMarkdown, writeRoundSnapshot, } from '@shrkcrft/inspector';
13
+ import { COMMAND_CATALOG } from "./command-catalog.js";
14
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
15
+ import { asJson, header } from "../output/format-output.js";
16
+ function collectCommandsFromCatalog() {
17
+ return COMMAND_CATALOG.map((e) => ({
18
+ name: e.command,
19
+ description: e.description,
20
+ }));
21
+ }
22
+ function collectMcpTools() {
23
+ return ALL_TOOLS.map((t) => ({
24
+ name: t.name,
25
+ description: t.description,
26
+ }));
27
+ }
28
+ export const roundsCaptureCommand = {
29
+ name: 'capture',
30
+ description: 'Capture a snapshot of the engine surface at HEAD under .sharkcraft/rounds/<id>/.',
31
+ usage: 'shrk rounds capture --id <id> [--title <text>] [--json]',
32
+ run(args) {
33
+ const id = flagString(args, 'id') ?? args.positional[0];
34
+ if (!id) {
35
+ process.stderr.write('Usage: shrk rounds capture --id <id> [--title <text>] [--json]\n');
36
+ return 2;
37
+ }
38
+ const cwd = resolveCwd(args);
39
+ const title = flagString(args, 'title') ?? undefined;
40
+ const snapshot = captureRoundSnapshot({
41
+ projectRoot: cwd,
42
+ id,
43
+ ...(title ? { title } : {}),
44
+ commands: collectCommandsFromCatalog(),
45
+ mcpTools: collectMcpTools(),
46
+ });
47
+ const { snapshotFile, metaFile } = writeRoundSnapshot(cwd, snapshot);
48
+ if (flagBool(args, 'json')) {
49
+ process.stdout.write(asJson({ snapshot, files: { snapshotFile, metaFile } }) + '\n');
50
+ }
51
+ else {
52
+ process.stdout.write(header(`Round snapshot ${id}`));
53
+ process.stdout.write(` commands: ${snapshot.commands.length}\n`);
54
+ process.stdout.write(` mcp tools: ${snapshot.mcpTools.length}\n`);
55
+ process.stdout.write(` docs: ${snapshot.docs.length}\n`);
56
+ process.stdout.write(` files:\n ${snapshotFile}\n ${metaFile}\n`);
57
+ }
58
+ return 0;
59
+ },
60
+ };
61
+ export const roundsListCommand = {
62
+ name: 'list',
63
+ description: 'List captured round snapshots.',
64
+ usage: 'shrk rounds list [--json]',
65
+ run(args) {
66
+ const cwd = resolveCwd(args);
67
+ const ids = listRoundIds(cwd);
68
+ if (flagBool(args, 'json')) {
69
+ process.stdout.write(asJson({ rounds: ids }) + '\n');
70
+ return 0;
71
+ }
72
+ process.stdout.write(header(`Captured rounds (${ids.length})`));
73
+ if (ids.length === 0) {
74
+ process.stdout.write(' (none — run `shrk rounds capture --id <id>`)\n');
75
+ }
76
+ else {
77
+ for (const id of ids)
78
+ process.stdout.write(` • ${id}\n`);
79
+ }
80
+ return 0;
81
+ },
82
+ };
83
+ export const roundsShowCommand = {
84
+ name: 'show',
85
+ description: 'Print one captured round snapshot.',
86
+ usage: 'shrk rounds show <id> [--json]',
87
+ run(args) {
88
+ const id = args.positional[0] ?? flagString(args, 'id');
89
+ if (!id) {
90
+ process.stderr.write('Usage: shrk rounds show <id> [--json]\n');
91
+ return 2;
92
+ }
93
+ const cwd = resolveCwd(args);
94
+ const snap = loadRoundSnapshot(cwd, id);
95
+ if (!snap) {
96
+ if (flagBool(args, 'json')) {
97
+ process.stdout.write(asJson({ ok: false, error: 'round-not-found', id }) + '\n');
98
+ }
99
+ else {
100
+ process.stderr.write(`No snapshot found for round "${id}".\n`);
101
+ }
102
+ return 1;
103
+ }
104
+ if (flagBool(args, 'json')) {
105
+ process.stdout.write(asJson(snap) + '\n');
106
+ return 0;
107
+ }
108
+ process.stdout.write(header(`Round ${snap.id}${snap.title ? ` — ${snap.title}` : ''}`));
109
+ process.stdout.write(` capturedAt: ${snap.capturedAt}\n`);
110
+ process.stdout.write(` commands: ${snap.commands.length}\n`);
111
+ process.stdout.write(` mcp tools: ${snap.mcpTools.length}\n`);
112
+ process.stdout.write(` docs: ${snap.docs.length}\n`);
113
+ return 0;
114
+ },
115
+ };
116
+ export const diffParentCommand = {
117
+ name: 'diff',
118
+ description: 'Diff two artifacts. Currently supports `diff rounds` for round-to-round snapshot diffs.',
119
+ usage: 'shrk diff rounds --from <id> --to <id> [--json]',
120
+ async run(args) {
121
+ const sub = args.positional[0];
122
+ if (sub === 'rounds') {
123
+ const rest = { ...args, positional: args.positional.slice(1) };
124
+ return diffRoundsCommand.run(rest);
125
+ }
126
+ process.stderr.write('Usage: shrk diff rounds --from <id> --to <id> [--json]\n');
127
+ return 2;
128
+ },
129
+ };
130
+ export const roundsParentCommand = {
131
+ name: 'rounds',
132
+ description: 'Capture / list / show round snapshots under .sharkcraft/rounds/.',
133
+ usage: 'shrk rounds [capture|list|show] [args]',
134
+ async run(args) {
135
+ const sub = args.positional[0];
136
+ const rest = { ...args, positional: args.positional.slice(1) };
137
+ if (sub === 'capture')
138
+ return roundsCaptureCommand.run(rest);
139
+ if (sub === 'list')
140
+ return roundsListCommand.run(rest);
141
+ if (sub === 'show')
142
+ return roundsShowCommand.run(rest);
143
+ process.stderr.write('Usage: shrk rounds [capture|list|show] [args]\n');
144
+ return 2;
145
+ },
146
+ };
147
+ export const diffRoundsCommand = {
148
+ name: 'rounds',
149
+ description: 'Diff two captured round snapshots — what shipped in the target round vs the baseline.',
150
+ usage: 'shrk diff rounds --from <id> --to <id> [--json]',
151
+ run(args) {
152
+ const fromId = flagString(args, 'from');
153
+ const toId = flagString(args, 'to');
154
+ if (!fromId || !toId) {
155
+ process.stderr.write('Usage: shrk diff rounds --from <id> --to <id> [--json]\n');
156
+ return 2;
157
+ }
158
+ const cwd = resolveCwd(args);
159
+ const fromSnap = loadRoundSnapshot(cwd, fromId);
160
+ const toSnap = loadRoundSnapshot(cwd, toId);
161
+ const wantJson = flagBool(args, 'json');
162
+ if (!fromSnap || !toSnap) {
163
+ const missing = !fromSnap ? fromId : toId;
164
+ if (wantJson) {
165
+ process.stdout.write(asJson({ ok: false, error: 'round-not-found', missing }) + '\n');
166
+ }
167
+ else {
168
+ process.stderr.write(`No snapshot found for round "${missing}". Capture it with \`shrk rounds capture --id ${missing}\`.\n`);
169
+ }
170
+ return 1;
171
+ }
172
+ const diff = diffRoundSnapshots(fromSnap, toSnap);
173
+ if (wantJson) {
174
+ process.stdout.write(asJson(diff) + '\n');
175
+ return 0;
176
+ }
177
+ process.stdout.write(renderRoundsDiffMarkdown(diff));
178
+ return 0;
179
+ },
180
+ };
@@ -0,0 +1,49 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const rulesListCommand: ICommandHandler;
3
+ export declare const rulesGetCommand: ICommandHandler;
4
+ export declare const rulesRelevantCommand: ICommandHandler;
5
+ export declare const rulesScaffoldCommand: ICommandHandler;
6
+ /**
7
+ * `shrk rules add`.
8
+ *
9
+ * Mirror of `shrk knowledge add` with `type='rule'` forced. Rules in
10
+ * SharkCraft are knowledge entries with `type='rule'`, so we reuse the
11
+ * canonical `knowledge add` flow (preview, draft path, provenance) and
12
+ * just enforce the type at the wrapper. Refuses if `--type` was passed
13
+ * with a non-rule value.
14
+ */
15
+ export declare const rulesAddCommand: ICommandHandler;
16
+ /**
17
+ * `shrk rules remove <id>`.
18
+ *
19
+ * Mirror of `shrk knowledge remove` that first asserts the target id is
20
+ * a rule (so an accidental `shrk rules remove some-knowledge-id` becomes
21
+ * a hard refusal instead of silently removing a documentation entry).
22
+ * Reference-checking is identical to `knowledge remove` — reverse
23
+ * references refuse the preview unless `--force-preview` is set.
24
+ */
25
+ export declare const rulesRemoveCommand: ICommandHandler;
26
+ /**
27
+ * `shrk rules update <id>`.
28
+ *
29
+ * Rules in SharkCraft are stored as knowledge entries with `type='rule'`.
30
+ * The dedicated `rules update` verb exists so the authoring surface for
31
+ * rules feels first-class. It asserts the target id is a rule and then
32
+ * delegates to the knowledge-update flow — same flags, same preview
33
+ * location (`.sharkcraft/authoring/`), same provenance ledger.
34
+ *
35
+ * Provenance: written under `AssetKind.Knowledge` (the underlying data
36
+ * model). The dedicated `rules scaffold` flow writes under
37
+ * `AssetKind.Rule` for new rules; updates piggy-back on knowledge.
38
+ */
39
+ export declare const rulesUpdateCommand: ICommandHandler;
40
+ /**
41
+ * `shrk rules lint` is the lint-style alias of `rules doctor`. It
42
+ * defaults to strict (warnings + errors fail), supports `--fix-preview`
43
+ * which materialises a smallest-change patch under
44
+ * `.sharkcraft/fixes/rules-lint/<rule-id>.patch.md` per finding, and
45
+ * never mutates source.
46
+ */
47
+ export declare const rulesLintCommand: ICommandHandler;
48
+ export declare const rulesDoctorCommand: ICommandHandler;
49
+ //# sourceMappingURL=rules.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.command.d.ts","sourceRoot":"","sources":["../../src/commands/rules.command.ts"],"names":[],"mappings":"AAcA,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAQhC,eAAO,MAAM,gBAAgB,EAAE,eAe9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAuB7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAmClC,CAAC;AAuBF,eAAO,MAAM,oBAAoB,EAAE,eAiFlC,CAAC;AAkBF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,eAsB7B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,eA6BhC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,eA6BhC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,eA2F9B,CAAC;AAoCF,eAAO,MAAM,kBAAkB,EAAE,eAiChC,CAAC"}