@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,275 @@
1
+ import { buildSearchIndex, entrypointBanner, explainSearchTuning, inspectSharkcraft, loadConstructs, loadPlaybooks, loadSearchTuning, renderSearchText, renderTuningExplainHtml, renderTuningExplainMarkdown, searchIndex, SearchKind, SearchSource, } from '@shrkcrft/inspector';
2
+ import { flagBool, flagNumber, flagString, flagList, resolveCwd, } from "../command-registry.js";
3
+ import { asJson } from "../output/format-output.js";
4
+ const VALID_KINDS = new Set(Object.values(SearchKind));
5
+ const VALID_SOURCES = new Set(Object.values(SearchSource));
6
+ function parseKinds(args) {
7
+ const list = flagList(args, 'type').concat(flagList(args, 'kind'));
8
+ if (list.length === 0)
9
+ return undefined;
10
+ const out = [];
11
+ for (const v of list) {
12
+ if (VALID_KINDS.has(v))
13
+ out.push(v);
14
+ }
15
+ return out;
16
+ }
17
+ function parseSources(args) {
18
+ const list = flagList(args, 'source');
19
+ if (list.length === 0)
20
+ return undefined;
21
+ const out = [];
22
+ for (const v of list) {
23
+ if (VALID_SOURCES.has(v))
24
+ out.push(v);
25
+ }
26
+ return out;
27
+ }
28
+ export const searchCommand = {
29
+ name: 'search',
30
+ description: 'Universal search across commands, MCP tools, knowledge, rules, paths, conventions, templates, helpers, playbooks, constructs, policies, decisions, scaffold patterns, contract templates, migration profiles, plugin lifecycle profiles, feedback rules, task routing hints, docs, recent reports. Default emits the 7-section unified output; pass --legacy for the flat output.',
31
+ usage: 'shrk search <query> [--kind <kind>] [--source local|pack|...] [--limit N] [--explain] [--commands-only] [--actions-only] [--format text|markdown|json] [--legacy]',
32
+ async run(args) {
33
+ // Sub-dispatch for `shrk search tuning [list|doctor]`.
34
+ if (args.positional[0] === 'tuning') {
35
+ const sliced = { ...args, positional: args.positional.slice(1) };
36
+ return searchTuningListCommand.run(sliced);
37
+ }
38
+ const query = args.positional.join(' ').trim();
39
+ if (!query) {
40
+ process.stderr.write('Usage: shrk search <query> [--kind ...] [--limit N] [--commands-only] [--actions-only] [--format text|markdown|json] | shrk search tuning [list|doctor]\n');
41
+ return 2;
42
+ }
43
+ const cwd = resolveCwd(args);
44
+ const inspection = await inspectSharkcraft({ cwd });
45
+ // Universal search v2 is the default. Pass --legacy to get the
46
+ // flat output.
47
+ if (!flagBool(args, 'legacy')) {
48
+ const { buildUniversalSearch, renderUniversalSearchText, renderUniversalSearchMarkdown, } = await import('@shrkcrft/inspector');
49
+ const kindFilter = flagString(args, 'kind');
50
+ const sourceFilter = flagString(args, 'source');
51
+ const limit = flagNumber(args, 'limit');
52
+ const opts = {};
53
+ if (kindFilter)
54
+ opts.kind = kindFilter;
55
+ if (sourceFilter)
56
+ opts.source = sourceFilter;
57
+ if (limit)
58
+ opts.limit = limit;
59
+ if (flagBool(args, 'commands-only'))
60
+ opts.commandsOnly = true;
61
+ if (flagBool(args, 'actions-only'))
62
+ opts.actionsOnly = true;
63
+ const report = await buildUniversalSearch(inspection, query, opts);
64
+ const format = flagString(args, 'format') ?? 'text';
65
+ if (flagBool(args, 'json') || format === 'json') {
66
+ process.stdout.write(asJson(report) + '\n');
67
+ return 0;
68
+ }
69
+ if (format === 'markdown') {
70
+ process.stdout.write(renderUniversalSearchMarkdown(report));
71
+ return 0;
72
+ }
73
+ // Banner so the operator sees `search` is the registry-search
74
+ // entrypoint, not "what should I do?".
75
+ process.stdout.write(`(${entrypointBanner('search')})\n\n`);
76
+ // Text mode is summary-only by default (top 3 of each non-empty
77
+ // section). Pass `--verbose` / `--full` for the full 7-section bundle.
78
+ const verbose = flagBool(args, 'verbose') || flagBool(args, 'full');
79
+ if (verbose) {
80
+ process.stdout.write(renderUniversalSearchText(report));
81
+ }
82
+ else {
83
+ process.stdout.write(renderUniversalSearchSummary(report, flagNumber(args, 'top') ?? 3));
84
+ }
85
+ return 0;
86
+ }
87
+ // Warm registries so search includes constructs / playbooks / tuning.
88
+ await loadConstructs(inspection);
89
+ await loadPlaybooks(inspection);
90
+ await loadSearchTuning(inspection);
91
+ const index = buildSearchIndex(inspection);
92
+ const opts = { query };
93
+ const kinds = parseKinds(args);
94
+ if (kinds)
95
+ opts.kinds = kinds;
96
+ const sources = parseSources(args);
97
+ if (sources)
98
+ opts.sources = sources;
99
+ const limit = flagNumber(args, 'limit');
100
+ if (limit)
101
+ opts.limit = limit;
102
+ if (flagBool(args, 'explain'))
103
+ opts.explain = true;
104
+ const result = searchIndex(index, opts, inspection);
105
+ if (flagBool(args, 'json')) {
106
+ // Stable serialization: convert the grouped Map to an object.
107
+ const grouped = {};
108
+ for (const [k, v] of result.grouped)
109
+ grouped[k] = v;
110
+ process.stdout.write(asJson({
111
+ query: result.query,
112
+ total: result.total,
113
+ truncated: result.truncated,
114
+ hits: result.hits,
115
+ grouped,
116
+ }) + '\n');
117
+ return 0;
118
+ }
119
+ // Same banner on the legacy text path.
120
+ process.stdout.write(`(${entrypointBanner('search')})\n\n`);
121
+ process.stdout.write(renderSearchText(result));
122
+ return 0;
123
+ },
124
+ };
125
+ export const searchTuningListCommand = {
126
+ name: 'tuning',
127
+ description: 'List, doctor, or explain search-tuning entries (local + pack).',
128
+ usage: 'shrk search tuning list|doctor|explain <query> [--format markdown|html|json]',
129
+ async run(args) {
130
+ const sub = args.positional[0];
131
+ const cwd = resolveCwd(args);
132
+ const inspection = await inspectSharkcraft({ cwd });
133
+ if (sub === 'explain') {
134
+ const query = args.positional.slice(1).join(' ').trim();
135
+ if (!query) {
136
+ process.stderr.write('Usage: shrk search tuning explain <query> [--kind <kind>] [--source <source>] [--limit N] [--format markdown|html|json]\n');
137
+ return 2;
138
+ }
139
+ const limit = flagNumber(args, 'limit');
140
+ const kindFilter = flagString(args, 'kind');
141
+ const sourceFilter = flagString(args, 'source');
142
+ let report = await explainSearchTuning(inspection, query, typeof limit === 'number' ? { topN: limit } : {});
143
+ if (kindFilter) {
144
+ report = { ...report, topResults: report.topResults.filter((r) => r.kind === kindFilter) };
145
+ }
146
+ if (sourceFilter) {
147
+ report = {
148
+ ...report,
149
+ loadedTunings: report.loadedTunings.filter((t) => t.source === sourceFilter || t.packageName === sourceFilter),
150
+ };
151
+ }
152
+ const format = flagString(args, 'format') ?? (flagBool(args, 'json') ? 'json' : 'text');
153
+ if (format === 'json') {
154
+ process.stdout.write(asJson(report) + '\n');
155
+ return 0;
156
+ }
157
+ if (format === 'markdown') {
158
+ process.stdout.write(renderTuningExplainMarkdown(report));
159
+ return 0;
160
+ }
161
+ if (format === 'html') {
162
+ process.stdout.write(renderTuningExplainHtml(report));
163
+ return 0;
164
+ }
165
+ // text default
166
+ process.stdout.write(`Tuning explain for "${report.query}"\n`);
167
+ process.stdout.write(`Tokens: ${report.tokens.join(', ') || '(none)'}\n`);
168
+ process.stdout.write(`Loaded tunings: ${report.loadedTunings.length}\n`);
169
+ for (const t of report.loadedTunings) {
170
+ process.stdout.write(` - ${t.id} (${t.source}${t.packageName ? '/' + t.packageName : ''})\n`);
171
+ }
172
+ if (report.topResults.length > 0) {
173
+ process.stdout.write('Top deltas:\n');
174
+ for (const r of report.topResults) {
175
+ process.stdout.write(` ${r.docId.padEnd(40)} ${r.baselineScore.toString().padStart(6)} → ${r.tunedScore.toString().padStart(6)} (Δ${r.delta})\n`);
176
+ for (const reason of r.reasons.slice(0, 3))
177
+ process.stdout.write(` ${reason}\n`);
178
+ }
179
+ }
180
+ else {
181
+ process.stdout.write('No matching tunings affect the top results.\n');
182
+ }
183
+ return 0;
184
+ }
185
+ const { entries, issues } = await loadSearchTuning(inspection);
186
+ if (sub === 'doctor') {
187
+ if (flagBool(args, 'json')) {
188
+ process.stdout.write(asJson({ entries: entries.length, issues }) + '\n');
189
+ return issues.some((i) => i.severity === 'error') ? 1 : 0;
190
+ }
191
+ process.stdout.write(`Tuning entries: ${entries.length}\n`);
192
+ if (issues.length === 0) {
193
+ process.stdout.write('No issues.\n');
194
+ return 0;
195
+ }
196
+ for (const i of issues) {
197
+ process.stdout.write(` ${i.severity.toUpperCase().padEnd(8)} ${i.code.padEnd(20)} ${i.message}${i.tuningId ? ` (${i.tuningId})` : ''}\n`);
198
+ }
199
+ return issues.some((i) => i.severity === 'error') ? 1 : 0;
200
+ }
201
+ // Default: list.
202
+ if (flagBool(args, 'json')) {
203
+ process.stdout.write(asJson(entries) + '\n');
204
+ return 0;
205
+ }
206
+ process.stdout.write(`Search tuning (${entries.length} entries)\n`);
207
+ for (const e of entries) {
208
+ process.stdout.write(` ${e.id.padEnd(36)} ${e.source}${e.packageName ? ` (${e.packageName})` : ''}\n`);
209
+ }
210
+ return 0;
211
+ },
212
+ };
213
+ void flagString;
214
+ /**
215
+ * Compact text renderer for the default `shrk search` output. Shows
216
+ * up to `topN` items from each non-empty section, then a short "details:
217
+ * pass --verbose" footer. Keeps the universal-search banner + confidence.
218
+ */
219
+ function renderUniversalSearchSummary(report, topN) {
220
+ const lines = [];
221
+ lines.push(`=== shrk search "${report.query}" (summary) ===`);
222
+ lines.push('');
223
+ const best = report.sections.bestActions.slice(0, topN);
224
+ if (best.length > 0) {
225
+ lines.push(`▶ Best actions (top ${best.length})`);
226
+ for (const h of best) {
227
+ const cmd = h.nextCommand ?? h.command ?? h.action ?? '';
228
+ const inline = cmd ? ` → ${cmd}` : '';
229
+ lines.push(` • ${h.title}${inline}`);
230
+ }
231
+ lines.push('');
232
+ }
233
+ const cmds = report.sections.commands.slice(0, topN);
234
+ if (cmds.length > 0) {
235
+ lines.push(`▶ Command matches (top ${cmds.length})`);
236
+ for (const h of cmds) {
237
+ const inline = h.nextCommand ? ` → ${h.nextCommand}` : '';
238
+ lines.push(` • ${h.id} — ${h.title}${inline}`);
239
+ }
240
+ lines.push('');
241
+ }
242
+ const contrib = report.sections.contributions.slice(0, topN);
243
+ if (contrib.length > 0) {
244
+ lines.push(`▶ Pack contributions (top ${contrib.length})`);
245
+ for (const h of contrib)
246
+ lines.push(` • [${h.kind}] ${h.id} — ${h.title}`);
247
+ lines.push('');
248
+ }
249
+ const know = report.sections.knowledge.slice(0, topN);
250
+ if (know.length > 0) {
251
+ lines.push(`▶ Knowledge / docs (top ${know.length})`);
252
+ for (const h of know)
253
+ lines.push(` • ${h.id} — ${h.title}`);
254
+ lines.push('');
255
+ }
256
+ lines.push(`▶ Uncertainty: ${report.uncertainty.confidence.toUpperCase()} (safe fallback: ${report.uncertainty.safeFallbackCommand})`);
257
+ lines.push('');
258
+ lines.push('(text mode is summary-only — pass --verbose / --full for the 7-section bundle, --json for machine output.)');
259
+ return lines.join('\n') + '\n';
260
+ }
261
+ /**
262
+ * Top-level `shrk search-tuning <verb>` alias.
263
+ *
264
+ * Lets users invoke `shrk search-tuning explain "<query>"` without
265
+ * remembering the nested `shrk search tuning explain ...` form. Routes
266
+ * directly through the existing handler to avoid drift.
267
+ */
268
+ export const searchTuningTopLevelCommand = {
269
+ name: 'search-tuning',
270
+ description: 'Alias — `shrk search-tuning <list|doctor|explain>` (delegates to `shrk search tuning ...`).',
271
+ usage: 'shrk search-tuning <list|doctor|explain> [<query>] [--kind <kind>] [--source <source>] [--limit N] [--format text|markdown|html|json]',
272
+ async run(args) {
273
+ return searchTuningListCommand.run(args);
274
+ },
275
+ };
@@ -0,0 +1,7 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const selfConfigDoctorCommand: ICommandHandler;
3
+ export declare const selfConfigGraphCommand: ICommandHandler;
4
+ export declare const selfConfigBrokenLinksCommand: ICommandHandler;
5
+ export declare const selfConfigReportCommand: ICommandHandler;
6
+ export declare const selfConfigCommand: ICommandHandler;
7
+ //# sourceMappingURL=self-config.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-config.command.d.ts","sourceRoot":"","sources":["../../src/commands/self-config.command.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,uBAAuB,EAAE,eAwCrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eA6BpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,eAsB1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAuCrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAc/B,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * `shrk self-config doctor|graph|broken-links|report` — cross-reference
3
+ * walker. Read-only; `report` writes to `.sharkcraft/reports/`.
4
+ */
5
+ import { mkdirSync, writeFileSync } from 'node:fs';
6
+ import * as nodePath from 'node:path';
7
+ import { buildSelfConfigDoctorReport, buildSelfConfigDoctorReportV2, buildSelfConfigGraph, inspectSharkcraft, renderSelfConfigDoctorMarkdown, renderSelfConfigDoctorText, renderSelfConfigDoctorV2Markdown, renderSelfConfigDoctorV2Text, } from '@shrkcrft/inspector';
8
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
9
+ import { asJson } from "../output/format-output.js";
10
+ export const selfConfigDoctorCommand = {
11
+ name: 'doctor',
12
+ description: 'Self-config cross-reference doctor — validates the graph of refs. Defaults to v2 schema; pass --schema v1 for the legacy shape.',
13
+ usage: 'shrk self-config doctor [--schema v1|v2] [--format text|markdown|json] [--strict]',
14
+ async run(args) {
15
+ const cwd = resolveCwd(args);
16
+ const inspection = await inspectSharkcraft({ cwd });
17
+ const strict = flagBool(args, 'strict');
18
+ const format = flagString(args, 'format') ?? 'text';
19
+ const wantJson = flagBool(args, 'json') || format === 'json';
20
+ const schemaArg = flagString(args, 'schema');
21
+ const useV1 = schemaArg === 'v1';
22
+ if (useV1) {
23
+ const report = await buildSelfConfigDoctorReport(inspection);
24
+ if (wantJson) {
25
+ process.stdout.write(asJson(report) + '\n');
26
+ }
27
+ else if (format === 'markdown') {
28
+ process.stdout.write(renderSelfConfigDoctorMarkdown(report));
29
+ }
30
+ else {
31
+ process.stdout.write(renderSelfConfigDoctorText(report));
32
+ }
33
+ if (strict && (report.verdict === 'warnings' || report.verdict === 'errors'))
34
+ return 1;
35
+ return report.verdict === 'errors' ? 1 : 0;
36
+ }
37
+ // Default: v2 graph validation.
38
+ const report = await buildSelfConfigDoctorReportV2(inspection);
39
+ if (wantJson) {
40
+ process.stdout.write(asJson(report) + '\n');
41
+ }
42
+ else if (format === 'markdown') {
43
+ process.stdout.write(renderSelfConfigDoctorV2Markdown(report));
44
+ }
45
+ else {
46
+ process.stdout.write(renderSelfConfigDoctorV2Text(report));
47
+ }
48
+ if (strict && (report.verdict === 'warnings' || report.verdict === 'errors'))
49
+ return 1;
50
+ return report.verdict === 'errors' ? 1 : 0;
51
+ },
52
+ };
53
+ export const selfConfigGraphCommand = {
54
+ name: 'graph',
55
+ description: 'Render the self-config reference graph as JSON or DOT/mermaid.',
56
+ usage: 'shrk self-config graph [--format json|mermaid|dot]',
57
+ async run(args) {
58
+ const cwd = resolveCwd(args);
59
+ const inspection = await inspectSharkcraft({ cwd });
60
+ const graph = await buildSelfConfigGraph(inspection);
61
+ const format = flagString(args, 'format') ?? 'json';
62
+ if (format === 'mermaid') {
63
+ const lines = ['graph TD'];
64
+ for (const e of graph.edges) {
65
+ lines.push(` ${e.from.kind}_${e.from.id} --> ${e.to.kind}_${e.to.id}`);
66
+ }
67
+ process.stdout.write(lines.join('\n') + '\n');
68
+ return 0;
69
+ }
70
+ if (format === 'dot') {
71
+ const lines = ['digraph G {'];
72
+ for (const e of graph.edges) {
73
+ lines.push(` "${e.from.kind}/${e.from.id}" -> "${e.to.kind}/${e.to.id}";`);
74
+ }
75
+ lines.push('}');
76
+ process.stdout.write(lines.join('\n') + '\n');
77
+ return 0;
78
+ }
79
+ process.stdout.write(asJson(graph) + '\n');
80
+ return 0;
81
+ },
82
+ };
83
+ export const selfConfigBrokenLinksCommand = {
84
+ name: 'broken-links',
85
+ description: 'List only the broken (unresolved) references.',
86
+ usage: 'shrk self-config broken-links [--json]',
87
+ async run(args) {
88
+ const cwd = resolveCwd(args);
89
+ const inspection = await inspectSharkcraft({ cwd });
90
+ const graph = await buildSelfConfigGraph(inspection);
91
+ if (flagBool(args, 'json')) {
92
+ process.stdout.write(asJson({ brokenEdges: graph.brokenEdges }) + '\n');
93
+ return graph.brokenEdges.length === 0 ? 0 : 1;
94
+ }
95
+ if (graph.brokenEdges.length === 0) {
96
+ process.stdout.write('No broken references. ✓\n');
97
+ return 0;
98
+ }
99
+ process.stdout.write(`=== Broken self-config references (${graph.brokenEdges.length}) ===\n`);
100
+ for (const e of graph.brokenEdges.slice(0, 100)) {
101
+ process.stdout.write(` • ${e.from.kind}:${e.from.id} -> ${e.to.kind}:${e.to.id}\n`);
102
+ }
103
+ return 1;
104
+ },
105
+ };
106
+ export const selfConfigReportCommand = {
107
+ name: 'report',
108
+ description: 'Write the self-config doctor + graph reports under .sharkcraft/reports/.',
109
+ usage: 'shrk self-config report [--output <dir>]',
110
+ async run(args) {
111
+ const cwd = resolveCwd(args);
112
+ const inspection = await inspectSharkcraft({ cwd });
113
+ const schemaArg = flagString(args, 'schema');
114
+ const useV1 = schemaArg === 'v1';
115
+ const graph = await buildSelfConfigGraph(inspection);
116
+ const outArg = flagString(args, 'output');
117
+ const outDir = outArg
118
+ ? (nodePath.isAbsolute(outArg) ? outArg : nodePath.resolve(cwd, outArg))
119
+ : nodePath.join(cwd, '.sharkcraft', 'reports');
120
+ mkdirSync(outDir, { recursive: true });
121
+ const base = 'self-config-doctor';
122
+ if (useV1) {
123
+ const report = await buildSelfConfigDoctorReport(inspection);
124
+ writeFileSync(nodePath.join(outDir, `${base}.json`), JSON.stringify(report, null, 2) + '\n', 'utf8');
125
+ writeFileSync(nodePath.join(outDir, `${base}.md`), renderSelfConfigDoctorMarkdown(report), 'utf8');
126
+ writeFileSync(nodePath.join(outDir, `${base}-graph.json`), JSON.stringify(graph, null, 2) + '\n', 'utf8');
127
+ process.stdout.write(`Wrote ${nodePath.relative(cwd, outDir)}/${base}.{json,md} (v1) and ${base}-graph.json\n`);
128
+ return report.verdict === 'errors' ? 1 : 0;
129
+ }
130
+ const report = await buildSelfConfigDoctorReportV2(inspection);
131
+ writeFileSync(nodePath.join(outDir, `${base}.json`), JSON.stringify(report, null, 2) + '\n', 'utf8');
132
+ writeFileSync(nodePath.join(outDir, `${base}.md`), renderSelfConfigDoctorV2Markdown(report), 'utf8');
133
+ writeFileSync(nodePath.join(outDir, `${base}-graph.json`), JSON.stringify(graph, null, 2) + '\n', 'utf8');
134
+ process.stdout.write(`Wrote ${nodePath.relative(cwd, outDir)}/${base}.{json,md} (v2) and ${base}-graph.json\n`);
135
+ return report.verdict === 'errors' ? 1 : 0;
136
+ },
137
+ };
138
+ export const selfConfigCommand = {
139
+ name: 'self-config',
140
+ description: 'Cross-reference doctor over SharkCraft self-config + pack contributions.',
141
+ usage: 'shrk self-config doctor|graph|broken-links|report ...',
142
+ async run(args) {
143
+ const sub = args.positional[0];
144
+ args.positional = args.positional.slice(1);
145
+ if (sub === 'doctor')
146
+ return selfConfigDoctorCommand.run(args);
147
+ if (sub === 'graph')
148
+ return selfConfigGraphCommand.run(args);
149
+ if (sub === 'broken-links')
150
+ return selfConfigBrokenLinksCommand.run(args);
151
+ if (sub === 'report')
152
+ return selfConfigReportCommand.run(args);
153
+ process.stderr.write('Usage: shrk self-config doctor|graph|broken-links|report ...\n');
154
+ return 2;
155
+ },
156
+ };
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const selfAuditCommand: ICommandHandler;
3
+ //# sourceMappingURL=self.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self.command.d.ts","sourceRoot":"","sources":["../../src/commands/self.command.ts"],"names":[],"mappings":"AAYA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AA0EhC,eAAO,MAAM,gBAAgB,EAAE,eAiE9B,CAAC"}
@@ -0,0 +1,117 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
3
+ import * as nodePath from 'node:path';
4
+ import { buildSelfAudit, detectSharkcraftRepo, inspectSharkcraft, buildReleaseReadiness, buildDocsCheck, buildExamplesCheck, renderSelfAuditText, } from '@shrkcrft/inspector';
5
+ import { flagBool, flagNumber, resolveCwd, } from "../command-registry.js";
6
+ import { asJson } from "../output/format-output.js";
7
+ function tail(s, n = 12) {
8
+ return s.split(/\r?\n/).slice(-n).join('\n');
9
+ }
10
+ function runCheck(input) {
11
+ try {
12
+ const result = spawnSync(input.bin, input.args, {
13
+ cwd: input.cwd,
14
+ env: { ...process.env, NO_COLOR: '1' },
15
+ encoding: 'utf8',
16
+ timeout: input.timeoutMs,
17
+ stdio: 'pipe',
18
+ });
19
+ const exit = result.status ?? null;
20
+ return {
21
+ ok: exit === 0,
22
+ exitCode: exit,
23
+ stdoutTail: tail(result.stdout ?? ''),
24
+ stderrTail: tail(result.stderr ?? ''),
25
+ };
26
+ }
27
+ catch (e) {
28
+ return { ok: false, exitCode: null, stdoutTail: '', stderrTail: e.message };
29
+ }
30
+ }
31
+ async function runInternalChecks(cwd, cliEntry, timeoutMs) {
32
+ const durations = {};
33
+ const cycle = (id, args) => {
34
+ const start = Date.now();
35
+ const r = runCheck({ bin: 'bun', args: [cliEntry, ...args], cwd, timeoutMs });
36
+ durations[id] = Date.now() - start;
37
+ return r;
38
+ };
39
+ const commandsDoctor = cycle('commands-doctor', ['commands', 'doctor']);
40
+ const runtimeDoctor = cycle('runtime-doctor', ['runtime', 'doctor']);
41
+ const safetyAudit = cycle('safety-audit', ['safety', 'audit']);
42
+ const packsDoctor = cycle('packs-doctor', ['packs', 'doctor', '--release']);
43
+ const demoValidate = cycle('demo-validate', ['demo', 'package', '--validate', '--scenario', 'pr-review']);
44
+ return {
45
+ commandsDoctorOk: commandsDoctor.ok,
46
+ runtimeDoctorOk: runtimeDoctor.ok,
47
+ safetyAuditOk: safetyAudit.ok,
48
+ packsDoctorOk: packsDoctor.ok,
49
+ demoPackageValidateOk: demoValidate.ok,
50
+ perCheckDurations: durations,
51
+ };
52
+ }
53
+ export const selfAuditCommand = {
54
+ name: 'audit',
55
+ description: 'Run the SharkCraft self-dogfood audit (only meaningful inside the SharkCraft repo). Read-only.',
56
+ usage: 'shrk self audit [--json] [--report] [--run] [--timeout-ms <n>]',
57
+ async run(args) {
58
+ const cwd = resolveCwd(args);
59
+ const isRepo = detectSharkcraftRepo(cwd);
60
+ if (!isRepo) {
61
+ const report = buildSelfAudit(cwd);
62
+ if (flagBool(args, 'json'))
63
+ process.stdout.write(asJson(report) + '\n');
64
+ else
65
+ process.stdout.write(renderSelfAuditText(report));
66
+ return 0;
67
+ }
68
+ const inspection = await inspectSharkcraft({ cwd });
69
+ const readiness = await buildReleaseReadiness(inspection, {
70
+ includeDocsCheck: true,
71
+ includeExamplesCheck: true,
72
+ });
73
+ const docsCheck = buildDocsCheck(cwd);
74
+ const examplesCheck = buildExamplesCheck(cwd);
75
+ let extra = null;
76
+ let cliEntry = nodePath.join(cwd, 'packages', 'cli', 'src', 'main.ts');
77
+ if (!existsSync(cliEntry))
78
+ cliEntry = 'shrk';
79
+ if (flagBool(args, 'run')) {
80
+ const timeoutMs = flagNumber(args, 'timeout-ms') ?? 90_000;
81
+ extra = await runInternalChecks(cwd, cliEntry, timeoutMs);
82
+ }
83
+ const report = buildSelfAudit(cwd, {
84
+ releaseReadinessReady: readiness.ready,
85
+ releaseReadinessBlockers: readiness.blockers.length,
86
+ releaseReadinessWarnings: readiness.warnings.length,
87
+ mcpAuditWriteToolCount: 0,
88
+ docsCheckOk: docsCheck.ok,
89
+ examplesCheckOk: examplesCheck.ok,
90
+ ...(extra
91
+ ? {
92
+ commandsDoctorErrors: extra.commandsDoctorOk ? 0 : 1,
93
+ runtimeDoctorOk: extra.runtimeDoctorOk,
94
+ packsDoctorOk: extra.packsDoctorOk,
95
+ demoPackageValidateOk: extra.demoPackageValidateOk,
96
+ }
97
+ : {}),
98
+ });
99
+ if (flagBool(args, 'report')) {
100
+ const outDir = nodePath.join(cwd, '.sharkcraft', 'reports');
101
+ mkdirSync(outDir, { recursive: true });
102
+ writeFileSync(nodePath.join(outDir, 'self-audit.json'), JSON.stringify({ ...report, extra }, null, 2) + '\n', 'utf8');
103
+ }
104
+ if (flagBool(args, 'json')) {
105
+ process.stdout.write(asJson({ ...report, extra }) + '\n');
106
+ return report.ok ? 0 : 1;
107
+ }
108
+ process.stdout.write(renderSelfAuditText(report));
109
+ if (extra) {
110
+ process.stdout.write('\nRan internal checks:\n');
111
+ for (const [k, v] of Object.entries(extra.perCheckDurations)) {
112
+ process.stdout.write(` ${k.padEnd(24)} ${v}ms\n`);
113
+ }
114
+ }
115
+ return report.ok ? 0 : 1;
116
+ },
117
+ };
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const simulateCommand: ICommandHandler;
3
+ //# sourceMappingURL=simulate.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate.command.d.ts","sourceRoot":"","sources":["../../src/commands/simulate.command.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,eAAe,EAAE,eAmD7B,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import * as nodePath from 'node:path';
3
+ import { inspectSharkcraft, OrchestrationMode, renderWorkflowSimulationText, simulateWorkflow, } from '@shrkcrft/inspector';
4
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
5
+ import { asJson } from "../output/format-output.js";
6
+ export const simulateCommand = {
7
+ name: 'simulate',
8
+ description: 'Predict what a workflow would do without executing anything. Read-only. Optionally takes a playbook or pipeline id.',
9
+ usage: 'shrk simulate "<task>" [--playbook <id>] [--pipeline <id>] [--bundle] [--mode conservative|balanced|aggressive] [--json] [--output <file>]',
10
+ async run(args) {
11
+ const task = args.positional.join(' ').trim();
12
+ if (!task) {
13
+ process.stderr.write('Usage: shrk simulate "<task>"\n');
14
+ return 2;
15
+ }
16
+ const cwd = resolveCwd(args);
17
+ const inspection = await inspectSharkcraft({ cwd });
18
+ const playbookId = flagString(args, 'playbook');
19
+ const pipelineId = flagString(args, 'pipeline');
20
+ const modeRaw = (flagString(args, 'mode') ?? '').toLowerCase();
21
+ const mode = modeRaw === 'conservative'
22
+ ? OrchestrationMode.Conservative
23
+ : modeRaw === 'aggressive'
24
+ ? OrchestrationMode.Aggressive
25
+ : OrchestrationMode.Balanced;
26
+ const sim = await simulateWorkflow(task, inspection, {
27
+ ...(playbookId ? { playbookId } : {}),
28
+ ...(pipelineId ? { pipelineId } : {}),
29
+ mode,
30
+ });
31
+ const output = flagString(args, 'output');
32
+ if (flagBool(args, 'json')) {
33
+ const body = asJson(sim) + '\n';
34
+ if (output) {
35
+ const abs = nodePath.isAbsolute(output) ? output : nodePath.resolve(cwd, output);
36
+ mkdirSync(nodePath.dirname(abs), { recursive: true });
37
+ writeFileSync(abs, body, 'utf8');
38
+ process.stdout.write(`Wrote ${abs}\n`);
39
+ return 0;
40
+ }
41
+ process.stdout.write(body);
42
+ return 0;
43
+ }
44
+ if (output) {
45
+ const abs = nodePath.isAbsolute(output) ? output : nodePath.resolve(cwd, output);
46
+ mkdirSync(nodePath.dirname(abs), { recursive: true });
47
+ writeFileSync(abs, renderWorkflowSimulationText(sim), 'utf8');
48
+ process.stdout.write(`Wrote ${abs}\n`);
49
+ return 0;
50
+ }
51
+ process.stdout.write(renderWorkflowSimulationText(sim));
52
+ return 0;
53
+ },
54
+ };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * `shrk spec` surface.
3
+ *
4
+ * - `spec create "<title>"` — ground a new spec under .sharkcraft/specs/.
5
+ * - `spec review <id>` — structural + cross-registry validation.
6
+ * - `spec implement <id>` — compose proposedTemplates into a signed plan.
7
+ * - `spec verify <id>` — run trusted verification commands + checks.
8
+ * - `spec list` — list every spec.
9
+ * - `spec show <id>` — print spec contents.
10
+ * - `spec status <id>` — read/transition status.
11
+ * - `spec lint <id>` — fast structural-only lint.
12
+ *
13
+ * Preview-first everywhere. `--write` / `--apply` opt-in.
14
+ */
15
+ import { SPEC_LIST_SCHEMA } from '@shrkcrft/inspector';
16
+ import { type ICommandHandler } from '../command-registry.js';
17
+ export declare const SPEC_IMPLEMENT_SCHEMA = "sharkcraft.spec-implement/v1";
18
+ export declare const SPEC_VERIFICATION_SCHEMA = "sharkcraft.spec-verification/v1";
19
+ export declare const specCreateCommand: ICommandHandler;
20
+ export declare const specReviewCommand: ICommandHandler;
21
+ export declare const specLintCommand: ICommandHandler;
22
+ export declare const specListCommand: ICommandHandler;
23
+ export declare const specShowCommand: ICommandHandler;
24
+ export declare const specStatusCommand: ICommandHandler;
25
+ export declare const specImplementCommand: ICommandHandler;
26
+ export declare const specVerifyCommand: ICommandHandler;
27
+ export declare const specParentCommand: ICommandHandler;
28
+ export { SPEC_LIST_SCHEMA };
29
+ //# sourceMappingURL=spec.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.command.d.ts","sourceRoot":"","sources":["../../src/commands/spec.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0CH,OAAO,EASL,gBAAgB,EAIjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAShC,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AACpE,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAY1E,eAAO,MAAM,iBAAiB,EAAE,eA2K/B,CAAC;AAcF,eAAO,MAAM,iBAAiB,EAAE,eAiE/B,CAAC;AAqBF,eAAO,MAAM,eAAe,EAAE,eAmC7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eA8B7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eA2C7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAoE/B,CAAC;AASF,eAAO,MAAM,oBAAoB,EAAE,eAsRlC,CAAC;AAyDF,eAAO,MAAM,iBAAiB,EAAE,eAsL/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eA4B/B,CAAC;AAkBF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}