@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,117 @@
1
+ import { buildSafetyAudit, buildSafetyAuditDeep, inspectSharkcraft, } from '@shrkcrft/inspector';
2
+ import { flagBool, resolveCwd, } from "../command-registry.js";
3
+ import { asJson, header, kv } from "../output/format-output.js";
4
+ import { COMMAND_CATALOG } from "./command-catalog.js";
5
+ const PLAN_SECRET_ENV = 'SHARKCRAFT_PLAN_SECRET';
6
+ export const safetyCommand = {
7
+ name: 'safety',
8
+ description: 'Audit the SharkCraft safety model: which commands write source, which run shell, MCP read-only invariant, pack signature status, plan-signing status. Read-only.',
9
+ usage: 'shrk safety audit [--json]',
10
+ async run(args) {
11
+ const sub = args.positional[0];
12
+ if (sub !== 'audit') {
13
+ process.stderr.write('Usage: shrk safety audit [--json]\n');
14
+ return 2;
15
+ }
16
+ const cwd = resolveCwd(args);
17
+ const inspection = await inspectSharkcraft({ cwd });
18
+ // Lazy-load the MCP tool list to avoid a static import dependency.
19
+ const mcpToolList = await listMcpTools();
20
+ const report = buildSafetyAudit({
21
+ inspection,
22
+ catalog: COMMAND_CATALOG,
23
+ mcpTools: mcpToolList,
24
+ planSecretEnv: PLAN_SECRET_ENV,
25
+ planSecretConfigured: typeof process.env[PLAN_SECRET_ENV] === 'string',
26
+ });
27
+ let deep = null;
28
+ if (flagBool(args, 'deep')) {
29
+ deep = await buildSafetyAuditDeep(inspection);
30
+ }
31
+ if (flagBool(args, 'json')) {
32
+ const merged = deep ? { ...report, deep } : report;
33
+ process.stdout.write(asJson(merged) + '\n');
34
+ const failed = report.mcp.anyWritable || (deep ? !deep.passed : false);
35
+ return failed ? 1 : 0;
36
+ }
37
+ printSafetyAudit(report);
38
+ if (deep) {
39
+ process.stdout.write('\n=== Deep audit ===\n');
40
+ process.stdout.write(` passed: ${deep.passed ? 'yes' : 'no'}\n`);
41
+ process.stdout.write(` info-only findings: ${deep.infoOnlyFindings}\n`);
42
+ process.stdout.write(` report-site external JS: ${deep.reportSiteExternalJs.length}\n`);
43
+ process.stdout.write(` demo destructive lines: ${deep.demoDestructiveLines.length}\n`);
44
+ process.stdout.write(` CI workflows scanned: ${deep.ciGeneratedWorkflowPermissions.length}\n`);
45
+ // Dev-signed packs surface as a top-level deep-audit line so it
46
+ // doesn't get lost in the per-check list.
47
+ if (deep.devSignedPacks && deep.devSignedPacks.length > 0) {
48
+ process.stdout.write(` dev-signed packs: ${deep.devSignedPacks.length}\n`);
49
+ for (const p of deep.devSignedPacks) {
50
+ process.stdout.write(` • ${p.packageName}@${p.packageVersion}${p.signedAt ? ` (signed-at ${p.signedAt})` : ''}\n`);
51
+ }
52
+ // Dev-signed pack findings are info-level by design. The
53
+ // deep-audit verdict ignores them; release readiness is enforced
54
+ // elsewhere. Spell that out so `passed: yes` next to a non-empty
55
+ // dev-signed list stops reading contradictory.
56
+ process.stdout.write('\n Dev-signed packs are info-level findings — the deep-audit verdict ignores them.\n' +
57
+ ' Release readiness is gated by `shrk packs signature-status --release-readiness`.\n');
58
+ }
59
+ if (deep.checks.length > 0) {
60
+ process.stdout.write(' checks:\n');
61
+ for (const c of deep.checks)
62
+ process.stdout.write(` [${c.severity}] ${c.id} — ${c.message}\n`);
63
+ }
64
+ }
65
+ const failed = report.mcp.anyWritable || (deep ? !deep.passed : false);
66
+ return failed ? 1 : 0;
67
+ },
68
+ };
69
+ async function listMcpTools() {
70
+ try {
71
+ const mod = (await import('@shrkcrft/mcp-server'));
72
+ return [...(mod.ALL_TOOLS ?? [])].map((t) => ({ name: t.name, description: t.description }));
73
+ }
74
+ catch {
75
+ return [];
76
+ }
77
+ }
78
+ function printSafetyAudit(r) {
79
+ process.stdout.write(header('SharkCraft safety audit'));
80
+ process.stdout.write(kv('MCP tools', String(r.mcp.tools.length)) + '\n');
81
+ process.stdout.write(kv('MCP writable', r.mcp.anyWritable ? 'YES — INVARIANT VIOLATED' : 'no (read-only ✓)') + '\n');
82
+ process.stdout.write(kv('packs', String(r.packs.discovered)) + '\n');
83
+ process.stdout.write(kv('pack signatures', `verified=${r.packs.signedAndVerified} not-checked=${r.packs.signedNotVerified} unsigned=${r.packs.unsigned} invalid=${r.packs.invalid}`) + '\n');
84
+ process.stdout.write(kv('plan signing', r.planSigning.secretConfigured
85
+ ? `${r.planSigning.secretEnv} configured`
86
+ : `${r.planSigning.secretEnv} not set`) + '\n');
87
+ process.stdout.write('\nCommand safety by level:\n');
88
+ process.stdout.write(` read-only: ${r.commands.readOnly.length}\n`);
89
+ process.stdout.write(` writes-session: ${r.commands.writesSession.length}\n`);
90
+ process.stdout.write(` writes-drafts: ${r.commands.writesDrafts.length}\n`);
91
+ process.stdout.write(` writes-source: ${r.commands.writesSource.length}\n`);
92
+ process.stdout.write(` runs-shell: ${r.commands.runsShell.length}\n`);
93
+ if (r.commands.writesSource.length > 0) {
94
+ process.stdout.write('\nCommands that write source (require human approval):\n');
95
+ for (const c of r.commands.writesSource) {
96
+ process.stdout.write(` • ${c.command.padEnd(34)} ${c.description}\n`);
97
+ }
98
+ }
99
+ if (r.verifications.untrusted.length > 0) {
100
+ process.stdout.write('\nLocal verification commands NOT marked trusted:\n');
101
+ for (const v of r.verifications.untrusted) {
102
+ process.stdout.write(` • ${v.id.padEnd(20)} ${v.command}\n`);
103
+ }
104
+ }
105
+ if (r.verifications.pack.length > 0) {
106
+ process.stdout.write('\nPack-contributed verification commands (NOT auto-run):\n');
107
+ for (const v of r.verifications.pack) {
108
+ process.stdout.write(` • ${v.id.padEnd(20)} (${v.packPackageName ?? '?'})\n`);
109
+ }
110
+ }
111
+ if (r.recommendations.length > 0) {
112
+ process.stdout.write('\nRecommendations:\n');
113
+ for (const rec of r.recommendations)
114
+ process.stdout.write(` • ${rec}\n`);
115
+ }
116
+ process.stdout.write(`\nVerdict: ${r.mcp.anyWritable ? 'MCP INVARIANT VIOLATED' : 'safety model intact ✓'}\n`);
117
+ }
@@ -0,0 +1,5 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const scaffoldsListCommand: ICommandHandler;
3
+ export declare const scaffoldsGetCommand: ICommandHandler;
4
+ export declare const scaffoldsDoctorCommand: ICommandHandler;
5
+ //# sourceMappingURL=scaffolds.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffolds.command.d.ts","sourceRoot":"","sources":["../../src/commands/scaffolds.command.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,oBAAoB,EAAE,eA0ClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAmCjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAwCpC,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { doctorScaffoldPatterns, inspectSharkcraft, loadScaffoldPatternsFromInspection, } from '@shrkcrft/inspector';
2
+ import { flagBool, resolveCwd, } from "../command-registry.js";
3
+ import { asJson, header, kv } from "../output/format-output.js";
4
+ export const scaffoldsListCommand = {
5
+ name: 'list',
6
+ description: 'List every scaffold pattern contributed by an installed pack.',
7
+ usage: 'shrk scaffolds list [--json]',
8
+ async run(args) {
9
+ const cwd = resolveCwd(args);
10
+ const inspection = await inspectSharkcraft({ cwd });
11
+ const result = await loadScaffoldPatternsFromInspection(inspection);
12
+ if (flagBool(args, 'json')) {
13
+ process.stdout.write(asJson({
14
+ patterns: result.patterns.map((p) => ({
15
+ id: p.pattern.id,
16
+ title: p.pattern.title,
17
+ templateId: p.pattern.templateId,
18
+ confidence: p.pattern.confidence,
19
+ matchPaths: p.pattern.matchPaths,
20
+ appliesWhen: p.pattern.appliesWhen,
21
+ source: p.source,
22
+ })),
23
+ warnings: result.warnings,
24
+ }) + '\n');
25
+ return 0;
26
+ }
27
+ process.stdout.write(header(`Scaffold patterns (${result.patterns.length})`));
28
+ for (const p of result.patterns) {
29
+ process.stdout.write(` • ${p.pattern.id.padEnd(36)} ${p.pattern.confidence.padEnd(7)} → ${p.pattern.templateId}\n`);
30
+ process.stdout.write(` ${p.pattern.title}\n`);
31
+ process.stdout.write(` source: ${p.source.packageName ?? p.source.type}\n`);
32
+ }
33
+ if (result.warnings.length > 0) {
34
+ process.stdout.write('\nWarnings:\n');
35
+ for (const w of result.warnings)
36
+ process.stdout.write(` ! ${w}\n`);
37
+ }
38
+ if (result.patterns.length === 0) {
39
+ process.stdout.write('\nNo scaffold patterns found. Packs can contribute them via `scaffoldPatternFiles`.\n');
40
+ }
41
+ return 0;
42
+ },
43
+ };
44
+ export const scaffoldsGetCommand = {
45
+ name: 'get',
46
+ description: 'Show one scaffold pattern (full content).',
47
+ usage: 'shrk scaffolds get <id> [--json]',
48
+ async run(args) {
49
+ const id = args.positional[0];
50
+ if (!id) {
51
+ process.stderr.write('Usage: shrk scaffolds get <id>\n');
52
+ return 2;
53
+ }
54
+ const cwd = resolveCwd(args);
55
+ const inspection = await inspectSharkcraft({ cwd });
56
+ const result = await loadScaffoldPatternsFromInspection(inspection);
57
+ const match = result.patterns.find((p) => p.pattern.id === id);
58
+ if (!match) {
59
+ process.stderr.write(`Unknown scaffold pattern: "${id}"\n`);
60
+ return 1;
61
+ }
62
+ if (flagBool(args, 'json')) {
63
+ process.stdout.write(asJson(match) + '\n');
64
+ return 0;
65
+ }
66
+ process.stdout.write(header(`Scaffold pattern: ${match.pattern.id}`));
67
+ process.stdout.write(kv('title', match.pattern.title) + '\n');
68
+ process.stdout.write(kv('templateId', match.pattern.templateId) + '\n');
69
+ process.stdout.write(kv('confidence', match.pattern.confidence) + '\n');
70
+ process.stdout.write(kv('source', match.source.packageName ?? match.source.type) + '\n');
71
+ process.stdout.write(`\nMatch paths:\n`);
72
+ for (const m of match.pattern.matchPaths)
73
+ process.stdout.write(` - ${m}\n`);
74
+ process.stdout.write(`\nApplies when:\n`);
75
+ for (const a of match.pattern.appliesWhen)
76
+ process.stdout.write(` - ${a}\n`);
77
+ process.stdout.write(`\nVariables:\n`);
78
+ for (const v of match.pattern.variables)
79
+ process.stdout.write(` • ${v.name} from=${String(v.from)}\n`);
80
+ return 0;
81
+ },
82
+ };
83
+ export const scaffoldsDoctorCommand = {
84
+ name: 'doctor',
85
+ description: 'Validate scaffold pattern definitions (templates exist, strategies recognized, …).',
86
+ usage: 'shrk scaffolds doctor [--json]',
87
+ async run(args) {
88
+ const cwd = resolveCwd(args);
89
+ const inspection = await inspectSharkcraft({ cwd });
90
+ const result = await loadScaffoldPatternsFromInspection(inspection);
91
+ const issues = doctorScaffoldPatterns(result.patterns, inspection);
92
+ const errorCount = issues.filter((i) => i.severity === 'error').length;
93
+ const warningCount = issues.filter((i) => i.severity === 'warning').length;
94
+ if (flagBool(args, 'json')) {
95
+ process.stdout.write(asJson({
96
+ patterns: result.patterns.length,
97
+ errors: errorCount,
98
+ warnings: warningCount,
99
+ issues,
100
+ loadWarnings: result.warnings,
101
+ }) + '\n');
102
+ return errorCount > 0 ? 1 : 0;
103
+ }
104
+ process.stdout.write(header('Scaffold pattern doctor'));
105
+ process.stdout.write(kv('patterns', result.patterns.length.toString()) + '\n');
106
+ process.stdout.write(kv('errors', errorCount.toString()) + '\n');
107
+ process.stdout.write(kv('warnings', warningCount.toString()) + '\n');
108
+ if (issues.length > 0) {
109
+ process.stdout.write('\nIssues:\n');
110
+ for (const i of issues) {
111
+ const tag = i.severity === 'error' ? 'ERR ' : i.severity === 'warning' ? 'WARN' : 'INFO';
112
+ process.stdout.write(` ${tag} ${i.patternId.padEnd(28)} ${i.field.padEnd(20)} ${i.message}\n`);
113
+ }
114
+ }
115
+ if (result.warnings.length > 0) {
116
+ process.stdout.write('\nLoad warnings:\n');
117
+ for (const w of result.warnings)
118
+ process.stdout.write(` ! ${w}\n`);
119
+ }
120
+ return errorCount > 0 ? 1 : 0;
121
+ },
122
+ };
@@ -0,0 +1,21 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const schemasListCommand: ICommandHandler;
3
+ export declare const schemasGetCommand: ICommandHandler;
4
+ export declare const schemasInventoryCommand: ICommandHandler;
5
+ export declare const schemasWriteCommand: ICommandHandler;
6
+ /**
7
+ * On-disk schema emission with preview-first / drift-check semantics.
8
+ *
9
+ * Default: dry-run preview lists files that would change.
10
+ * `--write`: writes every schema as `<name>.schema.json` plus an
11
+ * `INDEX.md` enumerating the set.
12
+ * `--check`: exits non-zero if `<out>` is missing files, has extra
13
+ * files, or any file differs from the in-memory schema.
14
+ * Used by `release:preflight`.
15
+ *
16
+ * `--out` defaults to `docs/schemas/` so agents can grep `docs/` for
17
+ * schema ids.
18
+ */
19
+ export declare const SCHEMAS_EMIT_SCHEMA = "sharkcraft.schemas-emit/v1";
20
+ export declare const schemasEmitCommand: ICommandHandler;
21
+ //# sourceMappingURL=schemas.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.command.d.ts","sourceRoot":"","sources":["../../src/commands/schemas.command.ts"],"names":[],"mappings":"AASA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,kBAAkB,EAAE,eAgBhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAoB/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAuDrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eA4BjC,CAAC;AAEF;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAqEhE,eAAO,MAAM,kBAAkB,EAAE,eAmHhC,CAAC"}
@@ -0,0 +1,296 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
2
+ import { join, relative } from 'node:path';
3
+ import { buildSchemaInventory, findSchemaInventoryEntry, renderSchemaInventoryMarkdown, renderSchemaInventoryText, } from '@shrkcrft/inspector';
4
+ import { ALL_SCHEMAS } from "../schemas/json-schemas.js";
5
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
6
+ import { asJson, header } from "../output/format-output.js";
7
+ export const schemasListCommand = {
8
+ name: 'list',
9
+ description: 'List available JSON schemas.',
10
+ usage: 'shrk schemas list [--json]',
11
+ run(args) {
12
+ const names = Object.keys(ALL_SCHEMAS).sort();
13
+ if (flagBool(args, 'json')) {
14
+ process.stdout.write(asJson({ schemas: names }) + '\n');
15
+ return 0;
16
+ }
17
+ process.stdout.write(header(`JSON schemas (${names.length})`));
18
+ for (const n of names)
19
+ process.stdout.write(` ${n}\n`);
20
+ process.stdout.write('\nGet one with: `shrk schemas get <name>`\n');
21
+ process.stdout.write('Write them all with: `shrk schemas write --dir ./schemas`\n');
22
+ return 0;
23
+ },
24
+ };
25
+ export const schemasGetCommand = {
26
+ name: 'get',
27
+ description: 'Print one JSON schema.',
28
+ usage: 'shrk schemas get <name>',
29
+ run(args) {
30
+ const name = args.positional[0];
31
+ if (!name) {
32
+ process.stderr.write('Usage: shrk schemas get <name>\n');
33
+ return 2;
34
+ }
35
+ const schema = ALL_SCHEMAS[name];
36
+ if (!schema) {
37
+ process.stderr.write(`Unknown schema "${name}". Available: ${Object.keys(ALL_SCHEMAS).join(', ')}\n`);
38
+ return 1;
39
+ }
40
+ process.stdout.write(JSON.stringify(schema, null, 2) + '\n');
41
+ return 0;
42
+ },
43
+ };
44
+ export const schemasInventoryCommand = {
45
+ name: 'inventory',
46
+ description: 'Inventory of engine schema ids: known versions, current version, deprecation/back-compat status.',
47
+ usage: 'shrk schemas inventory [<schema-id>] [--format text|markdown|json] [--multi-version-only]',
48
+ run(args) {
49
+ const id = args.positional[0];
50
+ const report = buildSchemaInventory();
51
+ const format = flagString(args, 'format') ?? (flagBool(args, 'json') ? 'json' : 'text');
52
+ const multiOnly = flagBool(args, 'multi-version-only');
53
+ if (id) {
54
+ const entry = findSchemaInventoryEntry(id);
55
+ if (!entry) {
56
+ process.stderr.write(`Unknown schema id "${id}". Try \`shrk schemas inventory\` to list known ids.\n`);
57
+ return 1;
58
+ }
59
+ if (format === 'json') {
60
+ process.stdout.write(asJson(entry) + '\n');
61
+ return 0;
62
+ }
63
+ process.stdout.write(header(entry.id));
64
+ process.stdout.write(` current: ${entry.currentVersion}\n`);
65
+ process.stdout.write(` summary: ${entry.summary}\n`);
66
+ if (entry.emittedBy)
67
+ process.stdout.write(` emitted by: ${entry.emittedBy}\n`);
68
+ if (entry.docs)
69
+ process.stdout.write(` docs: ${entry.docs}\n`);
70
+ process.stdout.write(' versions:\n');
71
+ for (const v of entry.versions) {
72
+ process.stdout.write(` ${v.version.padEnd(6)} ${v.status}${v.note ? ` — ${v.note}` : ''}\n`);
73
+ }
74
+ return 0;
75
+ }
76
+ const filtered = multiOnly
77
+ ? {
78
+ ...report,
79
+ entries: report.entries.filter((e) => e.versions.length > 1),
80
+ }
81
+ : report;
82
+ if (format === 'json') {
83
+ process.stdout.write(asJson(filtered) + '\n');
84
+ return 0;
85
+ }
86
+ if (format === 'markdown') {
87
+ process.stdout.write(renderSchemaInventoryMarkdown(filtered));
88
+ return 0;
89
+ }
90
+ process.stdout.write(renderSchemaInventoryText(filtered));
91
+ return 0;
92
+ },
93
+ };
94
+ export const schemasWriteCommand = {
95
+ name: 'write',
96
+ description: 'Write all JSON schemas to <dir>. Prefer `schemas emit --write --out <dir>` for preview-first emission.',
97
+ usage: 'shrk schemas write --dir <output-dir>',
98
+ run(args) {
99
+ const dir = flagString(args, 'dir');
100
+ if (!dir) {
101
+ process.stderr.write('Usage: shrk schemas write --dir <output-dir>\n');
102
+ return 2;
103
+ }
104
+ const cwd = resolveCwd(args);
105
+ const absolute = dir.startsWith('/') ? dir : join(cwd, dir);
106
+ if (!existsSync(absolute))
107
+ mkdirSync(absolute, { recursive: true });
108
+ const written = [];
109
+ for (const [name, schema] of Object.entries(ALL_SCHEMAS)) {
110
+ const filename = `${name}.schema.json`;
111
+ const target = join(absolute, filename);
112
+ writeFileSync(target, JSON.stringify(schema, null, 2) + '\n', 'utf8');
113
+ written.push(target);
114
+ }
115
+ if (flagBool(args, 'json')) {
116
+ process.stdout.write(asJson({ written }) + '\n');
117
+ return 0;
118
+ }
119
+ process.stdout.write(`Wrote ${written.length} schemas:\n`);
120
+ for (const w of written)
121
+ process.stdout.write(` ${w}\n`);
122
+ return 0;
123
+ },
124
+ };
125
+ /**
126
+ * On-disk schema emission with preview-first / drift-check semantics.
127
+ *
128
+ * Default: dry-run preview lists files that would change.
129
+ * `--write`: writes every schema as `<name>.schema.json` plus an
130
+ * `INDEX.md` enumerating the set.
131
+ * `--check`: exits non-zero if `<out>` is missing files, has extra
132
+ * files, or any file differs from the in-memory schema.
133
+ * Used by `release:preflight`.
134
+ *
135
+ * `--out` defaults to `docs/schemas/` so agents can grep `docs/` for
136
+ * schema ids.
137
+ */
138
+ export const SCHEMAS_EMIT_SCHEMA = 'sharkcraft.schemas-emit/v1';
139
+ function computeEmitPlan(absOut) {
140
+ const expected = {};
141
+ for (const [name, schema] of Object.entries(ALL_SCHEMAS)) {
142
+ expected[`${name}.schema.json`] = JSON.stringify(schema, null, 2) + '\n';
143
+ }
144
+ expected['INDEX.md'] = renderSchemasIndexMarkdown(Object.keys(ALL_SCHEMAS));
145
+ const diffs = [];
146
+ const onDisk = existsSync(absOut)
147
+ ? readdirSync(absOut).filter((f) => f.endsWith('.schema.json') || f === 'INDEX.md')
148
+ : [];
149
+ const expectedSet = new Set(Object.keys(expected));
150
+ for (const [file, content] of Object.entries(expected)) {
151
+ const abs = join(absOut, file);
152
+ if (!existsSync(abs)) {
153
+ diffs.push({ file, status: 'missing-on-disk' });
154
+ continue;
155
+ }
156
+ const existing = readFileSync(abs, 'utf8');
157
+ diffs.push({ file, status: existing === content ? 'unchanged' : 'changed' });
158
+ }
159
+ for (const file of onDisk) {
160
+ if (!expectedSet.has(file)) {
161
+ diffs.push({ file, status: 'unexpected-on-disk' });
162
+ }
163
+ }
164
+ return { expected, diffs };
165
+ }
166
+ function renderSchemasIndexMarkdown(names) {
167
+ const sorted = [...names].sort();
168
+ const lines = [];
169
+ lines.push('# JSON schemas');
170
+ lines.push('');
171
+ lines.push('This directory is auto-generated by `shrk schemas emit --write`. Do not edit by hand.');
172
+ lines.push('');
173
+ lines.push(`Total: **${sorted.length}** schemas.`);
174
+ lines.push('');
175
+ lines.push('| Schema | File | Source command |');
176
+ lines.push('| ------ | ---- | -------------- |');
177
+ for (const name of sorted) {
178
+ lines.push(`| \`${name}\` | [\`${name}.schema.json\`](${name}.schema.json) | \`shrk schemas get ${name}\` |`);
179
+ }
180
+ lines.push('');
181
+ lines.push('## Re-emit');
182
+ lines.push('');
183
+ lines.push('```bash');
184
+ lines.push('shrk schemas emit --write');
185
+ lines.push('```');
186
+ lines.push('');
187
+ lines.push('`release:preflight` runs `shrk schemas emit --check` and fails when this directory drifts from the in-memory registry.');
188
+ lines.push('');
189
+ return lines.join('\n');
190
+ }
191
+ export const schemasEmitCommand = {
192
+ name: 'emit',
193
+ description: 'Emit every JSON schema to disk (default docs/schemas/) with an INDEX.md. Preview-first — pass --write to apply, --check to fail on drift.',
194
+ usage: 'shrk schemas emit [--out <dir>] [--write|--check] [--json]',
195
+ run(args) {
196
+ const cwd = resolveCwd(args);
197
+ const out = flagString(args, 'out') ?? 'docs/schemas';
198
+ const absOut = out.startsWith('/') ? out : join(cwd, out);
199
+ const wantJson = flagBool(args, 'json');
200
+ const doWrite = flagBool(args, 'write');
201
+ const doCheck = flagBool(args, 'check');
202
+ if (doWrite && doCheck) {
203
+ process.stderr.write('--write and --check are mutually exclusive.\n');
204
+ return 2;
205
+ }
206
+ const { expected, diffs } = computeEmitPlan(absOut);
207
+ const drifted = diffs.filter((d) => d.status !== 'unchanged');
208
+ if (doCheck) {
209
+ if (wantJson) {
210
+ process.stdout.write(asJson({
211
+ schema: SCHEMAS_EMIT_SCHEMA,
212
+ mode: 'check',
213
+ out: relative(cwd, absOut),
214
+ drifted: drifted.length,
215
+ diffs,
216
+ }) + '\n');
217
+ }
218
+ else {
219
+ process.stdout.write(header(`schemas emit --check (${relative(cwd, absOut)})`));
220
+ process.stdout.write(` expected: ${Object.keys(expected).length} files\n`);
221
+ process.stdout.write(` drifted: ${drifted.length}\n\n`);
222
+ if (drifted.length > 0) {
223
+ for (const d of drifted)
224
+ process.stdout.write(` • ${d.status.padEnd(22)} ${d.file}\n`);
225
+ process.stdout.write('\nRun `shrk schemas emit --write` to refresh.\n');
226
+ }
227
+ else {
228
+ process.stdout.write('docs/schemas/ matches the in-memory registry.\n');
229
+ }
230
+ }
231
+ return drifted.length === 0 ? 0 : 1;
232
+ }
233
+ if (doWrite) {
234
+ mkdirSync(absOut, { recursive: true });
235
+ for (const [file, content] of Object.entries(expected)) {
236
+ writeFileSync(join(absOut, file), content, 'utf8');
237
+ }
238
+ // Sweep unexpected files (e.g. a removed schema) so the directory
239
+ // mirrors the registry exactly.
240
+ for (const d of diffs) {
241
+ if (d.status === 'unexpected-on-disk') {
242
+ // Don't delete by default — log instead, so the human can decide.
243
+ // Preserves the safety contract (no destructive ops without
244
+ // explicit user intent).
245
+ }
246
+ }
247
+ if (wantJson) {
248
+ process.stdout.write(asJson({
249
+ schema: SCHEMAS_EMIT_SCHEMA,
250
+ mode: 'write',
251
+ out: relative(cwd, absOut),
252
+ written: Object.keys(expected),
253
+ unexpected: diffs.filter((d) => d.status === 'unexpected-on-disk').map((d) => d.file),
254
+ }) + '\n');
255
+ }
256
+ else {
257
+ process.stdout.write(header(`schemas emit --write (${relative(cwd, absOut)})`));
258
+ process.stdout.write(` wrote: ${Object.keys(expected).length} files\n`);
259
+ const unexpected = diffs.filter((d) => d.status === 'unexpected-on-disk');
260
+ if (unexpected.length > 0) {
261
+ process.stdout.write(` unexpected: ${unexpected.length} (left in place)\n`);
262
+ for (const d of unexpected)
263
+ process.stdout.write(` • ${d.file}\n`);
264
+ process.stdout.write(' → remove unexpected files manually if they came from a deleted schema.\n');
265
+ }
266
+ }
267
+ return 0;
268
+ }
269
+ // Default: preview.
270
+ if (wantJson) {
271
+ process.stdout.write(asJson({
272
+ schema: SCHEMAS_EMIT_SCHEMA,
273
+ mode: 'preview',
274
+ out: relative(cwd, absOut),
275
+ expected: Object.keys(expected),
276
+ drifted: drifted.length,
277
+ diffs,
278
+ }) + '\n');
279
+ return 0;
280
+ }
281
+ process.stdout.write(header(`schemas emit preview (${relative(cwd, absOut)})`));
282
+ process.stdout.write(` expected: ${Object.keys(expected).length} files\n`);
283
+ process.stdout.write(` drifted: ${drifted.length}\n`);
284
+ if (drifted.length > 0) {
285
+ process.stdout.write('\n diffs:\n');
286
+ for (const d of drifted.slice(0, 20)) {
287
+ process.stdout.write(` • ${d.status.padEnd(22)} ${d.file}\n`);
288
+ }
289
+ if (drifted.length > 20) {
290
+ process.stdout.write(` … and ${drifted.length - 20} more\n`);
291
+ }
292
+ }
293
+ process.stdout.write('\n(preview only — pass --write to apply, --check to fail on drift)\n');
294
+ return 0;
295
+ },
296
+ };
@@ -0,0 +1,12 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const searchCommand: ICommandHandler;
3
+ export declare const searchTuningListCommand: ICommandHandler;
4
+ /**
5
+ * Top-level `shrk search-tuning <verb>` alias.
6
+ *
7
+ * Lets users invoke `shrk search-tuning explain "<query>"` without
8
+ * remembering the nested `shrk search tuning explain ...` form. Routes
9
+ * directly through the existing handler to avoid drift.
10
+ */
11
+ export declare const searchTuningTopLevelCommand: ICommandHandler;
12
+ //# sourceMappingURL=search.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.command.d.ts","sourceRoot":"","sources":["../../src/commands/search.command.ts"],"names":[],"mappings":"AAgBA,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AA0BhC,eAAO,MAAM,aAAa,EAAE,eAuG3B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eA+FrC,CAAC;AAwEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,eASzC,CAAC"}