@shrkcrft/cli 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/asset-preview/apply-action-hint-stub.d.ts +28 -0
  4. package/dist/asset-preview/apply-action-hint-stub.d.ts.map +1 -0
  5. package/dist/asset-preview/apply-action-hint-stub.js +170 -0
  6. package/dist/asset-preview/apply-asset-preview.d.ts +31 -0
  7. package/dist/asset-preview/apply-asset-preview.d.ts.map +1 -0
  8. package/dist/asset-preview/apply-asset-preview.js +210 -0
  9. package/dist/asset-preview/apply-knowledge-stale-fix.d.ts +37 -0
  10. package/dist/asset-preview/apply-knowledge-stale-fix.d.ts.map +1 -0
  11. package/dist/asset-preview/apply-knowledge-stale-fix.js +344 -0
  12. package/dist/asset-preview/apply-missing-barrel.d.ts +15 -0
  13. package/dist/asset-preview/apply-missing-barrel.d.ts.map +1 -0
  14. package/dist/asset-preview/apply-missing-barrel.js +65 -0
  15. package/dist/asset-preview/apply-template-drift-fix.d.ts +21 -0
  16. package/dist/asset-preview/apply-template-drift-fix.d.ts.map +1 -0
  17. package/dist/asset-preview/apply-template-drift-fix.js +125 -0
  18. package/dist/asset-preview/apply-template-update.d.ts +43 -0
  19. package/dist/asset-preview/apply-template-update.d.ts.map +1 -0
  20. package/dist/asset-preview/apply-template-update.js +257 -0
  21. package/dist/asset-preview/entry-mutator.d.ts +106 -0
  22. package/dist/asset-preview/entry-mutator.d.ts.map +1 -0
  23. package/dist/asset-preview/entry-mutator.js +428 -0
  24. package/dist/authoring/authoring-kit.d.ts +36 -0
  25. package/dist/authoring/authoring-kit.d.ts.map +1 -0
  26. package/dist/authoring/authoring-kit.js +106 -0
  27. package/dist/command-registry.d.ts +158 -0
  28. package/dist/command-registry.d.ts.map +1 -0
  29. package/dist/command-registry.js +348 -0
  30. package/dist/commands/apply.command.d.ts +3 -0
  31. package/dist/commands/apply.command.d.ts.map +1 -0
  32. package/dist/commands/apply.command.js +879 -0
  33. package/dist/commands/architecture.command.d.ts +5 -0
  34. package/dist/commands/architecture.command.d.ts.map +1 -0
  35. package/dist/commands/architecture.command.js +141 -0
  36. package/dist/commands/ask.command.d.ts +3 -0
  37. package/dist/commands/ask.command.d.ts.map +1 -0
  38. package/dist/commands/ask.command.js +58 -0
  39. package/dist/commands/audit.command.d.ts +3 -0
  40. package/dist/commands/audit.command.d.ts.map +1 -0
  41. package/dist/commands/audit.command.js +141 -0
  42. package/dist/commands/biome.command.d.ts +7 -0
  43. package/dist/commands/biome.command.d.ts.map +1 -0
  44. package/dist/commands/biome.command.js +350 -0
  45. package/dist/commands/boundaries.command.d.ts +9 -0
  46. package/dist/commands/boundaries.command.d.ts.map +1 -0
  47. package/dist/commands/boundaries.command.js +326 -0
  48. package/dist/commands/brief.command.d.ts +3 -0
  49. package/dist/commands/brief.command.d.ts.map +1 -0
  50. package/dist/commands/brief.command.js +206 -0
  51. package/dist/commands/bundle.command.d.ts +3 -0
  52. package/dist/commands/bundle.command.d.ts.map +1 -0
  53. package/dist/commands/bundle.command.js +1183 -0
  54. package/dist/commands/changes.command.d.ts +3 -0
  55. package/dist/commands/changes.command.d.ts.map +1 -0
  56. package/dist/commands/changes.command.js +155 -0
  57. package/dist/commands/check.command.d.ts +3 -0
  58. package/dist/commands/check.command.d.ts.map +1 -0
  59. package/dist/commands/check.command.js +580 -0
  60. package/dist/commands/checks.command.d.ts +29 -0
  61. package/dist/commands/checks.command.d.ts.map +1 -0
  62. package/dist/commands/checks.command.js +521 -0
  63. package/dist/commands/ci.command.d.ts +3 -0
  64. package/dist/commands/ci.command.d.ts.map +1 -0
  65. package/dist/commands/ci.command.js +680 -0
  66. package/dist/commands/codemod.command.d.ts +3 -0
  67. package/dist/commands/codemod.command.d.ts.map +1 -0
  68. package/dist/commands/codemod.command.js +130 -0
  69. package/dist/commands/command-catalog.d.ts +265 -0
  70. package/dist/commands/command-catalog.d.ts.map +1 -0
  71. package/dist/commands/command-catalog.js +3255 -0
  72. package/dist/commands/commands.command.d.ts +92 -0
  73. package/dist/commands/commands.command.d.ts.map +1 -0
  74. package/dist/commands/commands.command.js +1208 -0
  75. package/dist/commands/constructs.command.d.ts +15 -0
  76. package/dist/commands/constructs.command.d.ts.map +1 -0
  77. package/dist/commands/constructs.command.js +669 -0
  78. package/dist/commands/context.command.d.ts +3 -0
  79. package/dist/commands/context.command.d.ts.map +1 -0
  80. package/dist/commands/context.command.js +120 -0
  81. package/dist/commands/contract-gate.command.d.ts +5 -0
  82. package/dist/commands/contract-gate.command.d.ts.map +1 -0
  83. package/dist/commands/contract-gate.command.js +208 -0
  84. package/dist/commands/contract-templates.command.d.ts +8 -0
  85. package/dist/commands/contract-templates.command.d.ts.map +1 -0
  86. package/dist/commands/contract-templates.command.js +151 -0
  87. package/dist/commands/contract.command.d.ts +3 -0
  88. package/dist/commands/contract.command.d.ts.map +1 -0
  89. package/dist/commands/contract.command.js +105 -0
  90. package/dist/commands/conventions.command.d.ts +8 -0
  91. package/dist/commands/conventions.command.d.ts.map +1 -0
  92. package/dist/commands/conventions.command.js +169 -0
  93. package/dist/commands/coverage.command.d.ts +3 -0
  94. package/dist/commands/coverage.command.d.ts.map +1 -0
  95. package/dist/commands/coverage.command.js +56 -0
  96. package/dist/commands/daily.commands.d.ts +5 -0
  97. package/dist/commands/daily.commands.d.ts.map +1 -0
  98. package/dist/commands/daily.commands.js +224 -0
  99. package/dist/commands/dashboard-export.command.d.ts +4 -0
  100. package/dist/commands/dashboard-export.command.d.ts.map +1 -0
  101. package/dist/commands/dashboard-export.command.js +86 -0
  102. package/dist/commands/dashboard.command.d.ts +3 -0
  103. package/dist/commands/dashboard.command.d.ts.map +1 -0
  104. package/dist/commands/dashboard.command.js +106 -0
  105. package/dist/commands/dev.command.d.ts +3 -0
  106. package/dist/commands/dev.command.d.ts.map +1 -0
  107. package/dist/commands/dev.command.js +1392 -0
  108. package/dist/commands/diagnostics.command.d.ts +5 -0
  109. package/dist/commands/diagnostics.command.d.ts.map +1 -0
  110. package/dist/commands/diagnostics.command.js +97 -0
  111. package/dist/commands/docs.command.d.ts +4 -0
  112. package/dist/commands/docs.command.d.ts.map +1 -0
  113. package/dist/commands/docs.command.js +34 -0
  114. package/dist/commands/doctor.command.d.ts +7 -0
  115. package/dist/commands/doctor.command.d.ts.map +1 -0
  116. package/dist/commands/doctor.command.js +682 -0
  117. package/dist/commands/drift.command.d.ts +3 -0
  118. package/dist/commands/drift.command.d.ts.map +1 -0
  119. package/dist/commands/drift.command.js +124 -0
  120. package/dist/commands/eslint.command.d.ts +7 -0
  121. package/dist/commands/eslint.command.d.ts.map +1 -0
  122. package/dist/commands/eslint.command.js +423 -0
  123. package/dist/commands/explore.command.d.ts +3 -0
  124. package/dist/commands/explore.command.d.ts.map +1 -0
  125. package/dist/commands/explore.command.js +65 -0
  126. package/dist/commands/export-bundle.command.d.ts +6 -0
  127. package/dist/commands/export-bundle.command.d.ts.map +1 -0
  128. package/dist/commands/export-bundle.command.js +96 -0
  129. package/dist/commands/export.command.d.ts +3 -0
  130. package/dist/commands/export.command.d.ts.map +1 -0
  131. package/dist/commands/export.command.js +83 -0
  132. package/dist/commands/feedback-dispatch.command.d.ts +12 -0
  133. package/dist/commands/feedback-dispatch.command.d.ts.map +1 -0
  134. package/dist/commands/feedback-dispatch.command.js +63 -0
  135. package/dist/commands/feedback.command.d.ts +11 -0
  136. package/dist/commands/feedback.command.d.ts.map +1 -0
  137. package/dist/commands/feedback.command.js +336 -0
  138. package/dist/commands/fix.command.d.ts +3 -0
  139. package/dist/commands/fix.command.d.ts.map +1 -0
  140. package/dist/commands/fix.command.js +776 -0
  141. package/dist/commands/gen.command.d.ts +3 -0
  142. package/dist/commands/gen.command.d.ts.map +1 -0
  143. package/dist/commands/gen.command.js +136 -0
  144. package/dist/commands/git.command.d.ts +6 -0
  145. package/dist/commands/git.command.d.ts.map +1 -0
  146. package/dist/commands/git.command.js +81 -0
  147. package/dist/commands/graph.command.d.ts +3 -0
  148. package/dist/commands/graph.command.d.ts.map +1 -0
  149. package/dist/commands/graph.command.js +287 -0
  150. package/dist/commands/grounding.command.d.ts +7 -0
  151. package/dist/commands/grounding.command.d.ts.map +1 -0
  152. package/dist/commands/grounding.command.js +54 -0
  153. package/dist/commands/help.command.d.ts +20 -0
  154. package/dist/commands/help.command.d.ts.map +1 -0
  155. package/dist/commands/help.command.js +129 -0
  156. package/dist/commands/helper.command.d.ts +6 -0
  157. package/dist/commands/helper.command.d.ts.map +1 -0
  158. package/dist/commands/helper.command.js +170 -0
  159. package/dist/commands/ide.command.d.ts +6 -0
  160. package/dist/commands/ide.command.d.ts.map +1 -0
  161. package/dist/commands/ide.command.js +340 -0
  162. package/dist/commands/impact.command.d.ts +3 -0
  163. package/dist/commands/impact.command.d.ts.map +1 -0
  164. package/dist/commands/impact.command.js +819 -0
  165. package/dist/commands/import.command.d.ts +3 -0
  166. package/dist/commands/import.command.d.ts.map +1 -0
  167. package/dist/commands/import.command.js +115 -0
  168. package/dist/commands/infer.command.d.ts +3 -0
  169. package/dist/commands/infer.command.d.ts.map +1 -0
  170. package/dist/commands/infer.command.js +227 -0
  171. package/dist/commands/ingest.command.d.ts +6 -0
  172. package/dist/commands/ingest.command.d.ts.map +1 -0
  173. package/dist/commands/ingest.command.js +532 -0
  174. package/dist/commands/init.command.d.ts +3 -0
  175. package/dist/commands/init.command.d.ts.map +1 -0
  176. package/dist/commands/init.command.js +300 -0
  177. package/dist/commands/inspect.command.d.ts +3 -0
  178. package/dist/commands/inspect.command.d.ts.map +1 -0
  179. package/dist/commands/inspect.command.js +122 -0
  180. package/dist/commands/knowledge-author.command.d.ts +22 -0
  181. package/dist/commands/knowledge-author.command.d.ts.map +1 -0
  182. package/dist/commands/knowledge-author.command.js +366 -0
  183. package/dist/commands/knowledge-propose.command.d.ts +3 -0
  184. package/dist/commands/knowledge-propose.command.d.ts.map +1 -0
  185. package/dist/commands/knowledge-propose.command.js +125 -0
  186. package/dist/commands/knowledge.command.d.ts +18 -0
  187. package/dist/commands/knowledge.command.d.ts.map +1 -0
  188. package/dist/commands/knowledge.command.js +538 -0
  189. package/dist/commands/languages.command.d.ts +3 -0
  190. package/dist/commands/languages.command.d.ts.map +1 -0
  191. package/dist/commands/languages.command.js +300 -0
  192. package/dist/commands/lint.command.d.ts +15 -0
  193. package/dist/commands/lint.command.d.ts.map +1 -0
  194. package/dist/commands/lint.command.js +194 -0
  195. package/dist/commands/mcp.command.d.ts +3 -0
  196. package/dist/commands/mcp.command.d.ts.map +1 -0
  197. package/dist/commands/mcp.command.js +203 -0
  198. package/dist/commands/memory.command.d.ts +11 -0
  199. package/dist/commands/memory.command.d.ts.map +1 -0
  200. package/dist/commands/memory.command.js +264 -0
  201. package/dist/commands/onboard.command.d.ts +3 -0
  202. package/dist/commands/onboard.command.d.ts.map +1 -0
  203. package/dist/commands/onboard.command.js +662 -0
  204. package/dist/commands/orchestrate.command.d.ts +3 -0
  205. package/dist/commands/orchestrate.command.d.ts.map +1 -0
  206. package/dist/commands/orchestrate.command.js +49 -0
  207. package/dist/commands/owners.command.d.ts +5 -0
  208. package/dist/commands/owners.command.d.ts.map +1 -0
  209. package/dist/commands/owners.command.js +113 -0
  210. package/dist/commands/ownership.command.d.ts +5 -0
  211. package/dist/commands/ownership.command.d.ts.map +1 -0
  212. package/dist/commands/ownership.command.js +117 -0
  213. package/dist/commands/pack-author.command.d.ts +30 -0
  214. package/dist/commands/pack-author.command.d.ts.map +1 -0
  215. package/dist/commands/pack-author.command.js +242 -0
  216. package/dist/commands/packs-new.d.ts +27 -0
  217. package/dist/commands/packs-new.d.ts.map +1 -0
  218. package/dist/commands/packs-new.js +805 -0
  219. package/dist/commands/packs.command.d.ts +15 -0
  220. package/dist/commands/packs.command.d.ts.map +1 -0
  221. package/dist/commands/packs.command.js +964 -0
  222. package/dist/commands/paths.command.d.ts +6 -0
  223. package/dist/commands/paths.command.d.ts.map +1 -0
  224. package/dist/commands/paths.command.js +97 -0
  225. package/dist/commands/pipelines.command.d.ts +9 -0
  226. package/dist/commands/pipelines.command.d.ts.map +1 -0
  227. package/dist/commands/pipelines.command.js +308 -0
  228. package/dist/commands/plan-check.command.d.ts +27 -0
  229. package/dist/commands/plan-check.command.d.ts.map +1 -0
  230. package/dist/commands/plan-check.command.js +150 -0
  231. package/dist/commands/plan-simulate.command.d.ts +3 -0
  232. package/dist/commands/plan-simulate.command.d.ts.map +1 -0
  233. package/dist/commands/plan-simulate.command.js +60 -0
  234. package/dist/commands/plan.command.d.ts +8 -0
  235. package/dist/commands/plan.command.d.ts.map +1 -0
  236. package/dist/commands/plan.command.js +139 -0
  237. package/dist/commands/playbooks.command.d.ts +10 -0
  238. package/dist/commands/playbooks.command.d.ts.map +1 -0
  239. package/dist/commands/playbooks.command.js +296 -0
  240. package/dist/commands/plugin.command.d.ts +11 -0
  241. package/dist/commands/plugin.command.d.ts.map +1 -0
  242. package/dist/commands/plugin.command.js +394 -0
  243. package/dist/commands/policy.command.d.ts +8 -0
  244. package/dist/commands/policy.command.d.ts.map +1 -0
  245. package/dist/commands/policy.command.js +451 -0
  246. package/dist/commands/pr.command.d.ts +3 -0
  247. package/dist/commands/pr.command.d.ts.map +1 -0
  248. package/dist/commands/pr.command.js +132 -0
  249. package/dist/commands/preflight.command.d.ts +3 -0
  250. package/dist/commands/preflight.command.d.ts.map +1 -0
  251. package/dist/commands/preflight.command.js +102 -0
  252. package/dist/commands/presets.command.d.ts +17 -0
  253. package/dist/commands/presets.command.d.ts.map +1 -0
  254. package/dist/commands/presets.command.js +647 -0
  255. package/dist/commands/profiles.command.d.ts +7 -0
  256. package/dist/commands/profiles.command.d.ts.map +1 -0
  257. package/dist/commands/profiles.command.js +151 -0
  258. package/dist/commands/provenance.command.d.ts +26 -0
  259. package/dist/commands/provenance.command.d.ts.map +1 -0
  260. package/dist/commands/provenance.command.js +237 -0
  261. package/dist/commands/quality.command.d.ts +5 -0
  262. package/dist/commands/quality.command.d.ts.map +1 -0
  263. package/dist/commands/quality.command.js +69 -0
  264. package/dist/commands/recommend.command.d.ts +4 -0
  265. package/dist/commands/recommend.command.d.ts.map +1 -0
  266. package/dist/commands/recommend.command.js +270 -0
  267. package/dist/commands/registrations.command.d.ts +3 -0
  268. package/dist/commands/registrations.command.d.ts.map +1 -0
  269. package/dist/commands/registrations.command.js +300 -0
  270. package/dist/commands/registry.command.d.ts +4 -0
  271. package/dist/commands/registry.command.d.ts.map +1 -0
  272. package/dist/commands/registry.command.js +37 -0
  273. package/dist/commands/release.command.d.ts +4 -0
  274. package/dist/commands/release.command.d.ts.map +1 -0
  275. package/dist/commands/release.command.js +639 -0
  276. package/dist/commands/repo.command.d.ts +3 -0
  277. package/dist/commands/repo.command.d.ts.map +1 -0
  278. package/dist/commands/repo.command.js +24 -0
  279. package/dist/commands/report.command.d.ts +3 -0
  280. package/dist/commands/report.command.d.ts.map +1 -0
  281. package/dist/commands/report.command.js +511 -0
  282. package/dist/commands/reposet.command.d.ts +6 -0
  283. package/dist/commands/reposet.command.d.ts.map +1 -0
  284. package/dist/commands/reposet.command.js +120 -0
  285. package/dist/commands/review.command.d.ts +3 -0
  286. package/dist/commands/review.command.d.ts.map +1 -0
  287. package/dist/commands/review.command.js +380 -0
  288. package/dist/commands/risk.command.d.ts +3 -0
  289. package/dist/commands/risk.command.d.ts.map +1 -0
  290. package/dist/commands/risk.command.js +56 -0
  291. package/dist/commands/rounds.command.d.ts +8 -0
  292. package/dist/commands/rounds.command.d.ts.map +1 -0
  293. package/dist/commands/rounds.command.js +180 -0
  294. package/dist/commands/rules.command.d.ts +49 -0
  295. package/dist/commands/rules.command.d.ts.map +1 -0
  296. package/dist/commands/rules.command.js +435 -0
  297. package/dist/commands/runtime.command.d.ts +3 -0
  298. package/dist/commands/runtime.command.d.ts.map +1 -0
  299. package/dist/commands/runtime.command.js +56 -0
  300. package/dist/commands/safety.command.d.ts +3 -0
  301. package/dist/commands/safety.command.d.ts.map +1 -0
  302. package/dist/commands/safety.command.js +117 -0
  303. package/dist/commands/scaffolds.command.d.ts +5 -0
  304. package/dist/commands/scaffolds.command.d.ts.map +1 -0
  305. package/dist/commands/scaffolds.command.js +122 -0
  306. package/dist/commands/schemas.command.d.ts +21 -0
  307. package/dist/commands/schemas.command.d.ts.map +1 -0
  308. package/dist/commands/schemas.command.js +296 -0
  309. package/dist/commands/search.command.d.ts +12 -0
  310. package/dist/commands/search.command.d.ts.map +1 -0
  311. package/dist/commands/search.command.js +275 -0
  312. package/dist/commands/self-config.command.d.ts +7 -0
  313. package/dist/commands/self-config.command.d.ts.map +1 -0
  314. package/dist/commands/self-config.command.js +156 -0
  315. package/dist/commands/self.command.d.ts +3 -0
  316. package/dist/commands/self.command.d.ts.map +1 -0
  317. package/dist/commands/self.command.js +117 -0
  318. package/dist/commands/simulate.command.d.ts +3 -0
  319. package/dist/commands/simulate.command.d.ts.map +1 -0
  320. package/dist/commands/simulate.command.js +54 -0
  321. package/dist/commands/spec.command.d.ts +29 -0
  322. package/dist/commands/spec.command.d.ts.map +1 -0
  323. package/dist/commands/spec.command.js +985 -0
  324. package/dist/commands/start-here.command.d.ts +3 -0
  325. package/dist/commands/start-here.command.d.ts.map +1 -0
  326. package/dist/commands/start-here.command.js +35 -0
  327. package/dist/commands/stats.command.d.ts +3 -0
  328. package/dist/commands/stats.command.d.ts.map +1 -0
  329. package/dist/commands/stats.command.js +88 -0
  330. package/dist/commands/surface.command.d.ts +15 -0
  331. package/dist/commands/surface.command.d.ts.map +1 -0
  332. package/dist/commands/surface.command.js +328 -0
  333. package/dist/commands/task-context.command.d.ts +7 -0
  334. package/dist/commands/task-context.command.d.ts.map +1 -0
  335. package/dist/commands/task-context.command.js +646 -0
  336. package/dist/commands/task.command.d.ts +3 -0
  337. package/dist/commands/task.command.d.ts.map +1 -0
  338. package/dist/commands/task.command.js +301 -0
  339. package/dist/commands/template-quality.command.d.ts +5 -0
  340. package/dist/commands/template-quality.command.d.ts.map +1 -0
  341. package/dist/commands/template-quality.command.js +128 -0
  342. package/dist/commands/templates.command.d.ts +26 -0
  343. package/dist/commands/templates.command.d.ts.map +1 -0
  344. package/dist/commands/templates.command.js +964 -0
  345. package/dist/commands/test.command.d.ts +3 -0
  346. package/dist/commands/test.command.d.ts.map +1 -0
  347. package/dist/commands/test.command.js +262 -0
  348. package/dist/commands/tests.command.d.ts +5 -0
  349. package/dist/commands/tests.command.d.ts.map +1 -0
  350. package/dist/commands/tests.command.js +97 -0
  351. package/dist/commands/trace.command.d.ts +3 -0
  352. package/dist/commands/trace.command.d.ts.map +1 -0
  353. package/dist/commands/trace.command.js +121 -0
  354. package/dist/commands/upgrade.command.d.ts +4 -0
  355. package/dist/commands/upgrade.command.d.ts.map +1 -0
  356. package/dist/commands/upgrade.command.js +43 -0
  357. package/dist/commands/version.command.d.ts +3 -0
  358. package/dist/commands/version.command.d.ts.map +1 -0
  359. package/dist/commands/version.command.js +10 -0
  360. package/dist/commands/why.command.d.ts +24 -0
  361. package/dist/commands/why.command.d.ts.map +1 -0
  362. package/dist/commands/why.command.js +119 -0
  363. package/dist/dashboard/dashboard-api-server.d.ts +21 -0
  364. package/dist/dashboard/dashboard-api-server.d.ts.map +1 -0
  365. package/dist/dashboard/dashboard-api-server.js +410 -0
  366. package/dist/dashboard/live-session-server.d.ts +18 -0
  367. package/dist/dashboard/live-session-server.d.ts.map +1 -0
  368. package/dist/dashboard/live-session-server.js +133 -0
  369. package/dist/diff/collect-changed-paths.d.ts +27 -0
  370. package/dist/diff/collect-changed-paths.d.ts.map +1 -0
  371. package/dist/diff/collect-changed-paths.js +68 -0
  372. package/dist/doctor/doctor-tags.d.ts +63 -0
  373. package/dist/doctor/doctor-tags.d.ts.map +1 -0
  374. package/dist/doctor/doctor-tags.js +146 -0
  375. package/dist/export/export-formats.d.ts +22 -0
  376. package/dist/export/export-formats.d.ts.map +1 -0
  377. package/dist/export/export-formats.js +135 -0
  378. package/dist/index.d.ts +22 -0
  379. package/dist/index.d.ts.map +1 -0
  380. package/dist/index.js +21 -0
  381. package/dist/init/detected-block.d.ts +57 -0
  382. package/dist/init/detected-block.d.ts.map +1 -0
  383. package/dist/init/detected-block.js +197 -0
  384. package/dist/init/gitignore.d.ts +30 -0
  385. package/dist/init/gitignore.d.ts.map +1 -0
  386. package/dist/init/gitignore.js +110 -0
  387. package/dist/init/init-templates.d.ts +6 -0
  388. package/dist/init/init-templates.d.ts.map +1 -0
  389. package/dist/init/init-templates.js +413 -0
  390. package/dist/main.d.ts +18 -0
  391. package/dist/main.d.ts.map +1 -0
  392. package/dist/main.js +721 -0
  393. package/dist/output/failure-hints.d.ts +63 -0
  394. package/dist/output/failure-hints.d.ts.map +1 -0
  395. package/dist/output/failure-hints.js +165 -0
  396. package/dist/output/format-output.d.ts +9 -0
  397. package/dist/output/format-output.d.ts.map +1 -0
  398. package/dist/output/format-output.js +26 -0
  399. package/dist/output/print-error.d.ts +3 -0
  400. package/dist/output/print-error.d.ts.map +1 -0
  401. package/dist/output/print-error.js +14 -0
  402. package/dist/output/watch-loop.d.ts +37 -0
  403. package/dist/output/watch-loop.d.ts.map +1 -0
  404. package/dist/output/watch-loop.js +115 -0
  405. package/dist/schemas/json-schemas.d.ts +1630 -0
  406. package/dist/schemas/json-schemas.d.ts.map +1 -0
  407. package/dist/schemas/json-schemas.js +811 -0
  408. package/dist/surface/about.d.ts +10 -0
  409. package/dist/surface/about.d.ts.map +1 -0
  410. package/dist/surface/about.js +31 -0
  411. package/dist/surface/load-surface-context.d.ts +34 -0
  412. package/dist/surface/load-surface-context.d.ts.map +1 -0
  413. package/dist/surface/load-surface-context.js +100 -0
  414. package/dist/surface/no-args-landing.d.ts +7 -0
  415. package/dist/surface/no-args-landing.d.ts.map +1 -0
  416. package/dist/surface/no-args-landing.js +40 -0
  417. package/dist/surface/not-enabled-error.d.ts +24 -0
  418. package/dist/surface/not-enabled-error.d.ts.map +1 -0
  419. package/dist/surface/not-enabled-error.js +36 -0
  420. package/dist/surface/profiles.d.ts +37 -0
  421. package/dist/surface/profiles.d.ts.map +1 -0
  422. package/dist/surface/profiles.js +151 -0
  423. package/dist/surface/shape-defaults.d.ts +21 -0
  424. package/dist/surface/shape-defaults.d.ts.map +1 -0
  425. package/dist/surface/shape-defaults.js +50 -0
  426. package/dist/surface/spine-extractor.d.ts +38 -0
  427. package/dist/surface/spine-extractor.d.ts.map +1 -0
  428. package/dist/surface/spine-extractor.js +100 -0
  429. package/dist/surface/surface-config-writer.d.ts +59 -0
  430. package/dist/surface/surface-config-writer.d.ts.map +1 -0
  431. package/dist/surface/surface-config-writer.js +135 -0
  432. package/dist/surface/surface-summary.d.ts +66 -0
  433. package/dist/surface/surface-summary.d.ts.map +1 -0
  434. package/dist/surface/surface-summary.js +162 -0
  435. package/dist/surface/tier.d.ts +100 -0
  436. package/dist/surface/tier.d.ts.map +1 -0
  437. package/dist/surface/tier.js +172 -0
  438. package/dist/task-next/apply-batch-runner.d.ts +42 -0
  439. package/dist/task-next/apply-batch-runner.d.ts.map +1 -0
  440. package/dist/task-next/apply-batch-runner.js +192 -0
  441. package/dist/task-next/task-next-ranker.d.ts +75 -0
  442. package/dist/task-next/task-next-ranker.d.ts.map +1 -0
  443. package/dist/task-next/task-next-ranker.js +179 -0
  444. package/dist/usage/usage-log.d.ts +54 -0
  445. package/dist/usage/usage-log.d.ts.map +1 -0
  446. package/dist/usage/usage-log.js +105 -0
  447. package/dist/validation/run-validation-loop.d.ts +38 -0
  448. package/dist/validation/run-validation-loop.d.ts.map +1 -0
  449. package/dist/validation/run-validation-loop.js +100 -0
  450. package/package.json +72 -0
@@ -0,0 +1,96 @@
1
+ import * as nodePath from 'node:path';
2
+ import { exportDevSession, exportFeatureBundle, exportQuality, exportReview, inspectSharkcraft, buildQualityReport, } from '@shrkcrft/inspector';
3
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
4
+ import { asJson } from "../output/format-output.js";
5
+ function outputDir(args, cwd, fallback) {
6
+ return flagString(args, 'output') ?? nodePath.join(cwd, '.sharkcraft', 'exports', fallback);
7
+ }
8
+ export const exportBundleCommand = {
9
+ name: 'bundle',
10
+ description: 'Export a feature bundle to a folder.',
11
+ usage: 'shrk export bundle <id> [--output <dir>]',
12
+ async run(args) {
13
+ const id = args.positional[0];
14
+ if (!id) {
15
+ process.stderr.write('Usage: shrk export bundle <id>\n');
16
+ return 2;
17
+ }
18
+ const cwd = resolveCwd(args);
19
+ const dir = outputDir(args, cwd, `bundle-${id}`);
20
+ const r = exportFeatureBundle(cwd, id, dir);
21
+ if (!r) {
22
+ process.stderr.write(`No bundle "${id}"\n`);
23
+ return 1;
24
+ }
25
+ if (flagBool(args, 'json'))
26
+ process.stdout.write(asJson(r) + '\n');
27
+ else
28
+ process.stdout.write(`Exported ${r.files.length} file(s) → ${r.outputDir}\n`);
29
+ return 0;
30
+ },
31
+ };
32
+ export const exportSessionCommand = {
33
+ name: 'session',
34
+ description: 'Export a dev session to a folder.',
35
+ usage: 'shrk export session <id> [--output <dir>]',
36
+ async run(args) {
37
+ const id = args.positional[0];
38
+ if (!id) {
39
+ process.stderr.write('Usage: shrk export session <id>\n');
40
+ return 2;
41
+ }
42
+ const cwd = resolveCwd(args);
43
+ const dir = outputDir(args, cwd, `session-${id}`);
44
+ const r = exportDevSession(cwd, id, dir);
45
+ if (!r) {
46
+ process.stderr.write(`No session "${id}"\n`);
47
+ return 1;
48
+ }
49
+ if (flagBool(args, 'json'))
50
+ process.stdout.write(asJson(r) + '\n');
51
+ else
52
+ process.stdout.write(`Exported ${r.files.length} file(s) → ${r.outputDir}\n`);
53
+ return 0;
54
+ },
55
+ };
56
+ export const exportQualityCommand = {
57
+ name: 'quality',
58
+ description: 'Export current quality report to a folder.',
59
+ usage: 'shrk export quality [--output <dir>]',
60
+ async run(args) {
61
+ const cwd = resolveCwd(args);
62
+ const inspection = await inspectSharkcraft({ cwd });
63
+ const report = await buildQualityReport({ inspection, config: {} });
64
+ const dir = outputDir(args, cwd, `quality-${new Date().toISOString().slice(0, 10)}`);
65
+ const r = exportQuality(cwd, dir, report);
66
+ if (flagBool(args, 'json'))
67
+ process.stdout.write(asJson(r) + '\n');
68
+ else
69
+ process.stdout.write(`Exported quality → ${r.outputDir}\n`);
70
+ return 0;
71
+ },
72
+ };
73
+ export const exportReviewCommand = {
74
+ name: 'review',
75
+ description: 'Export a review packet to a folder.',
76
+ usage: 'shrk export review <packet.json> [--output <dir>]',
77
+ async run(args) {
78
+ const file = args.positional[0];
79
+ if (!file) {
80
+ process.stderr.write('Usage: shrk export review <packet.json>\n');
81
+ return 2;
82
+ }
83
+ const cwd = resolveCwd(args);
84
+ const dir = outputDir(args, cwd, `review-${new Date().toISOString().slice(0, 10)}`);
85
+ const r = exportReview(cwd, file, dir);
86
+ if (!r) {
87
+ process.stderr.write(`Packet not found: ${file}\n`);
88
+ return 1;
89
+ }
90
+ if (flagBool(args, 'json'))
91
+ process.stdout.write(asJson(r) + '\n');
92
+ else
93
+ process.stdout.write(`Exported review → ${r.outputDir}\n`);
94
+ return 0;
95
+ },
96
+ };
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const exportCommand: ICommandHandler;
3
+ //# sourceMappingURL=export.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.command.d.ts","sourceRoot":"","sources":["../../src/commands/export.command.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAgBhC,eAAO,MAAM,aAAa,EAAE,eAkF3B,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { inspectSharkcraft } from '@shrkcrft/inspector';
4
+ import { ALL_EXPORT_FORMATS, isExportFormat, renderExport, } from "../export/export-formats.js";
5
+ import { flagBool, flagNumber, flagString, resolveCwd, } from "../command-registry.js";
6
+ import { asJson, header } from "../output/format-output.js";
7
+ import { exportBundleCommand, exportSessionCommand, exportQualityCommand, exportReviewCommand, } from "./export-bundle.command.js";
8
+ const ARCHIVE_SUBCOMMANDS = {
9
+ bundle: exportBundleCommand,
10
+ session: exportSessionCommand,
11
+ quality: exportQualityCommand,
12
+ review: exportReviewCommand,
13
+ };
14
+ export const exportCommand = {
15
+ name: 'export',
16
+ description: 'Render SharkCraft knowledge as a flat agent-rule file (AGENTS.md / CLAUDE.md / .cursor/rules / copilot-instructions). Dry-run by default; pass --write to save.',
17
+ usage: 'shrk [--cwd <dir>] export <format> [--write] [--output <path>] [--task "<task>"] [--max-rules N] [--max-paths N] [--json]',
18
+ async run(args) {
19
+ const format = args.positional[0];
20
+ if (!format) {
21
+ process.stderr.write(`Usage: shrk export <format>\nFormats: ${ALL_EXPORT_FORMATS.join(', ')}\n`);
22
+ return 2;
23
+ }
24
+ // Archive subcommands intercepted here so `shrk export bundle <id>` still works.
25
+ const archive = ARCHIVE_SUBCOMMANDS[format];
26
+ if (archive) {
27
+ const sub = { ...args, positional: args.positional.slice(1) };
28
+ return archive.run(sub);
29
+ }
30
+ if (!isExportFormat(format)) {
31
+ process.stderr.write(`Unknown export format "${format}".\nFormats: ${ALL_EXPORT_FORMATS.join(', ')}, bundle, session, quality, review\n`);
32
+ return 2;
33
+ }
34
+ const cwd = resolveCwd(args);
35
+ const inspection = await inspectSharkcraft({ cwd });
36
+ const result = renderExport(inspection, {
37
+ format,
38
+ task: flagString(args, 'task'),
39
+ maxRules: flagNumber(args, 'max-rules'),
40
+ maxPaths: flagNumber(args, 'max-paths'),
41
+ });
42
+ const wantJson = flagBool(args, 'json');
43
+ const doWrite = flagBool(args, 'write');
44
+ const outputFlag = flagString(args, 'output');
45
+ const outputPath = outputFlag
46
+ ? (outputFlag.startsWith('/') ? outputFlag : join(cwd, outputFlag))
47
+ : join(cwd, result.suggestedPath);
48
+ if (doWrite) {
49
+ mkdirSync(dirname(outputPath), { recursive: true });
50
+ if (existsSync(outputPath) && !flagBool(args, 'force')) {
51
+ process.stderr.write(`Refusing to overwrite existing ${outputPath}. Pass --force to allow.\n`);
52
+ return 1;
53
+ }
54
+ writeFileSync(outputPath, result.content, 'utf8');
55
+ if (wantJson) {
56
+ process.stdout.write(asJson({ written: true, path: outputPath, format }) + '\n');
57
+ }
58
+ else {
59
+ process.stdout.write(`Wrote ${outputPath}\n`);
60
+ }
61
+ return 0;
62
+ }
63
+ if (wantJson) {
64
+ process.stdout.write(asJson({
65
+ format,
66
+ suggestedPath: result.suggestedPath,
67
+ targetPath: outputPath,
68
+ content: result.content,
69
+ }) + '\n');
70
+ return 0;
71
+ }
72
+ process.stdout.write(header(`Export (${format}) — dry-run`));
73
+ process.stdout.write(`Would write to: ${outputPath}\n`);
74
+ process.stdout.write(`Suggested default path: ${result.suggestedPath}\n\n`);
75
+ process.stdout.write('--- preview ---\n');
76
+ process.stdout.write(result.content);
77
+ if (!result.content.endsWith('\n'))
78
+ process.stdout.write('\n');
79
+ process.stdout.write('--- end preview ---\n');
80
+ process.stdout.write('\nRe-run with --write to save.\n');
81
+ return 0;
82
+ },
83
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Top-level `shrk feedback` dispatcher, plus the `feedback rules
3
+ * list|doctor` family.
4
+ *
5
+ * The registry routes subcommands when the second positional is a real
6
+ * verb. This file maps `shrk feedback <verb>` → the verb-specific
7
+ * handler, while also accepting `shrk feedback <file>` (defaults to
8
+ * `ingest`).
9
+ */
10
+ import type { ICommandHandler } from '../command-registry.js';
11
+ export declare const feedbackCommand: ICommandHandler;
12
+ //# sourceMappingURL=feedback-dispatch.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-dispatch.command.d.ts","sourceRoot":"","sources":["../../src/commands/feedback-dispatch.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,wBAAwB,CAAC;AA6B1E,eAAO,MAAM,eAAe,EAAE,eAmD7B,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { feedbackActionsCommand, feedbackBacklogCommand, feedbackConvertToBacklogCommand, feedbackIngestCommand, feedbackPlanCommand, feedbackPromptCommand, feedbackRulesDoctorCommand, feedbackRulesListCommand, feedbackSummarizeCommand, } from "./feedback.command.js";
2
+ const VERBS = {
3
+ ingest: feedbackIngestCommand,
4
+ summarize: feedbackSummarizeCommand,
5
+ actions: feedbackActionsCommand,
6
+ 'convert-to-backlog': feedbackConvertToBacklogCommand,
7
+ // v2
8
+ backlog: feedbackBacklogCommand,
9
+ prompt: feedbackPromptCommand,
10
+ plan: feedbackPlanCommand,
11
+ };
12
+ const RULES_VERBS = {
13
+ list: feedbackRulesListCommand,
14
+ doctor: feedbackRulesDoctorCommand,
15
+ };
16
+ export const feedbackCommand = {
17
+ name: 'feedback',
18
+ description: 'Parse freeform feedback markdown into structured findings. Subcommands: ingest|summarize|actions|convert-to-backlog|rules. Read-only.',
19
+ usage: 'shrk feedback <ingest|summarize|actions|convert-to-backlog> <file> [--with-pack-rules] [--json]\n shrk feedback rules <list|doctor> [--json]',
20
+ async run(args) {
21
+ const verb = args.positional[0];
22
+ if (verb === 'rules') {
23
+ const sub = args.positional[1];
24
+ const next = { ...args, positional: args.positional.slice(2) };
25
+ if (sub && RULES_VERBS[sub]) {
26
+ return RULES_VERBS[sub].run(next);
27
+ }
28
+ // Default rules verb is list.
29
+ return feedbackRulesListCommand.run(next);
30
+ }
31
+ if (verb && VERBS[verb]) {
32
+ const sub = { ...args, positional: args.positional.slice(1) };
33
+ return VERBS[verb].run(sub);
34
+ }
35
+ // If `verb` looks like a known SharkCraft verb (e.g. "list" / "rules")
36
+ // but the user typed it in the wrong position, surface a did-you-mean
37
+ // hint rather than silently trying to read the verb as a file.
38
+ if (verb && !verb.includes('/') && !verb.includes('.')) {
39
+ const { existsSync } = await import('node:fs');
40
+ const isFile = existsSync(verb);
41
+ if (!isFile) {
42
+ const known = [...Object.keys(VERBS), 'rules list', 'rules doctor'];
43
+ const closest = known.find((k) => k === verb || k.startsWith(verb + ' '));
44
+ if (closest) {
45
+ process.stderr.write(`Unknown subcommand: feedback ${verb}\n`);
46
+ process.stderr.write(`Did you mean: shrk feedback ${closest}?\n`);
47
+ return 2;
48
+ }
49
+ if (verb === 'list') {
50
+ process.stderr.write(`Unknown subcommand: feedback ${verb}\n`);
51
+ process.stderr.write('Did you mean: shrk feedback rules list?\n');
52
+ return 2;
53
+ }
54
+ }
55
+ }
56
+ // Default: treat first positional as a file → ingest.
57
+ if (verb) {
58
+ return feedbackIngestCommand.run(args);
59
+ }
60
+ process.stderr.write('Usage: shrk feedback <ingest|summarize|actions|convert-to-backlog|rules> ...\n');
61
+ return 2;
62
+ },
63
+ };
@@ -0,0 +1,11 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const feedbackIngestCommand: ICommandHandler;
3
+ export declare const feedbackSummarizeCommand: ICommandHandler;
4
+ export declare const feedbackActionsCommand: ICommandHandler;
5
+ export declare const feedbackConvertToBacklogCommand: ICommandHandler;
6
+ export declare const feedbackRulesListCommand: ICommandHandler;
7
+ export declare const feedbackRulesDoctorCommand: ICommandHandler;
8
+ export declare const feedbackBacklogCommand: ICommandHandler;
9
+ export declare const feedbackPromptCommand: ICommandHandler;
10
+ export declare const feedbackPlanCommand: ICommandHandler;
11
+ //# sourceMappingURL=feedback.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.command.d.ts","sourceRoot":"","sources":["../../src/commands/feedback.command.ts"],"names":[],"mappings":"AAiBA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAgBhC,eAAO,MAAM,qBAAqB,EAAE,eAiCnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eA0CtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAyDpC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,eAwB7C,CAAC;AAIF,eAAO,MAAM,wBAAwB,EAAE,eAqBtC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,eAiDxC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,eAqBpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAqBnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eA6BjC,CAAC"}
@@ -0,0 +1,336 @@
1
+ /**
2
+ * `shrk feedback` family (ingest|summarize|actions|convert-to-backlog),
3
+ * plus pack-contributed rules and `feedback rules list|doctor`.
4
+ *
5
+ * Deterministic — no AI. Reads freeform feedback markdown/text and emits
6
+ * structured findings.
7
+ */
8
+ import { mkdirSync, writeFileSync } from 'node:fs';
9
+ import * as nodePath from 'node:path';
10
+ import { FeedbackBucket, ingestFeedbackFile, inspectSharkcraft, loadFeedbackRules, renderFeedbackBacklog, } from '@shrkcrft/inspector';
11
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
12
+ import { asJson, header } from "../output/format-output.js";
13
+ function ingestPositional(args) {
14
+ return args.positional[0];
15
+ }
16
+ async function loadRulesIfRequested(args, cwd) {
17
+ if (!flagBool(args, 'with-pack-rules'))
18
+ return [];
19
+ const inspection = await inspectSharkcraft({ cwd });
20
+ return loadFeedbackRules(inspection);
21
+ }
22
+ export const feedbackIngestCommand = {
23
+ name: 'ingest',
24
+ description: 'Parse a feedback file into structured findings. Supports pack rules. Read-only.',
25
+ usage: 'shrk feedback ingest <file> [--with-pack-rules] [--json]',
26
+ async run(args) {
27
+ const file = ingestPositional(args);
28
+ if (!file) {
29
+ process.stderr.write('Usage: shrk feedback ingest <file>\n');
30
+ return 2;
31
+ }
32
+ const cwd = resolveCwd(args);
33
+ try {
34
+ const rules = await loadRulesIfRequested(args, cwd);
35
+ const report = ingestFeedbackFile(cwd, file, { rules });
36
+ if (flagBool(args, 'json')) {
37
+ process.stdout.write(asJson(report) + '\n');
38
+ return 0;
39
+ }
40
+ process.stdout.write(header(`Feedback ingestion (${report.totalFindings})`));
41
+ for (const b of Object.values(FeedbackBucket)) {
42
+ process.stdout.write(` ${b}: ${report.counts[b] ?? 0}\n`);
43
+ }
44
+ process.stdout.write('\nFindings:\n');
45
+ for (const f of report.findings) {
46
+ process.stdout.write(` • [${f.bucket}/${f.severity}] ${f.text}\n`);
47
+ if (f.targetArea)
48
+ process.stdout.write(` target: ${f.targetArea}\n`);
49
+ }
50
+ return 0;
51
+ }
52
+ catch (e) {
53
+ process.stderr.write(`Failed to ingest: ${e.message}\n`);
54
+ return 1;
55
+ }
56
+ },
57
+ };
58
+ export const feedbackSummarizeCommand = {
59
+ name: 'summarize',
60
+ description: 'Produce a short summary of a feedback file (counts + top tags). Read-only.',
61
+ usage: 'shrk feedback summarize <file> [--json]',
62
+ async run(args) {
63
+ const file = ingestPositional(args);
64
+ if (!file) {
65
+ process.stderr.write('Usage: shrk feedback summarize <file>\n');
66
+ return 2;
67
+ }
68
+ const cwd = resolveCwd(args);
69
+ const report = ingestFeedbackFile(cwd, file);
70
+ const tagCounts = new Map();
71
+ for (const f of report.findings) {
72
+ for (const t of f.tags)
73
+ tagCounts.set(t, (tagCounts.get(t) ?? 0) + 1);
74
+ }
75
+ const sortedTags = [...tagCounts.entries()].sort((a, b) => b[1] - a[1]);
76
+ const summary = {
77
+ schema: 'sharkcraft.feedback-summary/v1',
78
+ sourceFile: file,
79
+ totals: report.counts,
80
+ topTags: sortedTags.slice(0, 10).map(([tag, count]) => ({ tag, count })),
81
+ nextRound: report.suggestedNextRound,
82
+ };
83
+ if (flagBool(args, 'json')) {
84
+ process.stdout.write(asJson(summary) + '\n');
85
+ return 0;
86
+ }
87
+ process.stdout.write(header('Feedback summary'));
88
+ for (const [k, v] of Object.entries(summary.totals)) {
89
+ process.stdout.write(` ${k}: ${v}\n`);
90
+ }
91
+ if (summary.topTags.length > 0) {
92
+ process.stdout.write('\nTop tags:\n');
93
+ for (const t of summary.topTags)
94
+ process.stdout.write(` ${t.tag}: ${t.count}\n`);
95
+ }
96
+ if (summary.nextRound.length > 0) {
97
+ process.stdout.write('\nSuggested next round:\n');
98
+ for (const n of summary.nextRound)
99
+ process.stdout.write(` • ${n}\n`);
100
+ }
101
+ return 0;
102
+ },
103
+ };
104
+ export const feedbackActionsCommand = {
105
+ name: 'actions',
106
+ description: 'Render the suggested follow-up commands extracted from a feedback file. Default emits the richer v2 schema; pass --legacy for the v1 output.',
107
+ usage: 'shrk feedback actions <file> [--with-pack-rules] [--legacy] [--json]',
108
+ async run(args) {
109
+ const file = ingestPositional(args);
110
+ if (!file) {
111
+ process.stderr.write('Usage: shrk feedback actions <file>\n');
112
+ return 2;
113
+ }
114
+ const cwd = resolveCwd(args);
115
+ // Default to v2 shape.
116
+ if (!flagBool(args, 'legacy')) {
117
+ const { buildFeedbackActionsReport, inspectSharkcraft } = await import('@shrkcrft/inspector');
118
+ const inspection = await inspectSharkcraft({ cwd });
119
+ const v2 = buildFeedbackActionsReport(inspection, file);
120
+ if (flagBool(args, 'json')) {
121
+ process.stdout.write(asJson(v2) + '\n');
122
+ return 0;
123
+ }
124
+ process.stdout.write(header(`Feedback actions v2 (${v2.actions.length})`));
125
+ for (const a of v2.actions) {
126
+ process.stdout.write(`• [${a.priority}] [${a.category}] (${a.origin}) ${a.targetArea} — ${a.paraphrase ?? ''}\n`);
127
+ for (const c of a.recommendedCommands)
128
+ process.stdout.write(` $ ${c}\n`);
129
+ }
130
+ return 0;
131
+ }
132
+ const rules = await loadRulesIfRequested(args, cwd);
133
+ const report = ingestFeedbackFile(cwd, file, { rules });
134
+ const seen = new Set();
135
+ const actions = [];
136
+ for (const f of report.findings) {
137
+ const key = f.text + '|' + f.suggestedCommands.join(',');
138
+ if (seen.has(key))
139
+ continue;
140
+ seen.add(key);
141
+ if (f.suggestedCommands.length > 0) {
142
+ actions.push({
143
+ text: f.text,
144
+ commands: f.suggestedCommands,
145
+ ...(f.targetArea ? { target: f.targetArea } : {}),
146
+ });
147
+ }
148
+ }
149
+ if (flagBool(args, 'json')) {
150
+ process.stdout.write(asJson({ schema: 'sharkcraft.feedback-actions/v1', actions }) + '\n');
151
+ return 0;
152
+ }
153
+ process.stdout.write(header(`Feedback actions (${actions.length})`));
154
+ for (const a of actions) {
155
+ process.stdout.write(`• ${a.text}\n`);
156
+ for (const c of a.commands)
157
+ process.stdout.write(` $ ${c}\n`);
158
+ }
159
+ return 0;
160
+ },
161
+ };
162
+ export const feedbackConvertToBacklogCommand = {
163
+ name: 'convert-to-backlog',
164
+ description: 'Render a feedback file as a markdown backlog under .sharkcraft/reports/.',
165
+ usage: 'shrk feedback convert-to-backlog <file> --output <path>',
166
+ async run(args) {
167
+ const file = ingestPositional(args);
168
+ const out = flagString(args, 'output');
169
+ if (!file) {
170
+ process.stderr.write('Usage: shrk feedback convert-to-backlog <file> [--output <path>]\n');
171
+ return 2;
172
+ }
173
+ const cwd = resolveCwd(args);
174
+ const report = ingestFeedbackFile(cwd, file);
175
+ const md = renderFeedbackBacklog(report);
176
+ if (!out) {
177
+ process.stdout.write(md);
178
+ return 0;
179
+ }
180
+ const abs = nodePath.isAbsolute(out) ? out : nodePath.join(cwd, out);
181
+ mkdirSync(nodePath.dirname(abs), { recursive: true });
182
+ writeFileSync(abs, md, 'utf8');
183
+ process.stdout.write(`Backlog written → ${abs}\n`);
184
+ return 0;
185
+ },
186
+ };
187
+ // `feedback rules` subcommands.
188
+ export const feedbackRulesListCommand = {
189
+ name: 'list',
190
+ description: 'List local + pack-contributed feedback rules. Read-only.',
191
+ usage: 'shrk feedback rules list [--json]',
192
+ async run(args) {
193
+ const cwd = resolveCwd(args);
194
+ const inspection = await inspectSharkcraft({ cwd });
195
+ const rules = await loadFeedbackRules(inspection);
196
+ if (flagBool(args, 'json')) {
197
+ process.stdout.write(asJson({ count: rules.length, rules }) + '\n');
198
+ return 0;
199
+ }
200
+ process.stdout.write(header(`Feedback rules (${rules.length})`));
201
+ for (const r of rules) {
202
+ process.stdout.write(` ${r.id.padEnd(40)} ${r.title}\n`);
203
+ const kws = [...(r.keywords ?? []), ...(r.phrases ?? [])].slice(0, 5).join(', ');
204
+ if (kws)
205
+ process.stdout.write(` keywords: ${kws}\n`);
206
+ if (r.targetArea)
207
+ process.stdout.write(` target: ${r.targetArea}\n`);
208
+ }
209
+ return 0;
210
+ },
211
+ };
212
+ export const feedbackRulesDoctorCommand = {
213
+ name: 'doctor',
214
+ description: 'Validate local + pack feedback rules. Read-only.',
215
+ usage: 'shrk feedback rules doctor [--json]',
216
+ async run(args) {
217
+ const cwd = resolveCwd(args);
218
+ const inspection = await inspectSharkcraft({ cwd });
219
+ const rules = await loadFeedbackRules(inspection);
220
+ const errors = [];
221
+ const warnings = [];
222
+ const ids = new Set();
223
+ for (const r of rules) {
224
+ if (!r.id || ids.has(r.id)) {
225
+ errors.push({ id: r.id ?? '?', message: r.id ? 'duplicate id' : 'missing id' });
226
+ }
227
+ else {
228
+ ids.add(r.id);
229
+ }
230
+ const fragments = (r.keywords?.length ?? 0) + (r.phrases?.length ?? 0) + (r.regexes?.length ?? 0);
231
+ if (fragments === 0) {
232
+ errors.push({ id: r.id, message: 'rule has no keywords/phrases/regexes — will never match' });
233
+ }
234
+ if (!r.title)
235
+ warnings.push({ id: r.id, message: 'no title' });
236
+ if (!r.targetArea)
237
+ warnings.push({ id: r.id, message: 'no targetArea — uses rule id as fallback' });
238
+ if ((!r.suggestedActions || r.suggestedActions.length === 0) &&
239
+ (!r.relatedCommands || r.relatedCommands.length === 0)) {
240
+ warnings.push({ id: r.id, message: 'no suggestedActions / relatedCommands' });
241
+ }
242
+ }
243
+ if (flagBool(args, 'json')) {
244
+ process.stdout.write(asJson({
245
+ schema: 'sharkcraft.feedback-rule-doctor/v1',
246
+ total: rules.length,
247
+ errors,
248
+ warnings,
249
+ passed: errors.length === 0,
250
+ }) + '\n');
251
+ return errors.length > 0 ? 1 : 0;
252
+ }
253
+ process.stdout.write(header(`Feedback rule doctor (${rules.length} rules)`));
254
+ process.stdout.write(`errors: ${errors.length}\nwarnings: ${warnings.length}\n`);
255
+ for (const e of errors)
256
+ process.stdout.write(` ERROR ${e.id}: ${e.message}\n`);
257
+ for (const w of warnings)
258
+ process.stdout.write(` WARN ${w.id}: ${w.message}\n`);
259
+ return errors.length > 0 ? 1 : 0;
260
+ },
261
+ };
262
+ // Feedback v2 outputs: backlog, prompt, plan.
263
+ export const feedbackBacklogCommand = {
264
+ name: 'backlog',
265
+ description: 'Render a feedback file as a priority-grouped markdown backlog (v2).',
266
+ usage: 'shrk feedback backlog <file> [--json] [--output <path>]',
267
+ async run(args) {
268
+ const file = ingestPositional(args);
269
+ if (!file) {
270
+ process.stderr.write('Usage: shrk feedback backlog <file>\n');
271
+ return 2;
272
+ }
273
+ const cwd = resolveCwd(args);
274
+ const { buildFeedbackBacklogReport, inspectSharkcraft } = await import('@shrkcrft/inspector');
275
+ const inspection = await inspectSharkcraft({ cwd });
276
+ const report = buildFeedbackBacklogReport(inspection, file);
277
+ if (flagBool(args, 'json')) {
278
+ process.stdout.write(asJson(report) + '\n');
279
+ return 0;
280
+ }
281
+ process.stdout.write(report.markdown);
282
+ return 0;
283
+ },
284
+ };
285
+ export const feedbackPromptCommand = {
286
+ name: 'prompt',
287
+ description: 'Render a feedback file as a Markdown implementation prompt (v2).',
288
+ usage: 'shrk feedback prompt <file> [--json]',
289
+ async run(args) {
290
+ const file = ingestPositional(args);
291
+ if (!file) {
292
+ process.stderr.write('Usage: shrk feedback prompt <file>\n');
293
+ return 2;
294
+ }
295
+ const cwd = resolveCwd(args);
296
+ const { buildFeedbackPromptReport, inspectSharkcraft } = await import('@shrkcrft/inspector');
297
+ const inspection = await inspectSharkcraft({ cwd });
298
+ const report = buildFeedbackPromptReport(inspection, file);
299
+ if (flagBool(args, 'json')) {
300
+ process.stdout.write(asJson(report) + '\n');
301
+ return 0;
302
+ }
303
+ process.stdout.write(report.markdown);
304
+ return 0;
305
+ },
306
+ };
307
+ export const feedbackPlanCommand = {
308
+ name: 'plan',
309
+ description: 'Render a feedback file as an ordered implementation plan with validation gates (v2).',
310
+ usage: 'shrk feedback plan <file> [--json]',
311
+ async run(args) {
312
+ const file = ingestPositional(args);
313
+ if (!file) {
314
+ process.stderr.write('Usage: shrk feedback plan <file>\n');
315
+ return 2;
316
+ }
317
+ const cwd = resolveCwd(args);
318
+ const { buildFeedbackPlanReport, inspectSharkcraft } = await import('@shrkcrft/inspector');
319
+ const inspection = await inspectSharkcraft({ cwd });
320
+ const report = buildFeedbackPlanReport(inspection, file);
321
+ if (flagBool(args, 'json')) {
322
+ process.stdout.write(asJson(report) + '\n');
323
+ return 0;
324
+ }
325
+ process.stdout.write(`=== Feedback plan ===\n`);
326
+ for (const a of report.orderedActions) {
327
+ process.stdout.write(` [${a.priority}] ${a.targetArea} — ${a.paraphrase ?? a.originalExcerpt.slice(0, 80)}…\n`);
328
+ for (const c of a.recommendedCommands)
329
+ process.stdout.write(` $ ${c}\n`);
330
+ }
331
+ process.stdout.write('\nValidation gates:\n');
332
+ for (const g of report.validationGates)
333
+ process.stdout.write(` $ ${g}\n`);
334
+ return 0;
335
+ },
336
+ };
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const fixCommand: ICommandHandler;
3
+ //# sourceMappingURL=fix.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.command.d.ts","sourceRoot":"","sources":["../../src/commands/fix.command.ts"],"names":[],"mappings":"AAwBA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AA0PhC,eAAO,MAAM,UAAU,EAAE,eAwBxB,CAAC"}