@shrkcrft/cli 0.1.0-alpha.29 → 0.1.0-alpha.31

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 (510) hide show
  1. package/dist/asset-preview/apply-asset-preview.js +1 -1
  2. package/dist/authoring/authoring-kit.d.ts +9 -1
  3. package/dist/authoring/authoring-kit.d.ts.map +1 -1
  4. package/dist/authoring/authoring-kit.js +26 -13
  5. package/dist/bootstrap/unlinked-workspace-dependency.d.ts +11 -0
  6. package/dist/bootstrap/unlinked-workspace-dependency.d.ts.map +1 -0
  7. package/dist/bootstrap/unlinked-workspace-dependency.js +99 -0
  8. package/dist/command-registry.d.ts +100 -1
  9. package/dist/command-registry.d.ts.map +1 -1
  10. package/dist/command-registry.js +130 -3
  11. package/dist/commands/api-diff.command.d.ts.map +1 -1
  12. package/dist/commands/api-diff.command.js +12 -0
  13. package/dist/commands/apply.command.d.ts.map +1 -1
  14. package/dist/commands/apply.command.js +3 -0
  15. package/dist/commands/arch.command.d.ts.map +1 -1
  16. package/dist/commands/arch.command.js +26 -7
  17. package/dist/commands/architecture.command.d.ts.map +1 -1
  18. package/dist/commands/architecture.command.js +8 -2
  19. package/dist/commands/baseline.command.d.ts +76 -0
  20. package/dist/commands/baseline.command.d.ts.map +1 -1
  21. package/dist/commands/baseline.command.js +599 -75
  22. package/dist/commands/biome.command.d.ts.map +1 -1
  23. package/dist/commands/biome.command.js +20 -0
  24. package/dist/commands/boundaries.command.d.ts +9 -1
  25. package/dist/commands/boundaries.command.d.ts.map +1 -1
  26. package/dist/commands/boundaries.command.js +88 -20
  27. package/dist/commands/bundle.command.d.ts.map +1 -1
  28. package/dist/commands/bundle.command.js +57 -11
  29. package/dist/commands/cache-align.command.d.ts.map +1 -1
  30. package/dist/commands/cache-align.command.js +3 -1
  31. package/dist/commands/changelog-data.d.ts.map +1 -1
  32. package/dist/commands/changelog-data.js +164 -0
  33. package/dist/commands/changes.command.d.ts.map +1 -1
  34. package/dist/commands/changes.command.js +15 -0
  35. package/dist/commands/check.command.d.ts.map +1 -1
  36. package/dist/commands/check.command.js +1260 -324
  37. package/dist/commands/checks.command.d.ts.map +1 -1
  38. package/dist/commands/checks.command.js +188 -40
  39. package/dist/commands/ci.command.d.ts.map +1 -1
  40. package/dist/commands/ci.command.js +35 -2
  41. package/dist/commands/code-intel.command.d.ts.map +1 -1
  42. package/dist/commands/code-intel.command.js +8 -1
  43. package/dist/commands/command-catalog.d.ts +23 -1
  44. package/dist/commands/command-catalog.d.ts.map +1 -1
  45. package/dist/commands/command-catalog.js +152 -35
  46. package/dist/commands/commands.command.d.ts +21 -3
  47. package/dist/commands/commands.command.d.ts.map +1 -1
  48. package/dist/commands/commands.command.js +172 -27
  49. package/dist/commands/compress.command.d.ts.map +1 -1
  50. package/dist/commands/compress.command.js +4 -0
  51. package/dist/commands/constructs.command.d.ts.map +1 -1
  52. package/dist/commands/constructs.command.js +50 -12
  53. package/dist/commands/context.command.d.ts.map +1 -1
  54. package/dist/commands/context.command.js +40 -5
  55. package/dist/commands/contract-templates.command.d.ts.map +1 -1
  56. package/dist/commands/contract-templates.command.js +9 -1
  57. package/dist/commands/contract.command.d.ts.map +1 -1
  58. package/dist/commands/contract.command.js +35 -0
  59. package/dist/commands/conventions.command.d.ts.map +1 -1
  60. package/dist/commands/conventions.command.js +189 -29
  61. package/dist/commands/coverage.command.d.ts.map +1 -1
  62. package/dist/commands/coverage.command.js +9 -0
  63. package/dist/commands/daily.commands.d.ts +0 -1
  64. package/dist/commands/daily.commands.d.ts.map +1 -1
  65. package/dist/commands/daily.commands.js +12 -76
  66. package/dist/commands/dashboard.command.d.ts.map +1 -1
  67. package/dist/commands/dashboard.command.js +10 -0
  68. package/dist/commands/dev.command.d.ts.map +1 -1
  69. package/dist/commands/dev.command.js +45 -2
  70. package/dist/commands/diagnostics.command.d.ts +0 -2
  71. package/dist/commands/diagnostics.command.d.ts.map +1 -1
  72. package/dist/commands/diagnostics.command.js +5 -78
  73. package/dist/commands/diff-check.command.d.ts +6 -4
  74. package/dist/commands/diff-check.command.d.ts.map +1 -1
  75. package/dist/commands/diff-check.command.js +190 -103
  76. package/dist/commands/docs-references.command.d.ts +20 -0
  77. package/dist/commands/docs-references.command.d.ts.map +1 -0
  78. package/dist/commands/docs-references.command.js +520 -0
  79. package/dist/commands/doctor.command.d.ts.map +1 -1
  80. package/dist/commands/doctor.command.js +60 -5
  81. package/dist/commands/drift.command.d.ts.map +1 -1
  82. package/dist/commands/drift.command.js +17 -4
  83. package/dist/commands/eslint.command.d.ts.map +1 -1
  84. package/dist/commands/eslint.command.js +20 -0
  85. package/dist/commands/export.command.d.ts.map +1 -1
  86. package/dist/commands/export.command.js +23 -1
  87. package/dist/commands/feedback-dispatch.command.d.ts.map +1 -1
  88. package/dist/commands/feedback-dispatch.command.js +29 -0
  89. package/dist/commands/feedback.command.d.ts.map +1 -1
  90. package/dist/commands/feedback.command.js +6 -1
  91. package/dist/commands/finish.command.d.ts.map +1 -1
  92. package/dist/commands/finish.command.js +32 -8
  93. package/dist/commands/fix.command.d.ts.map +1 -1
  94. package/dist/commands/fix.command.js +19 -0
  95. package/dist/commands/gate.command.d.ts +6 -1
  96. package/dist/commands/gate.command.d.ts.map +1 -1
  97. package/dist/commands/gate.command.js +50 -124
  98. package/dist/commands/gates.command.d.ts +54 -0
  99. package/dist/commands/gates.command.d.ts.map +1 -1
  100. package/dist/commands/gates.command.js +1314 -64
  101. package/dist/commands/gen.command.d.ts.map +1 -1
  102. package/dist/commands/gen.command.js +4 -0
  103. package/dist/commands/generated.command.d.ts +62 -0
  104. package/dist/commands/generated.command.d.ts.map +1 -1
  105. package/dist/commands/generated.command.js +639 -156
  106. package/dist/commands/graph-code-subverbs.d.ts +15 -0
  107. package/dist/commands/graph-code-subverbs.d.ts.map +1 -1
  108. package/dist/commands/graph-code-subverbs.js +203 -25
  109. package/dist/commands/graph.command.d.ts.map +1 -1
  110. package/dist/commands/graph.command.js +79 -37
  111. package/dist/commands/help.command.d.ts +30 -6
  112. package/dist/commands/help.command.d.ts.map +1 -1
  113. package/dist/commands/help.command.js +323 -199
  114. package/dist/commands/helper.command.d.ts +1 -0
  115. package/dist/commands/helper.command.d.ts.map +1 -1
  116. package/dist/commands/helper.command.js +195 -56
  117. package/dist/commands/impact.command.d.ts.map +1 -1
  118. package/dist/commands/impact.command.js +115 -12
  119. package/dist/commands/infer.command.d.ts.map +1 -1
  120. package/dist/commands/infer.command.js +20 -45
  121. package/dist/commands/ingest.command.d.ts +0 -1
  122. package/dist/commands/ingest.command.d.ts.map +1 -1
  123. package/dist/commands/ingest.command.js +25 -41
  124. package/dist/commands/knowledge-author.command.d.ts +0 -3
  125. package/dist/commands/knowledge-author.command.d.ts.map +1 -1
  126. package/dist/commands/knowledge-author.command.js +10 -23
  127. package/dist/commands/knowledge.command.d.ts.map +1 -1
  128. package/dist/commands/knowledge.command.js +469 -129
  129. package/dist/commands/languages.command.d.ts.map +1 -1
  130. package/dist/commands/languages.command.js +27 -0
  131. package/dist/commands/lint.command.d.ts.map +1 -1
  132. package/dist/commands/lint.command.js +3 -0
  133. package/dist/commands/mcp.command.d.ts +18 -0
  134. package/dist/commands/mcp.command.d.ts.map +1 -1
  135. package/dist/commands/mcp.command.js +33 -8
  136. package/dist/commands/onboard.command.d.ts.map +1 -1
  137. package/dist/commands/onboard.command.js +20 -0
  138. package/dist/commands/owners.command.d.ts.map +1 -1
  139. package/dist/commands/owners.command.js +14 -2
  140. package/dist/commands/packs-new.d.ts +13 -1
  141. package/dist/commands/packs-new.d.ts.map +1 -1
  142. package/dist/commands/packs-new.js +500 -335
  143. package/dist/commands/packs.command.d.ts.map +1 -1
  144. package/dist/commands/packs.command.js +378 -36
  145. package/dist/commands/paths.command.d.ts.map +1 -1
  146. package/dist/commands/paths.command.js +9 -1
  147. package/dist/commands/pipelines.command.d.ts.map +1 -1
  148. package/dist/commands/pipelines.command.js +7 -1
  149. package/dist/commands/plan-check.command.d.ts.map +1 -1
  150. package/dist/commands/plan-check.command.js +3 -0
  151. package/dist/commands/plan.command.d.ts.map +1 -1
  152. package/dist/commands/plan.command.js +3 -0
  153. package/dist/commands/playbooks.command.d.ts.map +1 -1
  154. package/dist/commands/playbooks.command.js +7 -2
  155. package/dist/commands/policy-lint.command.d.ts +19 -2
  156. package/dist/commands/policy-lint.command.d.ts.map +1 -1
  157. package/dist/commands/policy-lint.command.js +224 -65
  158. package/dist/commands/policy.command.d.ts.map +1 -1
  159. package/dist/commands/policy.command.js +6 -1
  160. package/dist/commands/pr.command.d.ts.map +1 -1
  161. package/dist/commands/pr.command.js +14 -0
  162. package/dist/commands/presets.command.d.ts.map +1 -1
  163. package/dist/commands/presets.command.js +12 -27
  164. package/dist/commands/profiles.command.d.ts.map +1 -1
  165. package/dist/commands/profiles.command.js +94 -26
  166. package/dist/commands/provenance.command.js +1 -1
  167. package/dist/commands/quality.command.d.ts.map +1 -1
  168. package/dist/commands/quality.command.js +129 -33
  169. package/dist/commands/recommend.command.d.ts +20 -4
  170. package/dist/commands/recommend.command.d.ts.map +1 -1
  171. package/dist/commands/recommend.command.js +172 -278
  172. package/dist/commands/registrations.command.d.ts.map +1 -1
  173. package/dist/commands/registrations.command.js +138 -13
  174. package/dist/commands/registry-lifecycle-run.d.ts +14 -0
  175. package/dist/commands/registry-lifecycle-run.d.ts.map +1 -0
  176. package/dist/commands/registry-lifecycle-run.js +336 -0
  177. package/dist/commands/registry.command.d.ts.map +1 -1
  178. package/dist/commands/registry.command.js +235 -62
  179. package/dist/commands/release.command.d.ts.map +1 -1
  180. package/dist/commands/release.command.js +99 -20
  181. package/dist/commands/report.command.d.ts.map +1 -1
  182. package/dist/commands/report.command.js +38 -2
  183. package/dist/commands/reuse-coverage.command.d.ts +23 -0
  184. package/dist/commands/reuse-coverage.command.d.ts.map +1 -0
  185. package/dist/commands/reuse-coverage.command.js +536 -0
  186. package/dist/commands/reuse.command.d.ts +3 -18
  187. package/dist/commands/reuse.command.d.ts.map +1 -1
  188. package/dist/commands/reuse.command.js +395 -244
  189. package/dist/commands/review.command.d.ts.map +1 -1
  190. package/dist/commands/review.command.js +33 -1
  191. package/dist/commands/rounds.command.d.ts.map +1 -1
  192. package/dist/commands/rounds.command.js +5 -0
  193. package/dist/commands/safety.command.d.ts.map +1 -1
  194. package/dist/commands/safety.command.js +9 -0
  195. package/dist/commands/scaffolds.command.d.ts.map +1 -1
  196. package/dist/commands/scaffolds.command.js +97 -25
  197. package/dist/commands/search.command.d.ts +0 -8
  198. package/dist/commands/search.command.d.ts.map +1 -1
  199. package/dist/commands/search.command.js +136 -28
  200. package/dist/commands/self-config-xrefs.command.d.ts +24 -0
  201. package/dist/commands/self-config-xrefs.command.d.ts.map +1 -0
  202. package/dist/commands/self-config-xrefs.command.js +170 -0
  203. package/dist/commands/self-config.command.d.ts.map +1 -1
  204. package/dist/commands/self-config.command.js +261 -65
  205. package/dist/commands/smart-context.command.d.ts.map +1 -1
  206. package/dist/commands/smart-context.command.js +39 -3
  207. package/dist/commands/spec.command.d.ts.map +1 -1
  208. package/dist/commands/spec.command.js +3 -0
  209. package/dist/commands/stats.command.d.ts.map +1 -1
  210. package/dist/commands/stats.command.js +3 -0
  211. package/dist/commands/surface.command.d.ts +6 -1
  212. package/dist/commands/surface.command.d.ts.map +1 -1
  213. package/dist/commands/surface.command.js +256 -54
  214. package/dist/commands/task-context.command.js +1 -1
  215. package/dist/commands/task.command.d.ts.map +1 -1
  216. package/dist/commands/task.command.js +22 -1
  217. package/dist/commands/templates.command.d.ts +4 -0
  218. package/dist/commands/templates.command.d.ts.map +1 -1
  219. package/dist/commands/templates.command.js +109 -22
  220. package/dist/commands/test.command.d.ts.map +1 -1
  221. package/dist/commands/test.command.js +161 -33
  222. package/dist/commands/tests.command.d.ts.map +1 -1
  223. package/dist/commands/tests.command.js +29 -3
  224. package/dist/commands/trace.command.d.ts.map +1 -1
  225. package/dist/commands/trace.command.js +29 -4
  226. package/dist/commands/watch.command.d.ts.map +1 -1
  227. package/dist/commands/watch.command.js +3 -0
  228. package/dist/commands/why.command.d.ts.map +1 -1
  229. package/dist/commands/why.command.js +3 -0
  230. package/dist/commands/wiring.command.d.ts +18 -4
  231. package/dist/commands/wiring.command.d.ts.map +1 -1
  232. package/dist/commands/wiring.command.js +362 -74
  233. package/dist/dashboard/code-intelligence-data.js +4 -4
  234. package/dist/diff/deleted-orphan-coverage.d.ts +32 -0
  235. package/dist/diff/deleted-orphan-coverage.d.ts.map +1 -0
  236. package/dist/diff/deleted-orphan-coverage.js +107 -0
  237. package/dist/diff/deleted-orphan-scope-notes.d.ts +23 -0
  238. package/dist/diff/deleted-orphan-scope-notes.d.ts.map +1 -0
  239. package/dist/diff/deleted-orphan-scope-notes.js +49 -0
  240. package/dist/diff/deleted-orphans.d.ts +32 -0
  241. package/dist/diff/deleted-orphans.d.ts.map +1 -1
  242. package/dist/diff/deleted-orphans.js +42 -2
  243. package/dist/dispatch/closest-match.d.ts +15 -0
  244. package/dist/dispatch/closest-match.d.ts.map +1 -0
  245. package/dist/dispatch/closest-match.js +47 -0
  246. package/dist/dispatch/global-flags.d.ts +94 -0
  247. package/dist/dispatch/global-flags.d.ts.map +1 -0
  248. package/dist/dispatch/global-flags.js +123 -0
  249. package/dist/dispatch/guard-invocation-input.d.ts +24 -0
  250. package/dist/dispatch/guard-invocation-input.d.ts.map +1 -0
  251. package/dist/dispatch/guard-invocation-input.js +1 -0
  252. package/dist/dispatch/guard-invocation.d.ts +33 -0
  253. package/dist/dispatch/guard-invocation.d.ts.map +1 -0
  254. package/dist/dispatch/guard-invocation.js +183 -0
  255. package/dist/dispatch/help-intercept.d.ts +22 -0
  256. package/dist/dispatch/help-intercept.d.ts.map +1 -0
  257. package/dist/dispatch/help-intercept.js +42 -0
  258. package/dist/dispatch/i-declared-invocation.d.ts +17 -0
  259. package/dist/dispatch/i-declared-invocation.d.ts.map +1 -0
  260. package/dist/dispatch/i-declared-invocation.js +1 -0
  261. package/dist/dispatch/i-unknown-flag-refusal-input.d.ts +28 -0
  262. package/dist/dispatch/i-unknown-flag-refusal-input.d.ts.map +1 -0
  263. package/dist/dispatch/i-unknown-flag-refusal-input.js +1 -0
  264. package/dist/dispatch/invocation-rejection-kind.d.ts +15 -0
  265. package/dist/dispatch/invocation-rejection-kind.d.ts.map +1 -0
  266. package/dist/dispatch/invocation-rejection-kind.js +15 -0
  267. package/dist/dispatch/invocation-rejection.d.ts +18 -0
  268. package/dist/dispatch/invocation-rejection.d.ts.map +1 -0
  269. package/dist/dispatch/invocation-rejection.js +1 -0
  270. package/dist/dispatch/judge-invocation.d.ts +24 -0
  271. package/dist/dispatch/judge-invocation.d.ts.map +1 -0
  272. package/dist/dispatch/judge-invocation.js +50 -0
  273. package/dist/dispatch/positional-mode.d.ts +18 -0
  274. package/dist/dispatch/positional-mode.d.ts.map +1 -0
  275. package/dist/dispatch/positional-mode.js +18 -0
  276. package/dist/dispatch/read-tracking-map.d.ts +28 -0
  277. package/dist/dispatch/read-tracking-map.d.ts.map +1 -0
  278. package/dist/dispatch/read-tracking-map.js +58 -0
  279. package/dist/dispatch/refuse-sibling-valve-flags.d.ts +30 -0
  280. package/dist/dispatch/refuse-sibling-valve-flags.d.ts.map +1 -0
  281. package/dist/dispatch/refuse-sibling-valve-flags.js +65 -0
  282. package/dist/dispatch/subverb-spec.d.ts +26 -0
  283. package/dist/dispatch/subverb-spec.d.ts.map +1 -0
  284. package/dist/dispatch/subverb-spec.js +1 -0
  285. package/dist/dispatch/undocumented-flag-reads.d.ts +22 -0
  286. package/dist/dispatch/undocumented-flag-reads.d.ts.map +1 -0
  287. package/dist/dispatch/undocumented-flag-reads.js +283 -0
  288. package/dist/dispatch/unknown-flag-refusal-mode.d.ts +13 -0
  289. package/dist/dispatch/unknown-flag-refusal-mode.d.ts.map +1 -0
  290. package/dist/dispatch/unknown-flag-refusal-mode.js +13 -0
  291. package/dist/dispatch/unknown-flag-refusal.d.ts +22 -0
  292. package/dist/dispatch/unknown-flag-refusal.d.ts.map +1 -0
  293. package/dist/dispatch/unknown-flag-refusal.js +57 -0
  294. package/dist/dispatch/unread-flags.d.ts +152 -0
  295. package/dist/dispatch/unread-flags.d.ts.map +1 -0
  296. package/dist/dispatch/unread-flags.js +295 -0
  297. package/dist/dispatch/verdict-valve-flag.d.ts +21 -0
  298. package/dist/dispatch/verdict-valve-flag.d.ts.map +1 -0
  299. package/dist/dispatch/verdict-valve-flag.js +21 -0
  300. package/dist/dispatch/walk-declared-subverbs.d.ts +14 -0
  301. package/dist/dispatch/walk-declared-subverbs.d.ts.map +1 -0
  302. package/dist/dispatch/walk-declared-subverbs.js +28 -0
  303. package/dist/exit-codes.d.ts +41 -3
  304. package/dist/exit-codes.d.ts.map +1 -1
  305. package/dist/exit-codes.js +153 -14
  306. package/dist/finish/run-finish.d.ts +72 -5
  307. package/dist/finish/run-finish.d.ts.map +1 -1
  308. package/dist/finish/run-finish.js +453 -104
  309. package/dist/gates/accepted-empty-note.d.ts +10 -0
  310. package/dist/gates/accepted-empty-note.d.ts.map +1 -0
  311. package/dist/gates/accepted-empty-note.js +11 -0
  312. package/dist/gates/allow-empty.d.ts +25 -0
  313. package/dist/gates/allow-empty.d.ts.map +1 -0
  314. package/dist/gates/allow-empty.js +27 -0
  315. package/dist/gates/asset-doctor-failing-units.d.ts +16 -0
  316. package/dist/gates/asset-doctor-failing-units.d.ts.map +1 -0
  317. package/dist/gates/asset-doctor-failing-units.js +14 -0
  318. package/dist/gates/asset-doctor-failure-line.d.ts +16 -0
  319. package/dist/gates/asset-doctor-failure-line.d.ts.map +1 -0
  320. package/dist/gates/asset-doctor-failure-line.js +28 -0
  321. package/dist/gates/empty-rule-advice-lines.d.ts +15 -0
  322. package/dist/gates/empty-rule-advice-lines.d.ts.map +1 -0
  323. package/dist/gates/empty-rule-advice-lines.js +20 -0
  324. package/dist/gates/gate-envelope.d.ts +85 -8
  325. package/dist/gates/gate-envelope.d.ts.map +1 -1
  326. package/dist/gates/gate-envelope.js +56 -7
  327. package/dist/gates/gate-rule-globs.d.ts +67 -0
  328. package/dist/gates/gate-rule-globs.d.ts.map +1 -0
  329. package/dist/gates/gate-rule-globs.js +139 -0
  330. package/dist/gates/gate-rule-view.d.ts +25 -6
  331. package/dist/gates/gate-rule-view.d.ts.map +1 -1
  332. package/dist/gates/gate-rule-view.js +105 -77
  333. package/dist/gates/i-coverage-dead-glob.d.ts +19 -0
  334. package/dist/gates/i-coverage-dead-glob.d.ts.map +1 -0
  335. package/dist/gates/i-coverage-dead-glob.js +1 -0
  336. package/dist/gates/i-coverage-negation.d.ts +13 -0
  337. package/dist/gates/i-coverage-negation.d.ts.map +1 -0
  338. package/dist/gates/i-coverage-negation.js +1 -0
  339. package/dist/gates/i-registration-query-settle-input.d.ts +18 -0
  340. package/dist/gates/i-registration-query-settle-input.d.ts.map +1 -0
  341. package/dist/gates/i-registration-query-settle-input.js +1 -0
  342. package/dist/gates/i-unit-state-note-row.d.ts +16 -0
  343. package/dist/gates/i-unit-state-note-row.d.ts.map +1 -0
  344. package/dist/gates/i-unit-state-note-row.js +1 -0
  345. package/dist/gates/i-unit-state-notes.d.ts +32 -0
  346. package/dist/gates/i-unit-state-notes.d.ts.map +1 -0
  347. package/dist/gates/i-unit-state-notes.js +1 -0
  348. package/dist/gates/incomplete-registry-inventory.d.ts +19 -0
  349. package/dist/gates/incomplete-registry-inventory.d.ts.map +1 -0
  350. package/dist/gates/incomplete-registry-inventory.js +63 -0
  351. package/dist/gates/measure-registration-roles.d.ts +10 -0
  352. package/dist/gates/measure-registration-roles.d.ts.map +1 -0
  353. package/dist/gates/measure-registration-roles.js +9 -0
  354. package/dist/gates/plane-verdict.d.ts +14 -0
  355. package/dist/gates/plane-verdict.d.ts.map +1 -0
  356. package/dist/gates/plane-verdict.js +22 -0
  357. package/dist/gates/qualify-clean-for-units.d.ts +12 -0
  358. package/dist/gates/qualify-clean-for-units.d.ts.map +1 -0
  359. package/dist/gates/qualify-clean-for-units.js +18 -0
  360. package/dist/gates/registration-graph-verdict.d.ts +34 -0
  361. package/dist/gates/registration-graph-verdict.d.ts.map +1 -0
  362. package/dist/gates/registration-graph-verdict.js +70 -0
  363. package/dist/gates/registration-roles.d.ts +9 -0
  364. package/dist/gates/registration-roles.d.ts.map +1 -0
  365. package/dist/gates/registration-roles.js +1 -0
  366. package/dist/gates/registry-liveness.d.ts +11 -0
  367. package/dist/gates/registry-liveness.d.ts.map +1 -0
  368. package/dist/gates/registry-liveness.js +13 -0
  369. package/dist/gates/rule-coverage.d.ts +225 -4
  370. package/dist/gates/rule-coverage.d.ts.map +1 -1
  371. package/dist/gates/rule-coverage.js +610 -43
  372. package/dist/gates/run-gate-planes.d.ts +58 -0
  373. package/dist/gates/run-gate-planes.d.ts.map +1 -0
  374. package/dist/gates/run-gate-planes.js +403 -0
  375. package/dist/gates/scaffold-selftest.d.ts +56 -0
  376. package/dist/gates/scaffold-selftest.d.ts.map +1 -0
  377. package/dist/gates/scaffold-selftest.js +119 -0
  378. package/dist/gates/seam-rejected-rules.d.ts +28 -0
  379. package/dist/gates/seam-rejected-rules.d.ts.map +1 -0
  380. package/dist/gates/seam-rejected-rules.js +95 -0
  381. package/dist/gates/self-test-check.d.ts +29 -0
  382. package/dist/gates/self-test-check.d.ts.map +1 -0
  383. package/dist/gates/self-test-check.js +1 -0
  384. package/dist/gates/self-test-subject.d.ts +28 -0
  385. package/dist/gates/self-test-subject.d.ts.map +1 -0
  386. package/dist/gates/self-test-subject.js +1 -0
  387. package/dist/gates/self-test.d.ts +20 -0
  388. package/dist/gates/self-test.d.ts.map +1 -0
  389. package/dist/gates/self-test.js +82 -0
  390. package/dist/gates/settle-verdict.d.ts +14 -0
  391. package/dist/gates/settle-verdict.d.ts.map +1 -0
  392. package/dist/gates/settle-verdict.js +13 -0
  393. package/dist/gates/settled-verdict.d.ts +8 -0
  394. package/dist/gates/settled-verdict.d.ts.map +1 -0
  395. package/dist/gates/settled-verdict.js +1 -0
  396. package/dist/gates/template-registry-coverage.d.ts +18 -0
  397. package/dist/gates/template-registry-coverage.d.ts.map +1 -0
  398. package/dist/gates/template-registry-coverage.js +24 -0
  399. package/dist/gates/unit-state-notes.d.ts +40 -0
  400. package/dist/gates/unit-state-notes.d.ts.map +1 -0
  401. package/dist/gates/unit-state-notes.js +71 -0
  402. package/dist/gates/verdict-line.d.ts +18 -0
  403. package/dist/gates/verdict-line.d.ts.map +1 -0
  404. package/dist/gates/verdict-line.js +40 -0
  405. package/dist/graph/graph-reuse-lookup.d.ts +10 -0
  406. package/dist/graph/graph-reuse-lookup.d.ts.map +1 -0
  407. package/dist/graph/graph-reuse-lookup.js +41 -0
  408. package/dist/graph/index-behind-hint.d.ts +11 -0
  409. package/dist/graph/index-behind-hint.d.ts.map +1 -0
  410. package/dist/graph/index-behind-hint.js +27 -0
  411. package/dist/knowledge/knowledge-stale-gate-flags.d.ts +3 -0
  412. package/dist/knowledge/knowledge-stale-gate-flags.d.ts.map +1 -0
  413. package/dist/knowledge/knowledge-stale-gate-flags.js +1 -0
  414. package/dist/knowledge/knowledge-stale-gate-input.d.ts +3 -0
  415. package/dist/knowledge/knowledge-stale-gate-input.d.ts.map +1 -0
  416. package/dist/knowledge/knowledge-stale-gate-input.js +1 -0
  417. package/dist/knowledge/knowledge-stale-gate-result.d.ts +3 -0
  418. package/dist/knowledge/knowledge-stale-gate-result.d.ts.map +1 -0
  419. package/dist/knowledge/knowledge-stale-gate-result.js +1 -0
  420. package/dist/knowledge/knowledge-stale-gate.d.ts +10 -0
  421. package/dist/knowledge/knowledge-stale-gate.d.ts.map +1 -0
  422. package/dist/knowledge/knowledge-stale-gate.js +9 -0
  423. package/dist/main.d.ts.map +1 -1
  424. package/dist/main.js +204 -83
  425. package/dist/output/failure-hints.d.ts.map +1 -1
  426. package/dist/output/failure-hints.js +11 -9
  427. package/dist/output/rejected-entries-note.d.ts +57 -0
  428. package/dist/output/rejected-entries-note.d.ts.map +1 -0
  429. package/dist/output/rejected-entries-note.js +103 -0
  430. package/dist/output/stdout-is-pipe.d.ts +13 -0
  431. package/dist/output/stdout-is-pipe.d.ts.map +1 -0
  432. package/dist/output/stdout-is-pipe.js +21 -0
  433. package/dist/packs/stale-build-warning.d.ts +11 -0
  434. package/dist/packs/stale-build-warning.d.ts.map +1 -0
  435. package/dist/packs/stale-build-warning.js +23 -0
  436. package/dist/quality/run-quality.d.ts +123 -0
  437. package/dist/quality/run-quality.d.ts.map +1 -0
  438. package/dist/quality/run-quality.js +442 -0
  439. package/dist/schemas/json-schemas.d.ts +184 -3
  440. package/dist/schemas/json-schemas.d.ts.map +1 -1
  441. package/dist/schemas/json-schemas.js +113 -2
  442. package/dist/shrk.d.ts +3 -0
  443. package/dist/shrk.d.ts.map +1 -0
  444. package/dist/shrk.js +30 -0
  445. package/dist/surface/audience-applicability.d.ts +26 -0
  446. package/dist/surface/audience-applicability.d.ts.map +1 -0
  447. package/dist/surface/audience-applicability.js +60 -0
  448. package/dist/surface/catalog-command-safety.d.ts +18 -0
  449. package/dist/surface/catalog-command-safety.d.ts.map +1 -0
  450. package/dist/surface/catalog-command-safety.js +62 -0
  451. package/dist/surface/cli-command-resolver.d.ts +21 -0
  452. package/dist/surface/cli-command-resolver.d.ts.map +1 -0
  453. package/dist/surface/cli-command-resolver.js +87 -0
  454. package/dist/surface/command-dispatch-kind.d.ts +20 -0
  455. package/dist/surface/command-dispatch-kind.d.ts.map +1 -0
  456. package/dist/surface/command-dispatch-kind.js +20 -0
  457. package/dist/surface/command-index-entry.d.ts +40 -0
  458. package/dist/surface/command-index-entry.d.ts.map +1 -0
  459. package/dist/surface/command-index-entry.js +1 -0
  460. package/dist/surface/command-index.d.ts +77 -0
  461. package/dist/surface/command-index.d.ts.map +1 -0
  462. package/dist/surface/command-index.js +323 -0
  463. package/dist/surface/i-command-index.d.ts +22 -0
  464. package/dist/surface/i-command-index.d.ts.map +1 -0
  465. package/dist/surface/i-command-index.js +1 -0
  466. package/dist/surface/i-command-string-context.d.ts +20 -0
  467. package/dist/surface/i-command-string-context.d.ts.map +1 -0
  468. package/dist/surface/i-command-string-context.js +1 -0
  469. package/dist/surface/i-surface-denial.d.ts +13 -0
  470. package/dist/surface/i-surface-denial.d.ts.map +1 -0
  471. package/dist/surface/i-surface-denial.js +1 -0
  472. package/dist/surface/load-surface-context.d.ts +17 -1
  473. package/dist/surface/load-surface-context.d.ts.map +1 -1
  474. package/dist/surface/load-surface-context.js +48 -10
  475. package/dist/surface/not-enabled-error.d.ts +38 -4
  476. package/dist/surface/not-enabled-error.d.ts.map +1 -1
  477. package/dist/surface/not-enabled-error.js +96 -6
  478. package/dist/surface/profiles.d.ts +7 -0
  479. package/dist/surface/profiles.d.ts.map +1 -1
  480. package/dist/surface/resolve-command-string.d.ts +10 -0
  481. package/dist/surface/resolve-command-string.d.ts.map +1 -0
  482. package/dist/surface/resolve-command-string.js +572 -0
  483. package/dist/surface/surface-config-writer.d.ts +7 -2
  484. package/dist/surface/surface-config-writer.d.ts.map +1 -1
  485. package/dist/surface/surface-config-writer.js +25 -6
  486. package/dist/surface/surface-layer.d.ts +11 -0
  487. package/dist/surface/surface-layer.d.ts.map +1 -0
  488. package/dist/surface/surface-layer.js +11 -0
  489. package/dist/surface/surface-refusal-reason.d.ts +16 -0
  490. package/dist/surface/surface-refusal-reason.d.ts.map +1 -0
  491. package/dist/surface/surface-refusal-reason.js +16 -0
  492. package/dist/surface/surface-selector.d.ts +26 -0
  493. package/dist/surface/surface-selector.d.ts.map +1 -0
  494. package/dist/surface/surface-selector.js +42 -0
  495. package/dist/surface/surface-summary.d.ts +61 -18
  496. package/dist/surface/surface-summary.d.ts.map +1 -1
  497. package/dist/surface/surface-summary.js +147 -60
  498. package/dist/surface/tier.d.ts +85 -22
  499. package/dist/surface/tier.d.ts.map +1 -1
  500. package/dist/surface/tier.js +132 -30
  501. package/dist/usage/usage-log.d.ts +6 -1
  502. package/dist/usage/usage-log.d.ts.map +1 -1
  503. package/dist/usage/usage-log.js +7 -2
  504. package/dist/validation/run-validation-loop.d.ts +9 -0
  505. package/dist/validation/run-validation-loop.d.ts.map +1 -1
  506. package/dist/validation/run-validation-loop.js +14 -11
  507. package/dist/validation/typecheck-emitted.d.ts +8 -9
  508. package/dist/validation/typecheck-emitted.d.ts.map +1 -1
  509. package/dist/validation/typecheck-emitted.js +17 -97
  510. package/package.json +34 -34
@@ -2,6 +2,7 @@ import { mkdirSync, writeFileSync } from 'node:fs';
2
2
  import * as nodePath from 'node:path';
3
3
  import { buildAgentContract, inspectSharkcraft, renderAgentContractHtml, renderAgentContractMarkdown, renderAgentContractText, } from '@shrkcrft/inspector';
4
4
  import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
5
+ import { PositionalMode } from "../dispatch/positional-mode.js";
5
6
  import { asJson } from "../output/format-output.js";
6
7
  import { contractApproveCommand, contractCheckCommand, contractStatusCommand, } from "./contract-gate.command.js";
7
8
  import { contractTemplateCommand } from "./contract-templates.command.js";
@@ -23,6 +24,40 @@ function safeSlug(s) {
23
24
  }
24
25
  export const contractCommand = {
25
26
  name: 'contract',
27
+ // Free: `contract "<task>"` takes the task as free text.
28
+ positionals: PositionalMode.Free,
29
+ subverbs: [
30
+ { name: 'check', description: 'Check a saved contract against the workspace.', usage: 'shrk contract check <contract.json>', positionals: PositionalMode.Path },
31
+ {
32
+ name: 'approve',
33
+ description: 'Approve a saved contract.',
34
+ usage: 'shrk contract approve <contract.json> --by <name> --reason "<why>"',
35
+ positionals: PositionalMode.Path,
36
+ },
37
+ { name: 'status', description: 'Inspect a saved contract file.', usage: 'shrk contract status <contract.json>', positionals: PositionalMode.Path },
38
+ {
39
+ name: 'template',
40
+ description: 'Contract templates: list / get / render / recommend.',
41
+ usage: 'shrk contract template <list|get|render|recommend>',
42
+ positionals: PositionalMode.None,
43
+ subverbs: [
44
+ { name: 'list', description: 'List the contract templates.', usage: 'shrk contract template list [--json]' },
45
+ { name: 'get', description: 'Show one contract template.', usage: 'shrk contract template get <id>', positionals: PositionalMode.Free },
46
+ {
47
+ name: 'render',
48
+ description: 'Render a contract template for a task.',
49
+ usage: 'shrk contract template render <id> --task "<task>"',
50
+ positionals: PositionalMode.Free,
51
+ },
52
+ {
53
+ name: 'recommend',
54
+ description: 'Recommend a contract template for a task.',
55
+ usage: 'shrk contract template recommend "<task>"',
56
+ positionals: PositionalMode.Free,
57
+ },
58
+ ],
59
+ },
60
+ ],
26
61
  description: 'Build a deterministic agent contract for a task (intent + risk + impact + ownership + boundaries + policies + playbooks). Read-only unless --save (writes only to .sharkcraft/contracts/).',
27
62
  usage: 'shrk contract "<task>" [--role developer|reviewer|architect|release-manager|security|ai-agent] [--mode conservative|balanced|aggressive] [--files a,b,c] [--since <ref>] [--staged] [--format text|markdown|html|json] [--output <file>] [--save]',
28
63
  async run(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.command.d.ts","sourceRoot":"","sources":["../../src/commands/conventions.command.ts"],"names":[],"mappings":"AAcA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,sBAAsB,EAAE,eAgCpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAsCnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAsBtC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAkCrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,eAOvC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAgBhC,CAAC"}
1
+ {"version":3,"file":"conventions.command.d.ts","sourceRoot":"","sources":["../../src/commands/conventions.command.ts"],"names":[],"mappings":"AAgBA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAUhC,eAAO,MAAM,sBAAsB,EAAE,eA0CpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAsCnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAoEtC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAqHrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,eAOvC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAsDhC,CAAC"}
@@ -1,12 +1,13 @@
1
- /**
2
- * `shrk conventions ...` — pack/local conventions surface.
3
- *
4
- * Read-only listing + doctor + check. `check` runs the loaded conventions
5
- * against caller-supplied files (or git diff). Never writes.
6
- */
7
- import { checkConventionsAgainstFiles, findConvention, getChangedFiles, inspectSharkcraft, listConventions, listConventionIssues, } from '@shrkcrft/inspector';
1
+ import { checkConventionsAgainstFiles, ContributionKind, findConvention, getChangedFiles, inspectSharkcraft, listConventions, loadConventions, } from '@shrkcrft/inspector';
8
2
  import { flagBool, flagString, flagList, resolveCwd, } from "../command-registry.js";
3
+ import { PositionalMode } from "../dispatch/positional-mode.js";
4
+ import { ExitCode } from "../exit-codes.js";
5
+ import { ALLOW_EMPTY_FLAG, allowEmptyValve } from "../gates/allow-empty.js";
6
+ import { buildGateEnvelope } from "../gates/gate-envelope.js";
7
+ import { settleVerdict } from "../gates/settle-verdict.js";
8
+ import { verdictLine } from "../gates/verdict-line.js";
9
9
  import { asJson, header } from "../output/format-output.js";
10
+ import { collectListVerbNote, writeListVerbNote } from "../output/rejected-entries-note.js";
10
11
  export const conventionsListCommand = {
11
12
  name: 'list',
12
13
  description: 'List registered conventions. Read-only.',
@@ -22,19 +23,29 @@ export const conventionsListCommand = {
22
23
  filtered = filtered.filter((e) => e.convention.kind === kind);
23
24
  if (source)
24
25
  filtered = filtered.filter((e) => e.source === source);
26
+ // A convention its loader refused, and a conventions file that failed to
27
+ // load, are said out loud (round 12, 12.1 + review A-4) — never a silently
28
+ // shorter list. The exit stays 0: a list is no verdict.
29
+ const note = { source, next: 'shrk conventions doctor' };
30
+ const outcomes = await collectListVerbNote(inspection, [ContributionKind.Convention], note);
25
31
  if (flagBool(args, 'json')) {
26
32
  process.stdout.write(asJson(filtered) + '\n');
33
+ writeListVerbNote(outcomes, inspection.projectRoot, { ...note, json: true });
27
34
  return 0;
28
35
  }
29
36
  process.stdout.write(header(`Conventions (${filtered.length})`));
30
37
  if (filtered.length === 0) {
31
- process.stdout.write(' (none contribute via a pack manifest "conventionFiles" entry or sharkcraft/conventions.ts)\n');
32
- return 0;
38
+ // Never point at a conventions file that exists and FAILED as the place
39
+ // to contribute — the note below names it and its error.
40
+ process.stdout.write(outcomes.loadFailures.length > 0
41
+ ? ' (none loaded — a conventions file failed to load; see below)\n'
42
+ : ' (none — contribute via a pack manifest "conventionFiles" entry or sharkcraft/conventions.ts)\n');
33
43
  }
34
44
  for (const e of filtered) {
35
45
  const src = e.source === 'pack' ? `pack:${e.packageName ?? '?'}` : e.source;
36
46
  process.stdout.write(` • ${e.convention.kind.padEnd(12)} ${e.convention.id.padEnd(28)} ${e.convention.title} [${src}]\n`);
37
47
  }
48
+ writeListVerbNote(outcomes, inspection.projectRoot, note);
38
49
  return 0;
39
50
  },
40
51
  };
@@ -81,61 +92,172 @@ export const conventionsGetCommand = {
81
92
  };
82
93
  export const conventionsDoctorCommand = {
83
94
  name: 'doctor',
84
- description: 'Surface load/validation issues for conventions.',
85
- usage: 'shrk conventions doctor [--json]',
95
+ description: 'Surface load / validation issues for conventions — an invalid shape (a kind, severity or reference kind outside its closed set is named with the allowed values), a shape warning, a file that failed to load. Exit 0 · 1 an invalid convention (or a warning under --strict) · 2 a convention file never read, or none discovered (--allow-empty accepts that explicitly). Read-only.',
96
+ usage: 'shrk conventions doctor [--strict] [--allow-empty] [--json]',
97
+ booleanFlags: new Set(['json', 'strict', ALLOW_EMPTY_FLAG]),
86
98
  async run(args) {
87
99
  const cwd = resolveCwd(args);
88
100
  const inspection = await inspectSharkcraft({ cwd });
89
- const issues = await listConventionIssues(inspection);
101
+ const { entries, issues, files } = await loadConventions(inspection);
102
+ // Convention FILES are the unit: a file that failed to load was never
103
+ // validated, so "no issues" over it is not a pass.
104
+ const coverage = {
105
+ unit: 'convention files',
106
+ expected: files.discovered,
107
+ examined: files.discovered - files.unread.length,
108
+ root: inspection.projectRoot,
109
+ reason: files.discovered === 0
110
+ ? 'no sharkcraft/conventions.ts, conventionFiles entry or pack conventionFiles'
111
+ : 'missing or failed to load, so their conventions were never validated',
112
+ ...(files.unread.length > 0 ? { unexamined: files.unread.slice(0, 20), unexaminedTotal: files.unread.length } : {}),
113
+ ...allowEmptyValve(args, files.discovered),
114
+ };
115
+ const errors = issues.filter((i) => i.severity === 'error').length;
116
+ const warnings = issues.filter((i) => i.severity === 'warning').length;
117
+ const strict = flagBool(args, 'strict');
118
+ const settled = settleVerdict(errors > 0 || (strict && warnings > 0) ? 1 : 0, [coverage]);
90
119
  if (flagBool(args, 'json')) {
91
- process.stdout.write(asJson({ issues }) + '\n');
92
- return issues.some((i) => i.severity === 'error') ? 1 : 0;
120
+ process.stdout.write(asJson({
121
+ issues,
122
+ conventions: entries.length,
123
+ files,
124
+ coverage,
125
+ exitCode: settled.exit,
126
+ verdict: settled.verdict,
127
+ shortfalls: settled.shortfalls,
128
+ accepted: settled.accepted,
129
+ }) + '\n');
130
+ return settled.exit;
93
131
  }
94
132
  process.stdout.write(header('Conventions doctor'));
95
- if (issues.length === 0) {
96
- process.stdout.write(' ok — no load/validation issues.\n');
97
- return 0;
98
- }
133
+ process.stdout.write(` ${entries.length} convention(s) loaded from ${files.discovered - files.unread.length} of ${files.discovered} file(s) · ${errors} error(s) · ${warnings} warning(s)\n`);
99
134
  for (const i of issues) {
100
- process.stdout.write(` ${i.severity.padEnd(7)} [${i.code}] ${i.message}\n`);
135
+ const where = i.conventionId ? ` ${i.conventionId}` : '';
136
+ process.stdout.write(` ${i.severity.padEnd(7)} [${i.code}]${where} ${i.message}\n`);
137
+ }
138
+ const clean = files.discovered === 0
139
+ ? 'No conventions declared — accepted.'
140
+ : warnings > 0
141
+ ? `No blocking convention issues — ${warnings} warning(s) reported above.`
142
+ : 'ok — no load/validation issues.';
143
+ const line = verdictLine(settled, clean, files.discovered === 0 ? 'No convention files discovered — nothing validated.' : undefined);
144
+ if (line)
145
+ process.stdout.write(`\n${line}\n`);
146
+ if (settled.exit === ExitCode.NotVerified && files.discovered === 0) {
147
+ process.stdout.write('Pass --allow-empty to accept a project with no conventions explicitly.\n');
101
148
  }
102
- return issues.some((i) => i.severity === 'error') ? 1 : 0;
149
+ return settled.exit;
103
150
  },
104
151
  };
105
152
  export const conventionsCheckCommand = {
106
153
  name: 'check',
107
- description: 'Run loaded conventions against files (--files / --since / --staged).',
108
- usage: 'shrk conventions check [--files a,b,c] [--since <ref>] [--staged] [--json]',
154
+ description: 'Run the loaded conventions against files (--files / --since / --staged; default: the working-tree change). Exit 0 no error-severity hit · 1 an error-severity hit · 2 NOT VERIFIED — no file in scope, no convention declared (--allow-empty accepts either explicitly), or a convention file never read · 3 usage. Read-only.',
155
+ usage: 'shrk conventions check [--files a,b,c] [--since <ref>] [--staged] [--allow-empty] [--json]',
156
+ booleanFlags: new Set(['json', 'staged', ALLOW_EMPTY_FLAG]),
109
157
  async run(args) {
110
158
  const cwd = resolveCwd(args);
111
159
  const inspection = await inspectSharkcraft({ cwd });
112
160
  let files = [];
161
+ let scope = 'the working-tree change';
113
162
  const explicit = flagList(args, 'files');
114
163
  if (explicit.length > 0) {
115
164
  files = explicit;
165
+ scope = '--files';
116
166
  }
117
167
  else if (flagBool(args, 'staged')) {
118
168
  files = getChangedFiles(cwd, { staged: true });
169
+ scope = 'the staged change';
119
170
  }
120
171
  else {
121
172
  const since = flagString(args, 'since');
122
173
  files = since ? getChangedFiles(cwd, { since }) : getChangedFiles(cwd, {});
174
+ if (since)
175
+ scope = `the change since ${since}`;
123
176
  }
177
+ // Round 13: a verdict verb. "Nothing to check" is not a pass — an empty
178
+ // file scope, a project with no convention, or a convention file that
179
+ // never loaded (its conventions were never checked) settle NOT VERIFIED
180
+ // (2) through the shared gate envelope; it printed "ok — no violations"
181
+ // at exit 0 over all three. `--allow-empty` accepts an empty scope or an
182
+ // empty registry explicitly (printed) — never an unread file.
183
+ const loaded = await loadConventions(inspection);
124
184
  const report = await checkConventionsAgainstFiles(inspection, files);
185
+ const unread = loaded.files.unread;
186
+ const rows = [
187
+ {
188
+ id: 'convention files',
189
+ type: 'convention',
190
+ status: 'passed',
191
+ severity: 'warning',
192
+ counts: { discovered: loaded.files.discovered, unread: unread.length, conventions: loaded.entries.length },
193
+ violations: [],
194
+ coverage: {
195
+ unit: 'convention files',
196
+ expected: loaded.files.discovered,
197
+ examined: loaded.files.discovered - unread.length,
198
+ root: inspection.projectRoot,
199
+ reason: loaded.files.discovered === 0
200
+ ? 'no sharkcraft/conventions.ts, conventionFiles entry or pack conventionFiles — nothing to check the files against'
201
+ : 'missing or failed to load, so their conventions were never checked',
202
+ ...(unread.length > 0 ? { unexamined: unread.slice(0, 20), unexaminedTotal: unread.length } : {}),
203
+ ...allowEmptyValve(args, loaded.files.discovered),
204
+ },
205
+ },
206
+ ...loaded.entries.map((e) => {
207
+ const hits = report.hits.filter((h) => h.conventionId === e.convention.id);
208
+ return {
209
+ id: e.convention.id,
210
+ type: 'convention',
211
+ status: hits.some((h) => h.severity === 'error') ? 'failed' : 'passed',
212
+ severity: e.convention.severity === 'error' ? 'error' : 'warning',
213
+ counts: { rules: e.convention.rules.length, hits: hits.length },
214
+ violations: hits.map((h) => ({ id: `${h.conventionId}/${h.ruleId}`, file: h.file, message: h.message })),
215
+ coverage: { unit: 'conventions', expected: 1, examined: 1 },
216
+ };
217
+ }),
218
+ ];
219
+ const gate = buildGateEnvelope('conventions check', report.verdict === 'clean' ? ExitCode.VerifiedPass : ExitCode.Failure, rows, {
220
+ unit: 'files',
221
+ expected: files.length,
222
+ examined: files.length,
223
+ root: inspection.projectRoot,
224
+ reason: `no file in ${scope} — nothing to check the conventions against`,
225
+ ...allowEmptyValve(args, files.length),
226
+ });
125
227
  if (flagBool(args, 'json')) {
126
- process.stdout.write(asJson(report) + '\n');
127
- return report.verdict === 'clean' ? 0 : 1;
228
+ process.stdout.write(asJson({
229
+ ...report,
230
+ // The engine's `clean` over an empty scope is not a pass (round 13
231
+ // review): at 2 the top-level verdict says so, never contradicting
232
+ // `exitCode` / `gate.verdict` beside it.
233
+ verdict: gate.exit === ExitCode.NotVerified ? 'not-verified' : report.verdict,
234
+ conventions: loaded.entries.length,
235
+ exitCode: gate.exit,
236
+ shortfalls: gate.shortfalls,
237
+ accepted: gate.accepted,
238
+ gate,
239
+ }) + '\n');
240
+ return gate.exit;
128
241
  }
129
242
  process.stdout.write(header(`Convention check (${report.filesScanned} files, ${report.hits.length} hits)`));
130
- if (report.hits.length === 0) {
131
- process.stdout.write(' ok — no violations.\n');
132
- return 0;
133
- }
134
243
  for (const h of report.hits.slice(0, 200)) {
135
244
  process.stdout.write(` ${h.severity.padEnd(7)} ${h.conventionId}/${h.ruleId} — ${h.file}\n`);
136
245
  process.stdout.write(` ${h.message}\n`);
137
246
  }
138
- return report.verdict === 'clean' ? 0 : 1;
247
+ const empty = files.length === 0 || loaded.files.discovered === 0;
248
+ const warnings = report.hits.filter((h) => h.severity !== 'error').length;
249
+ const clean = empty
250
+ ? 'Nothing to check — accepted.'
251
+ : warnings > 0
252
+ ? `No blocking convention violation — ${warnings} non-error hit(s) reported above.`
253
+ : 'ok — no violations.';
254
+ const line = verdictLine(gate, clean);
255
+ if (line)
256
+ process.stdout.write(`\n${line}\n`);
257
+ if (gate.exit === ExitCode.NotVerified && empty) {
258
+ process.stdout.write(`Pass --${ALLOW_EMPTY_FLAG} to accept an empty changeset or a project with no conventions explicitly.\n`);
259
+ }
260
+ return gate.exit;
139
261
  },
140
262
  };
141
263
  export const conventionsExplainCommand = {
@@ -150,6 +272,44 @@ export const conventionsCommand = {
150
272
  name: 'conventions',
151
273
  description: 'Generic conventions registry (naming / path / barrel / layout / command / validation / ownership / testing / release / safety). Read-only.',
152
274
  usage: 'shrk conventions list|get|doctor|check|explain ...',
275
+ // Declared (round 11 review): the dispatcher guard refuses an unknown verb
276
+ // with the closest one, and the declared walk reaches `conventions doctor` —
277
+ // a verdict verb, so a bad flag there exits 3, labelled with its own path.
278
+ positionals: PositionalMode.None,
279
+ subverbs: [
280
+ {
281
+ name: conventionsListCommand.name,
282
+ description: conventionsListCommand.description,
283
+ usage: conventionsListCommand.usage,
284
+ positionals: PositionalMode.None,
285
+ },
286
+ {
287
+ name: conventionsGetCommand.name,
288
+ description: conventionsGetCommand.description,
289
+ usage: conventionsGetCommand.usage,
290
+ positionals: PositionalMode.Free,
291
+ },
292
+ {
293
+ name: conventionsDoctorCommand.name,
294
+ description: conventionsDoctorCommand.description,
295
+ usage: conventionsDoctorCommand.usage,
296
+ positionals: PositionalMode.None,
297
+ },
298
+ {
299
+ name: conventionsCheckCommand.name,
300
+ description: conventionsCheckCommand.description,
301
+ usage: conventionsCheckCommand.usage,
302
+ positionals: PositionalMode.None,
303
+ },
304
+ {
305
+ name: conventionsExplainCommand.name,
306
+ description: conventionsExplainCommand.description,
307
+ usage: conventionsExplainCommand.usage,
308
+ positionals: PositionalMode.Free,
309
+ },
310
+ ],
311
+ // The group parses every subverb's argv, so the subverbs' boolean flags live here too.
312
+ booleanFlags: new Set(['json', 'strict', 'staged', ALLOW_EMPTY_FLAG]),
153
313
  async run(args) {
154
314
  const sub = args.positional[0];
155
315
  args.positional = args.positional.slice(1);
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.command.d.ts","sourceRoot":"","sources":["../../src/commands/coverage.command.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,eAAe,EAAE,eAkC7B,CAAC"}
1
+ {"version":3,"file":"coverage.command.d.ts","sourceRoot":"","sources":["../../src/commands/coverage.command.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAIhC,eAAO,MAAM,eAAe,EAAE,eA0C7B,CAAC"}
@@ -1,8 +1,17 @@
1
1
  import { buildCoverageReport, buildScaffoldCoverageReport, inspectSharkcraft, renderScaffoldCoverageMarkdown, } from '@shrkcrft/inspector';
2
2
  import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
3
+ import { PositionalMode } from "../dispatch/positional-mode.js";
3
4
  import { asJson, header, kv } from "../output/format-output.js";
4
5
  export const coverageCommand = {
5
6
  name: 'coverage',
7
+ positionals: PositionalMode.None,
8
+ subverbs: [
9
+ {
10
+ name: 'scaffolds',
11
+ description: 'Scaffold coverage for a task or a domain.',
12
+ usage: 'shrk coverage scaffolds [--task "<task>"|--domain <domain>] [--json]',
13
+ },
14
+ ],
6
15
  description: 'Report relationship/coverage quality across registries + scaffold coverage (`shrk coverage scaffolds --task "<task>"`).',
7
16
  usage: 'shrk [--cwd <dir>] coverage [--json]\n shrk [--cwd <dir>] coverage scaffolds [--task "<task>"|--domain <domain>] [--json]',
8
17
  async run(args) {
@@ -1,5 +1,4 @@
1
1
  import { type ICommandHandler } from '../command-registry.js';
2
2
  export declare const nextCommand: ICommandHandler;
3
- export declare const findCommand: ICommandHandler;
4
3
  export declare const explainCommand: ICommandHandler;
5
4
  //# sourceMappingURL=daily.commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daily.commands.d.ts","sourceRoot":"","sources":["../../src/commands/daily.commands.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAOhC,eAAO,MAAM,WAAW,EAAE,eAsFzB,CAAC;AAcF,eAAO,MAAM,WAAW,EAAE,eAoGzB,CAAC;AAKF,eAAO,MAAM,cAAc,EAAE,eAmH5B,CAAC"}
1
+ {"version":3,"file":"daily.commands.d.ts","sourceRoot":"","sources":["../../src/commands/daily.commands.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAShC,eAAO,MAAM,WAAW,EAAE,eAsFzB,CAAC;AAmBF,eAAO,MAAM,cAAc,EAAE,eAyH5B,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { buildAiReadinessReport, buildTaskPacket, inspectSharkcraft, runDoctor, } from '@shrkcrft/inspector';
2
2
  import { recommendPresets } from '@shrkcrft/presets';
3
3
  import { flagBool, flagNumber, resolveCwd, } from "../command-registry.js";
4
+ import { PositionalMode } from "../dispatch/positional-mode.js";
4
5
  import { asJson, header, kv } from "../output/format-output.js";
6
+ import { tryExplainBoundaryRule } from "./boundaries.command.js";
5
7
  import { tryExplainGateRule } from "./gates.command.js";
6
8
  // ────────────────────────────────────────────────────────────────────────
7
9
  // shrk next — "what should I do right now in this repo?"
@@ -84,7 +86,9 @@ export const nextCommand = {
84
86
  },
85
87
  };
86
88
  // ────────────────────────────────────────────────────────────────────────
87
- // shrk find — grouped search across all SharkCraft kinds.
89
+ // Topic matching for `explain`. (`shrk find` was retired `shrk search` is
90
+ // the grouped search across every kind; its handler lingered here
91
+ // unregistered.)
88
92
  // ────────────────────────────────────────────────────────────────────────
89
93
  function lc(s) {
90
94
  return s.toLowerCase();
@@ -93,86 +97,13 @@ function matches(query, ...texts) {
93
97
  const q = lc(query);
94
98
  return texts.some((t) => typeof t === 'string' && lc(t).includes(q));
95
99
  }
96
- export const findCommand = {
97
- name: 'find',
98
- description: 'Search across knowledge / rules / paths / templates / pipelines / packs / presets in one place.',
99
- usage: 'shrk [--cwd <dir>] find "<query>" [--limit N] [--json]',
100
- async run(args) {
101
- const query = args.positional.join(' ').trim();
102
- if (!query) {
103
- process.stderr.write('Usage: shrk find "<query>"\n');
104
- return 2;
105
- }
106
- const limit = flagNumber(args, 'limit') ?? 8;
107
- const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
108
- const knowledge = inspection.knowledgeEntries
109
- .filter((e) => matches(query, e.id, e.title, e.content, e.tags.join(' ')))
110
- .slice(0, limit);
111
- const rules = inspection.ruleService.list()
112
- .filter((r) => matches(query, r.id, r.title, r.content))
113
- .slice(0, limit);
114
- const paths = inspection.pathService.list()
115
- .filter((p) => matches(query, p.id, p.title, p.content))
116
- .slice(0, limit);
117
- const templates = inspection.templates
118
- .filter((t) => matches(query, t.id, t.name, t.description))
119
- .slice(0, limit);
120
- const pipelines = inspection.pipelines
121
- .filter((p) => matches(query, p.id, p.title, p.description))
122
- .slice(0, limit);
123
- const packs = inspection.packs.discoveredPacks
124
- .filter((p) => matches(query, p.packageName, p.manifest?.info.description))
125
- .slice(0, limit);
126
- const presets = inspection.presetRegistry
127
- .list()
128
- .filter((p) => matches(query, p.id, p.title, p.description, (p.tags ?? []).join(' ')))
129
- .slice(0, limit);
130
- if (flagBool(args, 'json')) {
131
- process.stdout.write(asJson({
132
- query,
133
- knowledge: knowledge.map((e) => ({ id: e.id, title: e.title, type: e.type })),
134
- rules: rules.map((r) => ({ id: r.id, title: r.title })),
135
- paths: paths.map((p) => ({ id: p.id, title: p.title })),
136
- templates: templates.map((t) => ({ id: t.id, name: t.name })),
137
- pipelines: pipelines.map((p) => ({ id: p.id, title: p.title })),
138
- packs: packs.map((p) => ({ name: p.packageName, version: p.packageVersion })),
139
- presets: presets.map((p) => ({ id: p.id, title: p.title })),
140
- }) + '\n');
141
- return 0;
142
- }
143
- process.stdout.write(header(`find: ${query}`));
144
- function group(title, items) {
145
- if (items.length === 0)
146
- return;
147
- process.stdout.write(`\n${title} (${items.length}):\n`);
148
- for (const it of items)
149
- process.stdout.write(` ${it.line}\n`);
150
- }
151
- group('Knowledge', knowledge.map((e) => ({ line: `${e.id.padEnd(30)} ${e.title}` })));
152
- group('Rules', rules.map((r) => ({ line: `${r.id.padEnd(30)} ${r.title}` })));
153
- group('Paths', paths.map((p) => ({ line: `${p.id.padEnd(30)} ${p.title}` })));
154
- group('Templates', templates.map((t) => ({ line: `${t.id.padEnd(30)} ${t.name}` })));
155
- group('Pipelines', pipelines.map((p) => ({ line: `${p.id.padEnd(30)} ${p.title}` })));
156
- group('Packs', packs.map((p) => ({ line: `${p.packageName}@${p.packageVersion}` })));
157
- group('Presets', presets.map((p) => ({ line: `${p.id.padEnd(22)} ${p.title}` })));
158
- const total = knowledge.length +
159
- rules.length +
160
- paths.length +
161
- templates.length +
162
- pipelines.length +
163
- packs.length +
164
- presets.length;
165
- if (total === 0) {
166
- process.stdout.write('\n(no matches)\n');
167
- }
168
- return 0;
169
- },
170
- };
171
100
  // ────────────────────────────────────────────────────────────────────────
172
101
  // shrk explain <topic> — compact local explanation, no AI.
173
102
  // ────────────────────────────────────────────────────────────────────────
174
103
  export const explainCommand = {
175
104
  name: 'explain',
105
+ // The positionals are the free-form topic (or a rule id).
106
+ positionals: PositionalMode.Free,
176
107
  description: 'Search the project knowledge / rules / paths / templates / pipelines for a topic and print a compact explanation. No AI required.',
177
108
  usage: 'shrk [--cwd <dir>] explain "<topic>" [--max-entries N] [--json]',
178
109
  async run(args) {
@@ -189,6 +120,11 @@ export const explainCommand = {
189
120
  const asRule = await tryExplainGateRule(args, topic);
190
121
  if (asRule !== undefined)
191
122
  return asRule;
123
+ // Round 13: a BOUNDARY rule id too — it used to fall through to the
124
+ // topic search ("no matching knowledge entries").
125
+ const asBoundary = await tryExplainBoundaryRule(args, topic);
126
+ if (asBoundary !== undefined)
127
+ return asBoundary;
192
128
  }
193
129
  const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
194
130
  const maxEntries = flagNumber(args, 'max-entries') ?? 6;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.command.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.command.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAMhC,eAAO,MAAM,gBAAgB,EAAE,eAY9B,CAAC"}
1
+ {"version":3,"file":"dashboard.command.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.command.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAOhC,eAAO,MAAM,gBAAgB,EAAE,eAsB9B,CAAC"}
@@ -15,11 +15,21 @@ import { existsSync } from 'node:fs';
15
15
  import * as nodePath from 'node:path';
16
16
  import { fileURLToPath } from 'node:url';
17
17
  import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
18
+ import { PositionalMode } from "../dispatch/positional-mode.js";
18
19
  import { startDashboardApiServer } from "../dashboard/dashboard-api-server.js";
19
20
  import { asJson } from "../output/format-output.js";
20
21
  const DEFAULT_PORT = 4567;
21
22
  export const dashboardCommand = {
22
23
  name: 'dashboard',
24
+ // Mixed-mode (export / diff are trie children); `serve` is dispatched here.
25
+ positionals: PositionalMode.None,
26
+ subverbs: [
27
+ {
28
+ name: 'serve',
29
+ description: 'Start the dashboard (the same as bare `shrk dashboard`).',
30
+ usage: 'shrk [--cwd <dir>] dashboard serve [--host <addr>] [--port <n>] [--open|--no-open] [--api-only] [--static-only] [--dev-assets <path>] [--json]',
31
+ },
32
+ ],
23
33
  description: 'Start the local read-only SharkCraft dashboard (web UI + API). GET/HEAD only; 127.0.0.1 by default; no write endpoints.',
24
34
  usage: 'shrk [--cwd <dir>] dashboard [serve] [--host <addr>] [--port <n>] [--open|--no-open] [--api-only] [--static-only] [--dev-assets <path>] [--json]',
25
35
  async run(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"dev.command.d.ts","sourceRoot":"","sources":["../../src/commands/dev.command.ts"],"names":[],"mappings":"AA6CA,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAg8ChC,eAAO,MAAM,UAAU,EAAE,eAkExB,CAAC"}
1
+ {"version":3,"file":"dev.command.d.ts","sourceRoot":"","sources":["../../src/commands/dev.command.ts"],"names":[],"mappings":"AA6CA,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAm8ChC,eAAO,MAAM,UAAU,EAAE,eA0GxB,CAAC"}
@@ -4,6 +4,7 @@ import * as nodePath from 'node:path';
4
4
  import { archiveDevSession, buildAgentBrief, buildTaskPacket, computeDevNextAction, createDevSessionState, DevSessionPhase, DevSessionPlanStatus, diffDevSessions, getDevSessionDir, inspectSharkcraft, listDevCleanCandidates, listDevSessionsDetailed, parseDurationToMs, recordAppliedPlan, recordReportFile, recordValidation, recomputePhase, renderDevSessionFinalReport, renderDevSessionHtml, reviewSavedPlan, scanDevSession, setDevNextAction, setDevSessionBriefFile, setDevSessionPhase, upsertDevPlanEntry, writeDevSessionState, } from '@shrkcrft/inspector';
5
5
  import { buildSavedPlan, generate, OverwriteStrategy, PLAN_SECRET_ENV, savePlanToFile, signPlan, } from '@shrkcrft/generator';
6
6
  import { flagBool, flagList, flagString, flagVars, resolveCwd, } from "../command-registry.js";
7
+ import { PositionalMode } from "../dispatch/positional-mode.js";
7
8
  import { asJson, header, kv } from "../output/format-output.js";
8
9
  import { runValidationLoop } from "../validation/run-validation-loop.js";
9
10
  const SUBCOMMANDS = new Set([
@@ -231,7 +232,7 @@ async function planSession(args) {
231
232
  }
232
233
  if (!load.state) {
233
234
  process.stderr.write(`Session ${load.id} has no session.json (legacy session). ` +
234
- `Use shrk dev status / shrk session report for legacy sessions.\n`);
235
+ `Use shrk dev status ${load.id} / shrk dev report ${load.id} for legacy sessions.\n`);
235
236
  return 1;
236
237
  }
237
238
  const packet = load.packet;
@@ -799,7 +800,9 @@ function reportSession(args) {
799
800
  if (htmlOut)
800
801
  state = recordReportFile(state, 'final-report.html');
801
802
  state = setDevSessionPhase(state, DevSessionPhase.Completed);
802
- state = setDevNextAction(state, `shrk session show ${load.id}`);
803
+ // `shrk session show` never existed; a completed session's next action is
804
+ // its reports — the same answer the inspector's computeDevNextAction gives.
805
+ state = setDevNextAction(state, `shrk dev reports ${load.id}`);
803
806
  writeDevSessionState(cwd, state);
804
807
  }
805
808
  if (flagBool(args, 'json')) {
@@ -1335,6 +1338,46 @@ function commandsCmd(args) {
1335
1338
  }
1336
1339
  export const devCommand = {
1337
1340
  name: 'dev',
1341
+ // Free: `shrk dev "<task>"` is the documented alias of `dev start "<task>"`.
1342
+ positionals: PositionalMode.Free,
1343
+ subverbs: [
1344
+ { name: 'start', description: 'Start a dev session for a task.', usage: 'shrk dev start "<task>"', positionals: PositionalMode.Free },
1345
+ { name: 'plan', description: 'Plan the next step of a session.', usage: 'shrk dev plan <sessionId>', positionals: PositionalMode.Free },
1346
+ { name: 'status', description: 'A session’s status.', usage: 'shrk dev status [<sessionId>]', positionals: PositionalMode.Free },
1347
+ { name: 'next', description: 'The next action for a session.', usage: 'shrk dev next [<sessionId>]', positionals: PositionalMode.Free },
1348
+ { name: 'continue', description: 'Continue a session (same as `next`).', usage: 'shrk dev continue [<sessionId>]', positionals: PositionalMode.Free },
1349
+ { name: 'validate', description: 'Validate a session’s applied plans.', usage: 'shrk dev validate <sessionId>', positionals: PositionalMode.Free },
1350
+ { name: 'report', description: 'A session report.', usage: 'shrk dev report <sessionId>', positionals: PositionalMode.Free },
1351
+ { name: 'list', description: 'List dev sessions.', usage: 'shrk dev list' },
1352
+ {
1353
+ name: 'mark-applied',
1354
+ description: 'Record that a plan of the session was applied.',
1355
+ usage: 'shrk dev mark-applied <sessionId> <planPath> [--note <text>]',
1356
+ positionals: PositionalMode.Free,
1357
+ },
1358
+ {
1359
+ name: 'mark-validated',
1360
+ description: 'Record a session’s validation result.',
1361
+ usage: 'shrk dev mark-validated <sessionId> [--report <path>] [--status passed|failed] [--note <text>]',
1362
+ positionals: PositionalMode.Free,
1363
+ },
1364
+ { name: 'diff', description: 'Diff two sessions.', usage: 'shrk dev diff <sessionA> <sessionB> [--json]', positionals: PositionalMode.Free },
1365
+ { name: 'archive', description: 'Archive a session.', usage: 'shrk dev archive <sessionId>', positionals: PositionalMode.Free },
1366
+ {
1367
+ name: 'clean',
1368
+ description: 'Clean old sessions (dry-run unless --write).',
1369
+ usage: 'shrk dev clean --older-than <duration> [--archive] [--write] [--include-active]',
1370
+ },
1371
+ {
1372
+ name: 'open',
1373
+ description: 'Open a session report.',
1374
+ usage: 'shrk dev open <sessionId> [--html] [--serve [--host <addr>] [--port <n>]]',
1375
+ positionals: PositionalMode.Free,
1376
+ },
1377
+ { name: 'plans', description: 'A session’s plans.', usage: 'shrk dev plans <sessionId>', positionals: PositionalMode.Free },
1378
+ { name: 'reports', description: 'A session’s reports.', usage: 'shrk dev reports <sessionId>', positionals: PositionalMode.Free },
1379
+ { name: 'commands', description: 'The commands a session ran / needs.', usage: 'shrk dev commands <sessionId>', positionals: PositionalMode.Free },
1380
+ ],
1338
1381
  description: 'Safe AI-assisted development workflow: task → session → plan → review → apply (CLI) → validate → report. ' +
1339
1382
  'Never auto-applies plans; never runs untrusted pack commands; never writes outside .sharkcraft/sessions/.',
1340
1383
  usage: 'shrk dev <start|plan|status|next|continue|validate|report|list|mark-applied|mark-validated|diff|archive|clean|open|plans|reports|commands> [args...] [--cwd <dir>] [--json]\n' +
@@ -1,5 +1,3 @@
1
1
  import { type ICommandHandler } from '../command-registry.js';
2
2
  export declare const diagnosticsListCommand: ICommandHandler;
3
- export declare const diagnosticsGetCommand: ICommandHandler;
4
- export declare const diagnosticsSuggestCommand: ICommandHandler;
5
3
  //# sourceMappingURL=diagnostics.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.command.d.ts","sourceRoot":"","sources":["../../src/commands/diagnostics.command.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAGhC,eAAO,MAAM,sBAAsB,EAAE,eAiBpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eA+BnC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,eAsCvC,CAAC"}
1
+ {"version":3,"file":"diagnostics.command.d.ts","sourceRoot":"","sources":["../../src/commands/diagnostics.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,eAAe,EAAmB,MAAM,wBAAwB,CAAC;AAMzF,eAAO,MAAM,sBAAsB,EAAE,eAiBpC,CAAC"}