@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,169 @@
1
+ /**
2
+ * `shrk conventions ...` — pack/local conventions surface.
3
+ *
4
+ * Read-only listing + doctor + check. `check` runs the loaded conventions
5
+ * against caller-supplied files (or git diff). Never writes.
6
+ */
7
+ import { checkConventionsAgainstFiles, findConvention, getChangedFiles, inspectSharkcraft, listConventions, listConventionIssues, } from '@shrkcrft/inspector';
8
+ import { flagBool, flagString, flagList, resolveCwd, } from "../command-registry.js";
9
+ import { asJson, header } from "../output/format-output.js";
10
+ export const conventionsListCommand = {
11
+ name: 'list',
12
+ description: 'List registered conventions. Read-only.',
13
+ usage: 'shrk conventions list [--kind <kind>] [--source local|pack] [--json]',
14
+ async run(args) {
15
+ const cwd = resolveCwd(args);
16
+ const inspection = await inspectSharkcraft({ cwd });
17
+ const entries = await listConventions(inspection);
18
+ const kind = flagString(args, 'kind');
19
+ const source = flagString(args, 'source');
20
+ let filtered = entries;
21
+ if (kind)
22
+ filtered = filtered.filter((e) => e.convention.kind === kind);
23
+ if (source)
24
+ filtered = filtered.filter((e) => e.source === source);
25
+ if (flagBool(args, 'json')) {
26
+ process.stdout.write(asJson(filtered) + '\n');
27
+ return 0;
28
+ }
29
+ process.stdout.write(header(`Conventions (${filtered.length})`));
30
+ if (filtered.length === 0) {
31
+ process.stdout.write(' (none — contribute via a pack manifest "conventionFiles" entry or sharkcraft/conventions.ts)\n');
32
+ return 0;
33
+ }
34
+ for (const e of filtered) {
35
+ const src = e.source === 'pack' ? `pack:${e.packageName ?? '?'}` : e.source;
36
+ process.stdout.write(` • ${e.convention.kind.padEnd(12)} ${e.convention.id.padEnd(28)} ${e.convention.title} [${src}]\n`);
37
+ }
38
+ return 0;
39
+ },
40
+ };
41
+ export const conventionsGetCommand = {
42
+ name: 'get',
43
+ description: 'Show a single convention by id.',
44
+ usage: 'shrk conventions get <id> [--json]',
45
+ async run(args) {
46
+ const id = args.positional[0];
47
+ if (!id) {
48
+ process.stderr.write('Usage: shrk conventions get <id>\n');
49
+ return 2;
50
+ }
51
+ const cwd = resolveCwd(args);
52
+ const inspection = await inspectSharkcraft({ cwd });
53
+ const entry = await findConvention(inspection, id);
54
+ if (!entry) {
55
+ process.stderr.write(`Unknown convention "${id}".\n`);
56
+ return 2;
57
+ }
58
+ if (flagBool(args, 'json')) {
59
+ process.stdout.write(asJson(entry) + '\n');
60
+ return 0;
61
+ }
62
+ const c = entry.convention;
63
+ process.stdout.write(header(`Convention ${c.id} (${c.kind})`));
64
+ process.stdout.write(` title ${c.title}\n`);
65
+ if (c.description)
66
+ process.stdout.write(` description ${c.description}\n`);
67
+ process.stdout.write(` severity ${c.severity}\n`);
68
+ process.stdout.write(` source ${entry.source}${entry.packageName ? ' (' + entry.packageName + ')' : ''}\n`);
69
+ process.stdout.write(` sourceFile ${entry.sourceFile}\n`);
70
+ process.stdout.write(` rules (${c.rules.length}):\n`);
71
+ for (const r of c.rules) {
72
+ process.stdout.write(` • ${r.id} ${r.description}\n`);
73
+ }
74
+ if (c.examples && c.examples.length > 0) {
75
+ process.stdout.write(` examples (${c.examples.length}):\n`);
76
+ for (const e of c.examples)
77
+ process.stdout.write(` • ${e.description}\n`);
78
+ }
79
+ return 0;
80
+ },
81
+ };
82
+ export const conventionsDoctorCommand = {
83
+ name: 'doctor',
84
+ description: 'Surface load/validation issues for conventions.',
85
+ usage: 'shrk conventions doctor [--json]',
86
+ async run(args) {
87
+ const cwd = resolveCwd(args);
88
+ const inspection = await inspectSharkcraft({ cwd });
89
+ const issues = await listConventionIssues(inspection);
90
+ if (flagBool(args, 'json')) {
91
+ process.stdout.write(asJson({ issues }) + '\n');
92
+ return issues.some((i) => i.severity === 'error') ? 1 : 0;
93
+ }
94
+ process.stdout.write(header('Conventions doctor'));
95
+ if (issues.length === 0) {
96
+ process.stdout.write(' ok — no load/validation issues.\n');
97
+ return 0;
98
+ }
99
+ for (const i of issues) {
100
+ process.stdout.write(` ${i.severity.padEnd(7)} [${i.code}] ${i.message}\n`);
101
+ }
102
+ return issues.some((i) => i.severity === 'error') ? 1 : 0;
103
+ },
104
+ };
105
+ export const conventionsCheckCommand = {
106
+ name: 'check',
107
+ description: 'Run loaded conventions against files (--files / --since / --staged).',
108
+ usage: 'shrk conventions check [--files a,b,c] [--since <ref>] [--staged] [--json]',
109
+ async run(args) {
110
+ const cwd = resolveCwd(args);
111
+ const inspection = await inspectSharkcraft({ cwd });
112
+ let files = [];
113
+ const explicit = flagList(args, 'files');
114
+ if (explicit.length > 0) {
115
+ files = explicit;
116
+ }
117
+ else if (flagBool(args, 'staged')) {
118
+ files = getChangedFiles(cwd, { staged: true });
119
+ }
120
+ else {
121
+ const since = flagString(args, 'since');
122
+ files = since ? getChangedFiles(cwd, { since }) : getChangedFiles(cwd, {});
123
+ }
124
+ const report = await checkConventionsAgainstFiles(inspection, files);
125
+ if (flagBool(args, 'json')) {
126
+ process.stdout.write(asJson(report) + '\n');
127
+ return report.verdict === 'clean' ? 0 : 1;
128
+ }
129
+ process.stdout.write(header(`Convention check (${report.filesScanned} files, ${report.hits.length} hits)`));
130
+ if (report.hits.length === 0) {
131
+ process.stdout.write(' ok — no violations.\n');
132
+ return 0;
133
+ }
134
+ for (const h of report.hits.slice(0, 200)) {
135
+ process.stdout.write(` ${h.severity.padEnd(7)} ${h.conventionId}/${h.ruleId} — ${h.file}\n`);
136
+ process.stdout.write(` ${h.message}\n`);
137
+ }
138
+ return report.verdict === 'clean' ? 0 : 1;
139
+ },
140
+ };
141
+ export const conventionsExplainCommand = {
142
+ name: 'explain',
143
+ description: 'Explain a convention (description + rules + examples + references).',
144
+ usage: 'shrk conventions explain <id>',
145
+ async run(args) {
146
+ return conventionsGetCommand.run(args);
147
+ },
148
+ };
149
+ export const conventionsCommand = {
150
+ name: 'conventions',
151
+ description: 'Generic conventions registry (naming / path / barrel / layout / command / validation / ownership / testing / release / safety). Read-only.',
152
+ usage: 'shrk conventions list|get|doctor|check|explain ...',
153
+ async run(args) {
154
+ const sub = args.positional[0];
155
+ args.positional = args.positional.slice(1);
156
+ if (sub === 'list')
157
+ return conventionsListCommand.run(args);
158
+ if (sub === 'get')
159
+ return conventionsGetCommand.run(args);
160
+ if (sub === 'doctor')
161
+ return conventionsDoctorCommand.run(args);
162
+ if (sub === 'check')
163
+ return conventionsCheckCommand.run(args);
164
+ if (sub === 'explain')
165
+ return conventionsExplainCommand.run(args);
166
+ process.stderr.write('Usage: shrk conventions list|get|doctor|check|explain ...\n');
167
+ return 2;
168
+ },
169
+ };
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const coverageCommand: ICommandHandler;
3
+ //# sourceMappingURL=coverage.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage.command.d.ts","sourceRoot":"","sources":["../../src/commands/coverage.command.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,eAAe,EAAE,eAkC7B,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { buildCoverageReport, buildScaffoldCoverageReport, inspectSharkcraft, renderScaffoldCoverageMarkdown, } from '@shrkcrft/inspector';
2
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
3
+ import { asJson, header, kv } from "../output/format-output.js";
4
+ export const coverageCommand = {
5
+ name: 'coverage',
6
+ description: 'Report relationship/coverage quality across registries + scaffold coverage (`shrk coverage scaffolds --task "<task>"`).',
7
+ usage: 'shrk [--cwd <dir>] coverage [--json]\n shrk [--cwd <dir>] coverage scaffolds [--task "<task>"|--domain <domain>] [--json]',
8
+ async run(args) {
9
+ if (args.positional[0] === 'scaffolds') {
10
+ const sliced = { ...args, positional: args.positional.slice(1) };
11
+ return runCoverageScaffolds(sliced);
12
+ }
13
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
14
+ const report = buildCoverageReport(inspection);
15
+ if (flagBool(args, 'json')) {
16
+ process.stdout.write(asJson(report) + '\n');
17
+ return 0;
18
+ }
19
+ process.stdout.write(header('Coverage report'));
20
+ process.stdout.write(kv('overall', `${report.overall}/100`) + '\n\n');
21
+ for (const c of report.categories) {
22
+ process.stdout.write(` ${c.score.toString().padStart(3)}/100 ${c.title.padEnd(48)} (${c.covered}/${c.total})\n`);
23
+ for (const m of c.missing.slice(0, 5))
24
+ process.stdout.write(` - ${m}\n`);
25
+ if (c.missing.length > 5) {
26
+ process.stdout.write(` - … (${c.missing.length - 5} more)\n`);
27
+ }
28
+ }
29
+ if (report.suggestions.length) {
30
+ process.stdout.write('\nSuggestions:\n');
31
+ for (const s of report.suggestions)
32
+ process.stdout.write(` • ${s}\n`);
33
+ }
34
+ return 0;
35
+ },
36
+ };
37
+ async function runCoverageScaffolds(args) {
38
+ const cwd = resolveCwd(args);
39
+ const task = flagString(args, 'task');
40
+ const domain = flagString(args, 'domain');
41
+ if (!task && !domain) {
42
+ process.stderr.write('Usage: shrk coverage scaffolds --task "<task>" | --domain <domain> [--json]\n');
43
+ return 2;
44
+ }
45
+ const inspection = await inspectSharkcraft({ cwd });
46
+ const report = await buildScaffoldCoverageReport(inspection, {
47
+ ...(task ? { task } : {}),
48
+ ...(domain ? { domain } : {}),
49
+ });
50
+ if (flagBool(args, 'json')) {
51
+ process.stdout.write(asJson(report) + '\n');
52
+ return report.grade === 'missing' ? 1 : 0;
53
+ }
54
+ process.stdout.write(renderScaffoldCoverageMarkdown(report));
55
+ return report.grade === 'missing' ? 1 : 0;
56
+ }
@@ -0,0 +1,5 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const nextCommand: ICommandHandler;
3
+ export declare const findCommand: ICommandHandler;
4
+ export declare const explainCommand: ICommandHandler;
5
+ //# sourceMappingURL=daily.commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daily.commands.d.ts","sourceRoot":"","sources":["../../src/commands/daily.commands.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAMhC,eAAO,MAAM,WAAW,EAAE,eAsFzB,CAAC;AAcF,eAAO,MAAM,WAAW,EAAE,eAoGzB,CAAC;AAKF,eAAO,MAAM,cAAc,EAAE,eA6D5B,CAAC"}
@@ -0,0 +1,224 @@
1
+ import { buildAiReadinessReport, buildTaskPacket, inspectSharkcraft, runDoctor, } from '@shrkcrft/inspector';
2
+ import { recommendPresets } from '@shrkcrft/presets';
3
+ import { flagBool, flagNumber, resolveCwd, } from "../command-registry.js";
4
+ import { asJson, header, kv } from "../output/format-output.js";
5
+ // ────────────────────────────────────────────────────────────────────────
6
+ // shrk next — "what should I do right now in this repo?"
7
+ // ────────────────────────────────────────────────────────────────────────
8
+ export const nextCommand = {
9
+ name: 'next',
10
+ description: 'Recommend next actions for the current repo: doctor status, readiness, suggested presets/pipelines, missing setup.',
11
+ usage: 'shrk [--cwd <dir>] next [--json]',
12
+ async run(args) {
13
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
14
+ const doctor = runDoctor(inspection);
15
+ const readiness = buildAiReadinessReport(inspection);
16
+ const presetRecs = recommendPresets(inspection.presetRegistry.list(), {
17
+ profiles: inspection.workspace.profiles,
18
+ limit: 3,
19
+ });
20
+ const pipelineIds = inspection.pipelineRegistry.list().map((p) => p.id);
21
+ const actions = [];
22
+ if (!inspection.hasSharkcraftFolder) {
23
+ actions.push('Run `shrk init --preset generic` to scaffold sharkcraft/.');
24
+ }
25
+ if (!doctor.passed) {
26
+ actions.push('Run `shrk doctor` to fix the errors above.');
27
+ }
28
+ if (readiness.score < 70) {
29
+ actions.push(`Improve readiness (current ${readiness.score}/100) — see recommendations below.`);
30
+ }
31
+ if (inspection.templates.length === 0) {
32
+ actions.push('Add at least one template via `shrk presets apply <id> --merge --write`.');
33
+ }
34
+ if (inspection.pipelines.length === 0) {
35
+ actions.push('Add a pipeline (feature-dev, context-only) — see suggested presets below.');
36
+ }
37
+ if (flagBool(args, 'json')) {
38
+ process.stdout.write(asJson({
39
+ doctorPassed: doctor.passed,
40
+ readiness: { score: readiness.score, grade: readiness.grade },
41
+ detectedProfiles: inspection.workspace.profiles,
42
+ presetRecommendations: presetRecs.map((r) => ({
43
+ id: r.preset.id,
44
+ confidence: r.confidence,
45
+ score: r.score,
46
+ })),
47
+ pipelines: pipelineIds,
48
+ actions,
49
+ topRecommendations: readiness.topRecommendations,
50
+ }) + '\n');
51
+ return 0;
52
+ }
53
+ process.stdout.write(header('Next actions'));
54
+ process.stdout.write(kv('doctor', doctor.passed ? 'pass' : `${doctor.summary.errors} errors`) + '\n');
55
+ process.stdout.write(kv('readiness', `${readiness.score}/100 (${readiness.grade})`) + '\n');
56
+ process.stdout.write(kv('profiles', inspection.workspace.profiles.join(', ') || '(none)') + '\n');
57
+ if (presetRecs.length) {
58
+ process.stdout.write('\nSuggested presets:\n');
59
+ for (const r of presetRecs) {
60
+ process.stdout.write(` • ${r.preset.id} (${r.confidence}) — ${r.preset.title}\n`);
61
+ }
62
+ }
63
+ if (pipelineIds.length) {
64
+ process.stdout.write('\nKnown pipelines:\n');
65
+ for (const id of pipelineIds.slice(0, 6))
66
+ process.stdout.write(` • ${id}\n`);
67
+ }
68
+ if (actions.length) {
69
+ process.stdout.write('\nDo next:\n');
70
+ for (const a of actions)
71
+ process.stdout.write(` $ ${a}\n`);
72
+ }
73
+ if (readiness.topRecommendations.length) {
74
+ process.stdout.write('\nReadiness recommendations:\n');
75
+ for (const r of readiness.topRecommendations) {
76
+ process.stdout.write(` • ${r}\n`);
77
+ }
78
+ }
79
+ if (actions.length === 0 && doctor.passed && readiness.score >= 70) {
80
+ process.stdout.write('\nNothing urgent. Try `shrk task "<task>"` when you have something to ship.\n');
81
+ }
82
+ return 0;
83
+ },
84
+ };
85
+ // ────────────────────────────────────────────────────────────────────────
86
+ // shrk find — grouped search across all SharkCraft kinds.
87
+ // ────────────────────────────────────────────────────────────────────────
88
+ function lc(s) {
89
+ return s.toLowerCase();
90
+ }
91
+ function matches(query, ...texts) {
92
+ const q = lc(query);
93
+ return texts.some((t) => typeof t === 'string' && lc(t).includes(q));
94
+ }
95
+ export const findCommand = {
96
+ name: 'find',
97
+ description: 'Search across knowledge / rules / paths / templates / pipelines / packs / presets in one place.',
98
+ usage: 'shrk [--cwd <dir>] find "<query>" [--limit N] [--json]',
99
+ async run(args) {
100
+ const query = args.positional.join(' ').trim();
101
+ if (!query) {
102
+ process.stderr.write('Usage: shrk find "<query>"\n');
103
+ return 2;
104
+ }
105
+ const limit = flagNumber(args, 'limit') ?? 8;
106
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
107
+ const knowledge = inspection.knowledgeEntries
108
+ .filter((e) => matches(query, e.id, e.title, e.content, e.tags.join(' ')))
109
+ .slice(0, limit);
110
+ const rules = inspection.ruleService.list()
111
+ .filter((r) => matches(query, r.id, r.title, r.content))
112
+ .slice(0, limit);
113
+ const paths = inspection.pathService.list()
114
+ .filter((p) => matches(query, p.id, p.title, p.content))
115
+ .slice(0, limit);
116
+ const templates = inspection.templates
117
+ .filter((t) => matches(query, t.id, t.name, t.description))
118
+ .slice(0, limit);
119
+ const pipelines = inspection.pipelines
120
+ .filter((p) => matches(query, p.id, p.title, p.description))
121
+ .slice(0, limit);
122
+ const packs = inspection.packs.discoveredPacks
123
+ .filter((p) => matches(query, p.packageName, p.manifest?.info.description))
124
+ .slice(0, limit);
125
+ const presets = inspection.presetRegistry
126
+ .list()
127
+ .filter((p) => matches(query, p.id, p.title, p.description, (p.tags ?? []).join(' ')))
128
+ .slice(0, limit);
129
+ if (flagBool(args, 'json')) {
130
+ process.stdout.write(asJson({
131
+ query,
132
+ knowledge: knowledge.map((e) => ({ id: e.id, title: e.title, type: e.type })),
133
+ rules: rules.map((r) => ({ id: r.id, title: r.title })),
134
+ paths: paths.map((p) => ({ id: p.id, title: p.title })),
135
+ templates: templates.map((t) => ({ id: t.id, name: t.name })),
136
+ pipelines: pipelines.map((p) => ({ id: p.id, title: p.title })),
137
+ packs: packs.map((p) => ({ name: p.packageName, version: p.packageVersion })),
138
+ presets: presets.map((p) => ({ id: p.id, title: p.title })),
139
+ }) + '\n');
140
+ return 0;
141
+ }
142
+ process.stdout.write(header(`find: ${query}`));
143
+ function group(title, items) {
144
+ if (items.length === 0)
145
+ return;
146
+ process.stdout.write(`\n${title} (${items.length}):\n`);
147
+ for (const it of items)
148
+ process.stdout.write(` ${it.line}\n`);
149
+ }
150
+ group('Knowledge', knowledge.map((e) => ({ line: `${e.id.padEnd(30)} ${e.title}` })));
151
+ group('Rules', rules.map((r) => ({ line: `${r.id.padEnd(30)} ${r.title}` })));
152
+ group('Paths', paths.map((p) => ({ line: `${p.id.padEnd(30)} ${p.title}` })));
153
+ group('Templates', templates.map((t) => ({ line: `${t.id.padEnd(30)} ${t.name}` })));
154
+ group('Pipelines', pipelines.map((p) => ({ line: `${p.id.padEnd(30)} ${p.title}` })));
155
+ group('Packs', packs.map((p) => ({ line: `${p.packageName}@${p.packageVersion}` })));
156
+ group('Presets', presets.map((p) => ({ line: `${p.id.padEnd(22)} ${p.title}` })));
157
+ const total = knowledge.length +
158
+ rules.length +
159
+ paths.length +
160
+ templates.length +
161
+ pipelines.length +
162
+ packs.length +
163
+ presets.length;
164
+ if (total === 0) {
165
+ process.stdout.write('\n(no matches)\n');
166
+ }
167
+ return 0;
168
+ },
169
+ };
170
+ // ────────────────────────────────────────────────────────────────────────
171
+ // shrk explain <topic> — compact local explanation, no AI.
172
+ // ────────────────────────────────────────────────────────────────────────
173
+ export const explainCommand = {
174
+ name: 'explain',
175
+ description: 'Search the project knowledge / rules / paths / templates / pipelines for a topic and print a compact explanation. No AI required.',
176
+ usage: 'shrk [--cwd <dir>] explain "<topic>" [--max-entries N] [--json]',
177
+ async run(args) {
178
+ const topic = args.positional.join(' ').trim();
179
+ if (!topic) {
180
+ process.stderr.write('Usage: shrk explain "<topic>"\n');
181
+ return 2;
182
+ }
183
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
184
+ const maxEntries = flagNumber(args, 'max-entries') ?? 6;
185
+ const packet = buildTaskPacket(inspection, topic, { maxTokens: 2500 });
186
+ const top = inspection.knowledgeEntries
187
+ .filter((e) => matches(topic, e.id, e.title, e.content, e.tags.join(' ')))
188
+ .slice(0, maxEntries);
189
+ if (flagBool(args, 'json')) {
190
+ process.stdout.write(asJson({
191
+ topic,
192
+ summary: {
193
+ relevantRules: packet.relevantRules.length,
194
+ relevantPaths: packet.relevantPaths.length,
195
+ relevantTemplates: packet.relevantTemplates.length,
196
+ },
197
+ entries: top.map((e) => ({
198
+ id: e.id,
199
+ title: e.title,
200
+ type: e.type,
201
+ priority: e.priority,
202
+ content: e.content,
203
+ })),
204
+ }) + '\n');
205
+ return 0;
206
+ }
207
+ process.stdout.write(header(`explain: ${topic}`));
208
+ process.stdout.write(kv('matches', `rules=${packet.relevantRules.length} paths=${packet.relevantPaths.length} templates=${packet.relevantTemplates.length}`) + '\n\n');
209
+ if (top.length === 0) {
210
+ process.stdout.write('(no matching knowledge entries)\n');
211
+ return 0;
212
+ }
213
+ for (const e of top) {
214
+ process.stdout.write(`• [${e.priority}] ${e.id} — ${e.title}\n`);
215
+ const body = e.content
216
+ .split('\n')
217
+ .filter((l) => l.trim().length > 0)
218
+ .slice(0, 3)
219
+ .join('\n ');
220
+ process.stdout.write(` ${body}\n\n`);
221
+ }
222
+ return 0;
223
+ },
224
+ };
@@ -0,0 +1,4 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const dashboardExportCommand: ICommandHandler;
3
+ export declare const dashboardDiffCommand: ICommandHandler;
4
+ //# sourceMappingURL=dashboard-export.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-export.command.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard-export.command.ts"],"names":[],"mappings":"AASA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,sBAAsB,EAAE,eAmDpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAqClC,CAAC"}
@@ -0,0 +1,86 @@
1
+ import * as nodePath from 'node:path';
2
+ import { buildDashboardExport, diffDashboardExports, inspectSharkcraft, renderDashboardExportDiffHtml, renderDashboardExportDiffMarkdown, } from '@shrkcrft/inspector';
3
+ import { flagBool, flagList, flagString, resolveCwd, } from "../command-registry.js";
4
+ import { asJson } from "../output/format-output.js";
5
+ export const dashboardExportCommand = {
6
+ name: 'export',
7
+ description: 'Export dashboard-ready JSON files (repository-map, architecture, intelligence, packs, role-views, ...). Writes only into the supplied output dir. R20: `--compare-with <oldDir>` produces a diff.',
8
+ usage: 'shrk dashboard export [--output .sharkcraft/dashboard-data] [--include repository-map,architecture,...] [--compare-with <oldDir>] [--format text|markdown|html|json]',
9
+ async run(args) {
10
+ const cwd = resolveCwd(args);
11
+ const inspection = await inspectSharkcraft({ cwd });
12
+ const output = flagString(args, 'output') ?? '.sharkcraft/dashboard-data';
13
+ const includeRaw = flagList(args, 'include');
14
+ const report = await buildDashboardExport(inspection, {
15
+ outputDir: output,
16
+ ...(includeRaw.length > 0 ? { include: includeRaw } : {}),
17
+ });
18
+ const compareWith = flagString(args, 'compare-with');
19
+ if (compareWith) {
20
+ const oldDir = nodePath.isAbsolute(compareWith) ? compareWith : nodePath.resolve(cwd, compareWith);
21
+ const diff = diffDashboardExports(oldDir, report.outputDir);
22
+ const format = (flagString(args, 'format') ?? '').toLowerCase();
23
+ if (format === 'json' || flagBool(args, 'json')) {
24
+ process.stdout.write(asJson(diff) + '\n');
25
+ return 0;
26
+ }
27
+ if (format === 'html') {
28
+ process.stdout.write(renderDashboardExportDiffHtml(diff));
29
+ return 0;
30
+ }
31
+ if (format === 'markdown') {
32
+ process.stdout.write(renderDashboardExportDiffMarkdown(diff));
33
+ return 0;
34
+ }
35
+ process.stdout.write(`Dashboard diff: ${diff.oldDir} → ${diff.newDir}\n` +
36
+ ` packs: ${diff.metrics.packs.old} → ${diff.metrics.packs.new}\n` +
37
+ ` graph nodes: ${diff.metrics.graphNodes.old} → ${diff.metrics.graphNodes.new}\n` +
38
+ ` graph edges: ${diff.metrics.graphEdges.old} → ${diff.metrics.graphEdges.new}\n` +
39
+ ` architecture risks: ${diff.metrics.architectureRisks.old} → ${diff.metrics.architectureRisks.new}\n` +
40
+ ` boundary violations: ${diff.metrics.boundaryViolations.old} → ${diff.metrics.boundaryViolations.new}\n`);
41
+ return 0;
42
+ }
43
+ if (flagBool(args, 'json')) {
44
+ process.stdout.write(asJson(report) + '\n');
45
+ return 0;
46
+ }
47
+ process.stdout.write(`Wrote ${report.entries.length} dashboard data file(s) to ${report.outputDir}\n`);
48
+ return 0;
49
+ },
50
+ };
51
+ export const dashboardDiffCommand = {
52
+ name: 'diff',
53
+ description: 'Diff two dashboard exports (by directory).',
54
+ usage: 'shrk dashboard diff <oldDir> <newDir> [--format text|markdown|html|json]',
55
+ async run(args) {
56
+ const [oldArg, newArg] = args.positional;
57
+ if (!oldArg || !newArg) {
58
+ process.stderr.write('Usage: shrk dashboard diff <oldDir> <newDir>\n');
59
+ return 2;
60
+ }
61
+ const cwd = resolveCwd(args);
62
+ const oldAbs = nodePath.isAbsolute(oldArg) ? oldArg : nodePath.resolve(cwd, oldArg);
63
+ const newAbs = nodePath.isAbsolute(newArg) ? newArg : nodePath.resolve(cwd, newArg);
64
+ const diff = diffDashboardExports(oldAbs, newAbs);
65
+ const format = (flagString(args, 'format') ?? 'text').toLowerCase();
66
+ if (format === 'json' || flagBool(args, 'json')) {
67
+ process.stdout.write(asJson(diff) + '\n');
68
+ return 0;
69
+ }
70
+ if (format === 'html') {
71
+ process.stdout.write(renderDashboardExportDiffHtml(diff));
72
+ return 0;
73
+ }
74
+ if (format === 'markdown') {
75
+ process.stdout.write(renderDashboardExportDiffMarkdown(diff));
76
+ return 0;
77
+ }
78
+ process.stdout.write(`Dashboard diff: ${diff.oldDir} → ${diff.newDir}\n` +
79
+ ` packs: ${diff.metrics.packs.old} → ${diff.metrics.packs.new}\n` +
80
+ ` graph nodes: ${diff.metrics.graphNodes.old} → ${diff.metrics.graphNodes.new}\n` +
81
+ ` graph edges: ${diff.metrics.graphEdges.old} → ${diff.metrics.graphEdges.new}\n` +
82
+ ` architecture risks: ${diff.metrics.architectureRisks.old} → ${diff.metrics.architectureRisks.new}\n` +
83
+ ` boundary violations: ${diff.metrics.boundaryViolations.old} → ${diff.metrics.boundaryViolations.new}\n`);
84
+ return 0;
85
+ },
86
+ };
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const dashboardCommand: ICommandHandler;
3
+ //# sourceMappingURL=dashboard.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.command.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.command.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAMhC,eAAO,MAAM,gBAAgB,EAAE,eAY9B,CAAC"}