@shrkcrft/cli 0.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/asset-preview/apply-action-hint-stub.d.ts +28 -0
  4. package/dist/asset-preview/apply-action-hint-stub.d.ts.map +1 -0
  5. package/dist/asset-preview/apply-action-hint-stub.js +170 -0
  6. package/dist/asset-preview/apply-asset-preview.d.ts +31 -0
  7. package/dist/asset-preview/apply-asset-preview.d.ts.map +1 -0
  8. package/dist/asset-preview/apply-asset-preview.js +210 -0
  9. package/dist/asset-preview/apply-knowledge-stale-fix.d.ts +37 -0
  10. package/dist/asset-preview/apply-knowledge-stale-fix.d.ts.map +1 -0
  11. package/dist/asset-preview/apply-knowledge-stale-fix.js +344 -0
  12. package/dist/asset-preview/apply-missing-barrel.d.ts +15 -0
  13. package/dist/asset-preview/apply-missing-barrel.d.ts.map +1 -0
  14. package/dist/asset-preview/apply-missing-barrel.js +65 -0
  15. package/dist/asset-preview/apply-template-drift-fix.d.ts +21 -0
  16. package/dist/asset-preview/apply-template-drift-fix.d.ts.map +1 -0
  17. package/dist/asset-preview/apply-template-drift-fix.js +125 -0
  18. package/dist/asset-preview/apply-template-update.d.ts +43 -0
  19. package/dist/asset-preview/apply-template-update.d.ts.map +1 -0
  20. package/dist/asset-preview/apply-template-update.js +257 -0
  21. package/dist/asset-preview/entry-mutator.d.ts +106 -0
  22. package/dist/asset-preview/entry-mutator.d.ts.map +1 -0
  23. package/dist/asset-preview/entry-mutator.js +428 -0
  24. package/dist/authoring/authoring-kit.d.ts +36 -0
  25. package/dist/authoring/authoring-kit.d.ts.map +1 -0
  26. package/dist/authoring/authoring-kit.js +106 -0
  27. package/dist/command-registry.d.ts +158 -0
  28. package/dist/command-registry.d.ts.map +1 -0
  29. package/dist/command-registry.js +348 -0
  30. package/dist/commands/apply.command.d.ts +3 -0
  31. package/dist/commands/apply.command.d.ts.map +1 -0
  32. package/dist/commands/apply.command.js +879 -0
  33. package/dist/commands/architecture.command.d.ts +5 -0
  34. package/dist/commands/architecture.command.d.ts.map +1 -0
  35. package/dist/commands/architecture.command.js +141 -0
  36. package/dist/commands/ask.command.d.ts +3 -0
  37. package/dist/commands/ask.command.d.ts.map +1 -0
  38. package/dist/commands/ask.command.js +58 -0
  39. package/dist/commands/audit.command.d.ts +3 -0
  40. package/dist/commands/audit.command.d.ts.map +1 -0
  41. package/dist/commands/audit.command.js +141 -0
  42. package/dist/commands/biome.command.d.ts +7 -0
  43. package/dist/commands/biome.command.d.ts.map +1 -0
  44. package/dist/commands/biome.command.js +350 -0
  45. package/dist/commands/boundaries.command.d.ts +9 -0
  46. package/dist/commands/boundaries.command.d.ts.map +1 -0
  47. package/dist/commands/boundaries.command.js +314 -0
  48. package/dist/commands/brief.command.d.ts +3 -0
  49. package/dist/commands/brief.command.d.ts.map +1 -0
  50. package/dist/commands/brief.command.js +206 -0
  51. package/dist/commands/bundle.command.d.ts +3 -0
  52. package/dist/commands/bundle.command.d.ts.map +1 -0
  53. package/dist/commands/bundle.command.js +1183 -0
  54. package/dist/commands/changes.command.d.ts +3 -0
  55. package/dist/commands/changes.command.d.ts.map +1 -0
  56. package/dist/commands/changes.command.js +155 -0
  57. package/dist/commands/check.command.d.ts +3 -0
  58. package/dist/commands/check.command.d.ts.map +1 -0
  59. package/dist/commands/check.command.js +553 -0
  60. package/dist/commands/checks.command.d.ts +29 -0
  61. package/dist/commands/checks.command.d.ts.map +1 -0
  62. package/dist/commands/checks.command.js +521 -0
  63. package/dist/commands/ci.command.d.ts +3 -0
  64. package/dist/commands/ci.command.d.ts.map +1 -0
  65. package/dist/commands/ci.command.js +680 -0
  66. package/dist/commands/codemod.command.d.ts +3 -0
  67. package/dist/commands/codemod.command.d.ts.map +1 -0
  68. package/dist/commands/codemod.command.js +130 -0
  69. package/dist/commands/command-catalog.d.ts +265 -0
  70. package/dist/commands/command-catalog.d.ts.map +1 -0
  71. package/dist/commands/command-catalog.js +3242 -0
  72. package/dist/commands/commands.command.d.ts +92 -0
  73. package/dist/commands/commands.command.d.ts.map +1 -0
  74. package/dist/commands/commands.command.js +1208 -0
  75. package/dist/commands/constructs.command.d.ts +15 -0
  76. package/dist/commands/constructs.command.d.ts.map +1 -0
  77. package/dist/commands/constructs.command.js +669 -0
  78. package/dist/commands/context.command.d.ts +3 -0
  79. package/dist/commands/context.command.d.ts.map +1 -0
  80. package/dist/commands/context.command.js +120 -0
  81. package/dist/commands/contract-gate.command.d.ts +5 -0
  82. package/dist/commands/contract-gate.command.d.ts.map +1 -0
  83. package/dist/commands/contract-gate.command.js +208 -0
  84. package/dist/commands/contract-templates.command.d.ts +8 -0
  85. package/dist/commands/contract-templates.command.d.ts.map +1 -0
  86. package/dist/commands/contract-templates.command.js +151 -0
  87. package/dist/commands/contract.command.d.ts +3 -0
  88. package/dist/commands/contract.command.d.ts.map +1 -0
  89. package/dist/commands/contract.command.js +105 -0
  90. package/dist/commands/conventions.command.d.ts +8 -0
  91. package/dist/commands/conventions.command.d.ts.map +1 -0
  92. package/dist/commands/conventions.command.js +169 -0
  93. package/dist/commands/coverage.command.d.ts +3 -0
  94. package/dist/commands/coverage.command.d.ts.map +1 -0
  95. package/dist/commands/coverage.command.js +56 -0
  96. package/dist/commands/daily.commands.d.ts +5 -0
  97. package/dist/commands/daily.commands.d.ts.map +1 -0
  98. package/dist/commands/daily.commands.js +224 -0
  99. package/dist/commands/dashboard-export.command.d.ts +4 -0
  100. package/dist/commands/dashboard-export.command.d.ts.map +1 -0
  101. package/dist/commands/dashboard-export.command.js +86 -0
  102. package/dist/commands/dashboard.command.d.ts +3 -0
  103. package/dist/commands/dashboard.command.d.ts.map +1 -0
  104. package/dist/commands/dashboard.command.js +106 -0
  105. package/dist/commands/dev.command.d.ts +3 -0
  106. package/dist/commands/dev.command.d.ts.map +1 -0
  107. package/dist/commands/dev.command.js +1392 -0
  108. package/dist/commands/diagnostics.command.d.ts +5 -0
  109. package/dist/commands/diagnostics.command.d.ts.map +1 -0
  110. package/dist/commands/diagnostics.command.js +97 -0
  111. package/dist/commands/docs.command.d.ts +4 -0
  112. package/dist/commands/docs.command.d.ts.map +1 -0
  113. package/dist/commands/docs.command.js +34 -0
  114. package/dist/commands/doctor.command.d.ts +7 -0
  115. package/dist/commands/doctor.command.d.ts.map +1 -0
  116. package/dist/commands/doctor.command.js +681 -0
  117. package/dist/commands/drift.command.d.ts +3 -0
  118. package/dist/commands/drift.command.d.ts.map +1 -0
  119. package/dist/commands/drift.command.js +124 -0
  120. package/dist/commands/eslint.command.d.ts +7 -0
  121. package/dist/commands/eslint.command.d.ts.map +1 -0
  122. package/dist/commands/eslint.command.js +423 -0
  123. package/dist/commands/explore.command.d.ts +3 -0
  124. package/dist/commands/explore.command.d.ts.map +1 -0
  125. package/dist/commands/explore.command.js +65 -0
  126. package/dist/commands/export-bundle.command.d.ts +6 -0
  127. package/dist/commands/export-bundle.command.d.ts.map +1 -0
  128. package/dist/commands/export-bundle.command.js +96 -0
  129. package/dist/commands/export.command.d.ts +3 -0
  130. package/dist/commands/export.command.d.ts.map +1 -0
  131. package/dist/commands/export.command.js +83 -0
  132. package/dist/commands/feedback-dispatch.command.d.ts +12 -0
  133. package/dist/commands/feedback-dispatch.command.d.ts.map +1 -0
  134. package/dist/commands/feedback-dispatch.command.js +63 -0
  135. package/dist/commands/feedback.command.d.ts +11 -0
  136. package/dist/commands/feedback.command.d.ts.map +1 -0
  137. package/dist/commands/feedback.command.js +336 -0
  138. package/dist/commands/fix.command.d.ts +3 -0
  139. package/dist/commands/fix.command.d.ts.map +1 -0
  140. package/dist/commands/fix.command.js +776 -0
  141. package/dist/commands/gen.command.d.ts +3 -0
  142. package/dist/commands/gen.command.d.ts.map +1 -0
  143. package/dist/commands/gen.command.js +136 -0
  144. package/dist/commands/git.command.d.ts +6 -0
  145. package/dist/commands/git.command.d.ts.map +1 -0
  146. package/dist/commands/git.command.js +81 -0
  147. package/dist/commands/graph.command.d.ts +3 -0
  148. package/dist/commands/graph.command.d.ts.map +1 -0
  149. package/dist/commands/graph.command.js +287 -0
  150. package/dist/commands/grounding.command.d.ts +7 -0
  151. package/dist/commands/grounding.command.d.ts.map +1 -0
  152. package/dist/commands/grounding.command.js +54 -0
  153. package/dist/commands/help.command.d.ts +20 -0
  154. package/dist/commands/help.command.d.ts.map +1 -0
  155. package/dist/commands/help.command.js +127 -0
  156. package/dist/commands/helper.command.d.ts +6 -0
  157. package/dist/commands/helper.command.d.ts.map +1 -0
  158. package/dist/commands/helper.command.js +170 -0
  159. package/dist/commands/ide.command.d.ts +6 -0
  160. package/dist/commands/ide.command.d.ts.map +1 -0
  161. package/dist/commands/ide.command.js +340 -0
  162. package/dist/commands/impact.command.d.ts +3 -0
  163. package/dist/commands/impact.command.d.ts.map +1 -0
  164. package/dist/commands/impact.command.js +819 -0
  165. package/dist/commands/import.command.d.ts +3 -0
  166. package/dist/commands/import.command.d.ts.map +1 -0
  167. package/dist/commands/import.command.js +115 -0
  168. package/dist/commands/infer.command.d.ts +3 -0
  169. package/dist/commands/infer.command.d.ts.map +1 -0
  170. package/dist/commands/infer.command.js +227 -0
  171. package/dist/commands/ingest.command.d.ts +6 -0
  172. package/dist/commands/ingest.command.d.ts.map +1 -0
  173. package/dist/commands/ingest.command.js +532 -0
  174. package/dist/commands/init.command.d.ts +3 -0
  175. package/dist/commands/init.command.d.ts.map +1 -0
  176. package/dist/commands/init.command.js +301 -0
  177. package/dist/commands/inspect.command.d.ts +3 -0
  178. package/dist/commands/inspect.command.d.ts.map +1 -0
  179. package/dist/commands/inspect.command.js +122 -0
  180. package/dist/commands/knowledge-author.command.d.ts +22 -0
  181. package/dist/commands/knowledge-author.command.d.ts.map +1 -0
  182. package/dist/commands/knowledge-author.command.js +366 -0
  183. package/dist/commands/knowledge-propose.command.d.ts +3 -0
  184. package/dist/commands/knowledge-propose.command.d.ts.map +1 -0
  185. package/dist/commands/knowledge-propose.command.js +125 -0
  186. package/dist/commands/knowledge.command.d.ts +18 -0
  187. package/dist/commands/knowledge.command.d.ts.map +1 -0
  188. package/dist/commands/knowledge.command.js +538 -0
  189. package/dist/commands/languages.command.d.ts +3 -0
  190. package/dist/commands/languages.command.d.ts.map +1 -0
  191. package/dist/commands/languages.command.js +300 -0
  192. package/dist/commands/lint.command.d.ts +15 -0
  193. package/dist/commands/lint.command.d.ts.map +1 -0
  194. package/dist/commands/lint.command.js +194 -0
  195. package/dist/commands/mcp.command.d.ts +3 -0
  196. package/dist/commands/mcp.command.d.ts.map +1 -0
  197. package/dist/commands/mcp.command.js +74 -0
  198. package/dist/commands/memory.command.d.ts +11 -0
  199. package/dist/commands/memory.command.d.ts.map +1 -0
  200. package/dist/commands/memory.command.js +264 -0
  201. package/dist/commands/onboard.command.d.ts +3 -0
  202. package/dist/commands/onboard.command.d.ts.map +1 -0
  203. package/dist/commands/onboard.command.js +650 -0
  204. package/dist/commands/orchestrate.command.d.ts +3 -0
  205. package/dist/commands/orchestrate.command.d.ts.map +1 -0
  206. package/dist/commands/orchestrate.command.js +49 -0
  207. package/dist/commands/owners.command.d.ts +5 -0
  208. package/dist/commands/owners.command.d.ts.map +1 -0
  209. package/dist/commands/owners.command.js +113 -0
  210. package/dist/commands/ownership.command.d.ts +5 -0
  211. package/dist/commands/ownership.command.d.ts.map +1 -0
  212. package/dist/commands/ownership.command.js +117 -0
  213. package/dist/commands/pack-author.command.d.ts +30 -0
  214. package/dist/commands/pack-author.command.d.ts.map +1 -0
  215. package/dist/commands/pack-author.command.js +242 -0
  216. package/dist/commands/packs-new.d.ts +27 -0
  217. package/dist/commands/packs-new.d.ts.map +1 -0
  218. package/dist/commands/packs-new.js +805 -0
  219. package/dist/commands/packs.command.d.ts +15 -0
  220. package/dist/commands/packs.command.d.ts.map +1 -0
  221. package/dist/commands/packs.command.js +958 -0
  222. package/dist/commands/paths.command.d.ts +6 -0
  223. package/dist/commands/paths.command.d.ts.map +1 -0
  224. package/dist/commands/paths.command.js +97 -0
  225. package/dist/commands/pipelines.command.d.ts +9 -0
  226. package/dist/commands/pipelines.command.d.ts.map +1 -0
  227. package/dist/commands/pipelines.command.js +308 -0
  228. package/dist/commands/plan-check.command.d.ts +27 -0
  229. package/dist/commands/plan-check.command.d.ts.map +1 -0
  230. package/dist/commands/plan-check.command.js +150 -0
  231. package/dist/commands/plan-simulate.command.d.ts +3 -0
  232. package/dist/commands/plan-simulate.command.d.ts.map +1 -0
  233. package/dist/commands/plan-simulate.command.js +60 -0
  234. package/dist/commands/plan.command.d.ts +8 -0
  235. package/dist/commands/plan.command.d.ts.map +1 -0
  236. package/dist/commands/plan.command.js +139 -0
  237. package/dist/commands/playbooks.command.d.ts +10 -0
  238. package/dist/commands/playbooks.command.d.ts.map +1 -0
  239. package/dist/commands/playbooks.command.js +296 -0
  240. package/dist/commands/plugin.command.d.ts +11 -0
  241. package/dist/commands/plugin.command.d.ts.map +1 -0
  242. package/dist/commands/plugin.command.js +394 -0
  243. package/dist/commands/policy.command.d.ts +8 -0
  244. package/dist/commands/policy.command.d.ts.map +1 -0
  245. package/dist/commands/policy.command.js +451 -0
  246. package/dist/commands/pr.command.d.ts +3 -0
  247. package/dist/commands/pr.command.d.ts.map +1 -0
  248. package/dist/commands/pr.command.js +132 -0
  249. package/dist/commands/preflight.command.d.ts +3 -0
  250. package/dist/commands/preflight.command.d.ts.map +1 -0
  251. package/dist/commands/preflight.command.js +102 -0
  252. package/dist/commands/presets.command.d.ts +17 -0
  253. package/dist/commands/presets.command.d.ts.map +1 -0
  254. package/dist/commands/presets.command.js +647 -0
  255. package/dist/commands/profiles.command.d.ts +7 -0
  256. package/dist/commands/profiles.command.d.ts.map +1 -0
  257. package/dist/commands/profiles.command.js +151 -0
  258. package/dist/commands/provenance.command.d.ts +26 -0
  259. package/dist/commands/provenance.command.d.ts.map +1 -0
  260. package/dist/commands/provenance.command.js +237 -0
  261. package/dist/commands/quality.command.d.ts +5 -0
  262. package/dist/commands/quality.command.d.ts.map +1 -0
  263. package/dist/commands/quality.command.js +69 -0
  264. package/dist/commands/recommend.command.d.ts +4 -0
  265. package/dist/commands/recommend.command.d.ts.map +1 -0
  266. package/dist/commands/recommend.command.js +270 -0
  267. package/dist/commands/registrations.command.d.ts +3 -0
  268. package/dist/commands/registrations.command.d.ts.map +1 -0
  269. package/dist/commands/registrations.command.js +300 -0
  270. package/dist/commands/registry.command.d.ts +4 -0
  271. package/dist/commands/registry.command.d.ts.map +1 -0
  272. package/dist/commands/registry.command.js +37 -0
  273. package/dist/commands/release.command.d.ts +4 -0
  274. package/dist/commands/release.command.d.ts.map +1 -0
  275. package/dist/commands/release.command.js +639 -0
  276. package/dist/commands/repo.command.d.ts +3 -0
  277. package/dist/commands/repo.command.d.ts.map +1 -0
  278. package/dist/commands/repo.command.js +24 -0
  279. package/dist/commands/report.command.d.ts +3 -0
  280. package/dist/commands/report.command.d.ts.map +1 -0
  281. package/dist/commands/report.command.js +511 -0
  282. package/dist/commands/reposet.command.d.ts +6 -0
  283. package/dist/commands/reposet.command.d.ts.map +1 -0
  284. package/dist/commands/reposet.command.js +120 -0
  285. package/dist/commands/review.command.d.ts +3 -0
  286. package/dist/commands/review.command.d.ts.map +1 -0
  287. package/dist/commands/review.command.js +354 -0
  288. package/dist/commands/risk.command.d.ts +3 -0
  289. package/dist/commands/risk.command.d.ts.map +1 -0
  290. package/dist/commands/risk.command.js +56 -0
  291. package/dist/commands/rounds.command.d.ts +8 -0
  292. package/dist/commands/rounds.command.d.ts.map +1 -0
  293. package/dist/commands/rounds.command.js +180 -0
  294. package/dist/commands/rules.command.d.ts +49 -0
  295. package/dist/commands/rules.command.d.ts.map +1 -0
  296. package/dist/commands/rules.command.js +435 -0
  297. package/dist/commands/runtime.command.d.ts +3 -0
  298. package/dist/commands/runtime.command.d.ts.map +1 -0
  299. package/dist/commands/runtime.command.js +56 -0
  300. package/dist/commands/safety.command.d.ts +3 -0
  301. package/dist/commands/safety.command.d.ts.map +1 -0
  302. package/dist/commands/safety.command.js +117 -0
  303. package/dist/commands/scaffolds.command.d.ts +5 -0
  304. package/dist/commands/scaffolds.command.d.ts.map +1 -0
  305. package/dist/commands/scaffolds.command.js +122 -0
  306. package/dist/commands/schemas.command.d.ts +21 -0
  307. package/dist/commands/schemas.command.d.ts.map +1 -0
  308. package/dist/commands/schemas.command.js +296 -0
  309. package/dist/commands/search.command.d.ts +12 -0
  310. package/dist/commands/search.command.d.ts.map +1 -0
  311. package/dist/commands/search.command.js +275 -0
  312. package/dist/commands/self-config.command.d.ts +7 -0
  313. package/dist/commands/self-config.command.d.ts.map +1 -0
  314. package/dist/commands/self-config.command.js +156 -0
  315. package/dist/commands/self.command.d.ts +3 -0
  316. package/dist/commands/self.command.d.ts.map +1 -0
  317. package/dist/commands/self.command.js +117 -0
  318. package/dist/commands/simulate.command.d.ts +3 -0
  319. package/dist/commands/simulate.command.d.ts.map +1 -0
  320. package/dist/commands/simulate.command.js +54 -0
  321. package/dist/commands/spec.command.d.ts +29 -0
  322. package/dist/commands/spec.command.d.ts.map +1 -0
  323. package/dist/commands/spec.command.js +985 -0
  324. package/dist/commands/start-here.command.d.ts +3 -0
  325. package/dist/commands/start-here.command.d.ts.map +1 -0
  326. package/dist/commands/start-here.command.js +35 -0
  327. package/dist/commands/stats.command.d.ts +3 -0
  328. package/dist/commands/stats.command.d.ts.map +1 -0
  329. package/dist/commands/stats.command.js +88 -0
  330. package/dist/commands/surface.command.d.ts +15 -0
  331. package/dist/commands/surface.command.d.ts.map +1 -0
  332. package/dist/commands/surface.command.js +328 -0
  333. package/dist/commands/task-context.command.d.ts +7 -0
  334. package/dist/commands/task-context.command.d.ts.map +1 -0
  335. package/dist/commands/task-context.command.js +646 -0
  336. package/dist/commands/task.command.d.ts +3 -0
  337. package/dist/commands/task.command.d.ts.map +1 -0
  338. package/dist/commands/task.command.js +301 -0
  339. package/dist/commands/template-quality.command.d.ts +5 -0
  340. package/dist/commands/template-quality.command.d.ts.map +1 -0
  341. package/dist/commands/template-quality.command.js +128 -0
  342. package/dist/commands/templates.command.d.ts +26 -0
  343. package/dist/commands/templates.command.d.ts.map +1 -0
  344. package/dist/commands/templates.command.js +964 -0
  345. package/dist/commands/test.command.d.ts +3 -0
  346. package/dist/commands/test.command.d.ts.map +1 -0
  347. package/dist/commands/test.command.js +262 -0
  348. package/dist/commands/tests.command.d.ts +5 -0
  349. package/dist/commands/tests.command.d.ts.map +1 -0
  350. package/dist/commands/tests.command.js +97 -0
  351. package/dist/commands/trace.command.d.ts +3 -0
  352. package/dist/commands/trace.command.d.ts.map +1 -0
  353. package/dist/commands/trace.command.js +121 -0
  354. package/dist/commands/upgrade.command.d.ts +4 -0
  355. package/dist/commands/upgrade.command.d.ts.map +1 -0
  356. package/dist/commands/upgrade.command.js +43 -0
  357. package/dist/commands/version.command.d.ts +3 -0
  358. package/dist/commands/version.command.d.ts.map +1 -0
  359. package/dist/commands/version.command.js +10 -0
  360. package/dist/commands/why.command.d.ts +24 -0
  361. package/dist/commands/why.command.d.ts.map +1 -0
  362. package/dist/commands/why.command.js +119 -0
  363. package/dist/dashboard/dashboard-api-server.d.ts +21 -0
  364. package/dist/dashboard/dashboard-api-server.d.ts.map +1 -0
  365. package/dist/dashboard/dashboard-api-server.js +410 -0
  366. package/dist/dashboard/live-session-server.d.ts +18 -0
  367. package/dist/dashboard/live-session-server.d.ts.map +1 -0
  368. package/dist/dashboard/live-session-server.js +133 -0
  369. package/dist/diff/collect-changed-paths.d.ts +27 -0
  370. package/dist/diff/collect-changed-paths.d.ts.map +1 -0
  371. package/dist/diff/collect-changed-paths.js +68 -0
  372. package/dist/doctor/doctor-tags.d.ts +63 -0
  373. package/dist/doctor/doctor-tags.d.ts.map +1 -0
  374. package/dist/doctor/doctor-tags.js +146 -0
  375. package/dist/export/export-formats.d.ts +22 -0
  376. package/dist/export/export-formats.d.ts.map +1 -0
  377. package/dist/export/export-formats.js +135 -0
  378. package/dist/index.d.ts +22 -0
  379. package/dist/index.d.ts.map +1 -0
  380. package/dist/index.js +21 -0
  381. package/dist/init/detected-block.d.ts +57 -0
  382. package/dist/init/detected-block.d.ts.map +1 -0
  383. package/dist/init/detected-block.js +197 -0
  384. package/dist/init/gitignore.d.ts +30 -0
  385. package/dist/init/gitignore.d.ts.map +1 -0
  386. package/dist/init/gitignore.js +110 -0
  387. package/dist/init/init-templates.d.ts +6 -0
  388. package/dist/init/init-templates.d.ts.map +1 -0
  389. package/dist/init/init-templates.js +413 -0
  390. package/dist/main.d.ts +18 -0
  391. package/dist/main.d.ts.map +1 -0
  392. package/dist/main.js +699 -0
  393. package/dist/output/failure-hints.d.ts +55 -0
  394. package/dist/output/failure-hints.d.ts.map +1 -0
  395. package/dist/output/failure-hints.js +159 -0
  396. package/dist/output/format-output.d.ts +9 -0
  397. package/dist/output/format-output.d.ts.map +1 -0
  398. package/dist/output/format-output.js +26 -0
  399. package/dist/output/print-error.d.ts +3 -0
  400. package/dist/output/print-error.d.ts.map +1 -0
  401. package/dist/output/print-error.js +14 -0
  402. package/dist/output/watch-loop.d.ts +37 -0
  403. package/dist/output/watch-loop.d.ts.map +1 -0
  404. package/dist/output/watch-loop.js +115 -0
  405. package/dist/schemas/json-schemas.d.ts +1630 -0
  406. package/dist/schemas/json-schemas.d.ts.map +1 -0
  407. package/dist/schemas/json-schemas.js +811 -0
  408. package/dist/surface/about.d.ts +10 -0
  409. package/dist/surface/about.d.ts.map +1 -0
  410. package/dist/surface/about.js +53 -0
  411. package/dist/surface/load-surface-context.d.ts +34 -0
  412. package/dist/surface/load-surface-context.d.ts.map +1 -0
  413. package/dist/surface/load-surface-context.js +100 -0
  414. package/dist/surface/no-args-landing.d.ts +7 -0
  415. package/dist/surface/no-args-landing.d.ts.map +1 -0
  416. package/dist/surface/no-args-landing.js +36 -0
  417. package/dist/surface/not-enabled-error.d.ts +24 -0
  418. package/dist/surface/not-enabled-error.d.ts.map +1 -0
  419. package/dist/surface/not-enabled-error.js +36 -0
  420. package/dist/surface/profiles.d.ts +37 -0
  421. package/dist/surface/profiles.d.ts.map +1 -0
  422. package/dist/surface/profiles.js +151 -0
  423. package/dist/surface/shape-defaults.d.ts +21 -0
  424. package/dist/surface/shape-defaults.d.ts.map +1 -0
  425. package/dist/surface/shape-defaults.js +50 -0
  426. package/dist/surface/spine-extractor.d.ts +38 -0
  427. package/dist/surface/spine-extractor.d.ts.map +1 -0
  428. package/dist/surface/spine-extractor.js +100 -0
  429. package/dist/surface/surface-config-writer.d.ts +59 -0
  430. package/dist/surface/surface-config-writer.d.ts.map +1 -0
  431. package/dist/surface/surface-config-writer.js +135 -0
  432. package/dist/surface/surface-summary.d.ts +66 -0
  433. package/dist/surface/surface-summary.d.ts.map +1 -0
  434. package/dist/surface/surface-summary.js +162 -0
  435. package/dist/surface/tier.d.ts +100 -0
  436. package/dist/surface/tier.d.ts.map +1 -0
  437. package/dist/surface/tier.js +172 -0
  438. package/dist/task-next/apply-batch-runner.d.ts +42 -0
  439. package/dist/task-next/apply-batch-runner.d.ts.map +1 -0
  440. package/dist/task-next/apply-batch-runner.js +192 -0
  441. package/dist/task-next/task-next-ranker.d.ts +75 -0
  442. package/dist/task-next/task-next-ranker.d.ts.map +1 -0
  443. package/dist/task-next/task-next-ranker.js +179 -0
  444. package/dist/usage/usage-log.d.ts +54 -0
  445. package/dist/usage/usage-log.d.ts.map +1 -0
  446. package/dist/usage/usage-log.js +105 -0
  447. package/dist/validation/run-validation-loop.d.ts +38 -0
  448. package/dist/validation/run-validation-loop.d.ts.map +1 -0
  449. package/dist/validation/run-validation-loop.js +100 -0
  450. package/package.json +73 -0
@@ -0,0 +1,300 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import * as nodePath from 'node:path';
3
+ import { buildLanguageCommandReport, buildLanguageRunPlan, buildPolyglotBoundaryReport, clearLanguageCache, computePolyglotTestImpact, defaultLanguageRunReportPath, detectLanguageProfiles, detectLanguageProfilesWithCache, getLanguageCacheStatus, LanguageId, renderLanguageCommandsMarkdown, renderLanguageCommandsText, renderLanguageProfilesMarkdown, renderLanguageProfilesText, renderLanguageRunPlanJson, renderLanguageRunPlanMarkdown, renderLanguageRunPlanText, renderPolyglotBoundaryReportJson, renderPolyglotBoundaryReportMarkdown, renderPolyglotBoundaryReportText, renderPolyglotDependenciesText, renderPolyglotTestImpactText, scanPolyglotDependencies, } from '@shrkcrft/inspector';
4
+ import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
5
+ import { asJson } from "../output/format-output.js";
6
+ function writeOutOrPrint(args, cwd, body) {
7
+ const out = flagString(args, 'output');
8
+ if (out) {
9
+ const abs = nodePath.isAbsolute(out) ? out : nodePath.resolve(cwd, out);
10
+ mkdirSync(nodePath.dirname(abs), { recursive: true });
11
+ writeFileSync(abs, body, 'utf8');
12
+ process.stdout.write(`Wrote ${abs}\n`);
13
+ return 0;
14
+ }
15
+ process.stdout.write(body);
16
+ return 0;
17
+ }
18
+ const SHARKCRAFT_VERSION = '0.1.0';
19
+ const languagesDetectCommand = {
20
+ name: 'detect',
21
+ description: 'Detect language profiles in the current project (TS/JS/Java/C#/Python/Go/Rust). Read-only. Pass --cache to use/refresh the language cache.',
22
+ usage: 'shrk languages detect [--format text|markdown|json] [--cache] [--refresh-cache] [--output <file>]',
23
+ async run(args) {
24
+ const cwd = resolveCwd(args);
25
+ const useCache = flagBool(args, 'cache');
26
+ const refreshCache = flagBool(args, 'refresh-cache');
27
+ let report;
28
+ let cacheHit = false;
29
+ let staleReasons = [];
30
+ if (useCache || refreshCache) {
31
+ const r = detectLanguageProfilesWithCache({ projectRoot: cwd, sharkcraftVersion: SHARKCRAFT_VERSION, useCache, refresh: refreshCache });
32
+ report = r.report;
33
+ cacheHit = r.cacheHit;
34
+ staleReasons = r.staleReasons;
35
+ }
36
+ else {
37
+ report = detectLanguageProfiles(cwd);
38
+ }
39
+ const format = (flagString(args, 'format') ?? 'text').toLowerCase();
40
+ let body;
41
+ if (format === 'json' || flagBool(args, 'json')) {
42
+ body = asJson({ ...report, _cacheHit: cacheHit, _staleReasons: staleReasons }) + '\n';
43
+ }
44
+ else if (format === 'markdown' || format === 'md') {
45
+ body = renderLanguageProfilesMarkdown(report);
46
+ if (cacheHit)
47
+ body += `\n_(loaded from cache; stale: ${staleReasons.length > 0})_\n`;
48
+ }
49
+ else {
50
+ body = renderLanguageProfilesText(report);
51
+ if (cacheHit)
52
+ body += `\n(loaded from cache; stale: ${staleReasons.length > 0})\n`;
53
+ }
54
+ return writeOutOrPrint(args, cwd, body);
55
+ },
56
+ };
57
+ const languagesCacheCommand = {
58
+ name: 'cache',
59
+ description: 'Language profile cache: `shrk languages cache status` / `cache clear --write`. Default dry-run.',
60
+ usage: 'shrk languages cache <status|clear> [--write] [--json]',
61
+ async run(args) {
62
+ const cwd = resolveCwd(args);
63
+ const sub = args.positional[0] ?? 'status';
64
+ if (sub === 'status') {
65
+ const status = getLanguageCacheStatus(cwd, SHARKCRAFT_VERSION);
66
+ if (flagBool(args, 'json')) {
67
+ process.stdout.write(asJson(status) + '\n');
68
+ return 0;
69
+ }
70
+ process.stdout.write(`=== Language cache ===\n`);
71
+ process.stdout.write(` file: ${status.cacheFile}\n`);
72
+ process.stdout.write(` exists: ${status.exists ? 'yes' : 'no'}\n`);
73
+ if (status.exists) {
74
+ process.stdout.write(` cached at: ${status.cachedAt ?? '(unknown)'}\n`);
75
+ process.stdout.write(` fresh: ${status.fresh ? 'yes' : 'no'}\n`);
76
+ if (status.staleReasons.length > 0) {
77
+ process.stdout.write(` stale because:\n`);
78
+ for (const r of status.staleReasons)
79
+ process.stdout.write(` - ${r}\n`);
80
+ }
81
+ }
82
+ return 0;
83
+ }
84
+ if (sub === 'clear') {
85
+ const write = flagBool(args, 'write');
86
+ const res = clearLanguageCache(cwd, { write });
87
+ if (flagBool(args, 'json')) {
88
+ process.stdout.write(asJson(res) + '\n');
89
+ return 0;
90
+ }
91
+ if (!write) {
92
+ process.stdout.write(`Would remove ${res.cacheFile}\n (re-run with --write to actually delete)\n`);
93
+ }
94
+ else {
95
+ process.stdout.write(res.cleared ? `Removed ${res.cacheFile}\n` : `Nothing to remove at ${res.cacheFile}\n`);
96
+ }
97
+ return 0;
98
+ }
99
+ process.stderr.write(`Unknown subcommand: ${sub}\n`);
100
+ return 2;
101
+ },
102
+ };
103
+ const languagesRunCommand = {
104
+ name: 'run',
105
+ description: 'Plan or execute a language command (test/build/lint/format/check/typecheck). Dry-run by default; --execute to run; --allow-install to permit install/restore.',
106
+ usage: 'shrk languages run [--category test|build|lint|format|check|all] [--language <id>] [--command-id <lang.cat>] [--all-tests] [--execute] [--allow-install] [--report] [--format text|markdown|json]',
107
+ async run(args) {
108
+ const cwd = resolveCwd(args);
109
+ const category = (flagString(args, 'category') ?? 'test');
110
+ const language = flagString(args, 'language');
111
+ const commandId = flagString(args, 'command-id');
112
+ const allTests = flagBool(args, 'all-tests');
113
+ const execute = flagBool(args, 'execute');
114
+ const allowInstall = flagBool(args, 'allow-install');
115
+ const wantReport = flagBool(args, 'report');
116
+ const format = (flagString(args, 'format') ?? 'text').toLowerCase();
117
+ // Optional policy explanation block.
118
+ const explainPolicy = flagBool(args, 'explain-policy');
119
+ const plan = buildLanguageRunPlan({
120
+ projectRoot: cwd,
121
+ category,
122
+ ...(language ? { language } : {}),
123
+ ...(commandId ? { commandId } : {}),
124
+ allTests,
125
+ execute,
126
+ allowInstall,
127
+ });
128
+ if (explainPolicy) {
129
+ const { getLanguageRunnerPolicy, explainCommandPolicy } = await import('@shrkcrft/inspector');
130
+ const policy = getLanguageRunnerPolicy(cwd);
131
+ const decisions = plan.steps.map((s) => ({
132
+ command: s.command,
133
+ decision: explainCommandPolicy(s.command, cwd),
134
+ }));
135
+ const body = JSON.stringify({ policy, decisions }, null, 2) + '\n';
136
+ return writeOutOrPrint(args, cwd, body);
137
+ }
138
+ if (wantReport) {
139
+ const reportPath = defaultLanguageRunReportPath(cwd, plan.generatedAt);
140
+ mkdirSync(nodePath.dirname(reportPath), { recursive: true });
141
+ writeFileSync(reportPath, renderLanguageRunPlanJson(plan), 'utf8');
142
+ process.stderr.write(`wrote ${reportPath}\n`);
143
+ }
144
+ let body;
145
+ if (format === 'json' || flagBool(args, 'json'))
146
+ body = renderLanguageRunPlanJson(plan) + '\n';
147
+ else if (format === 'markdown' || format === 'md')
148
+ body = renderLanguageRunPlanMarkdown(plan);
149
+ else
150
+ body = renderLanguageRunPlanText(plan);
151
+ return writeOutOrPrint(args, cwd, body);
152
+ },
153
+ };
154
+ const languagesBoundariesCommand = {
155
+ name: 'boundaries',
156
+ description: 'Polyglot boundary enforcement report. Read-only.',
157
+ usage: 'shrk languages boundaries [--language java|csharp|python|go|rust|all] [--format text|markdown|json] [--output <file>]',
158
+ async run(args) {
159
+ const cwd = resolveCwd(args);
160
+ const langFlag = (flagString(args, 'language') ?? 'all').toLowerCase();
161
+ const languages = langFlag === 'all'
162
+ ? undefined
163
+ : [langFlag];
164
+ const report = buildPolyglotBoundaryReport({ projectRoot: cwd, ...(languages ? { languages } : {}) });
165
+ const format = (flagString(args, 'format') ?? 'text').toLowerCase();
166
+ let body;
167
+ if (format === 'json' || flagBool(args, 'json'))
168
+ body = renderPolyglotBoundaryReportJson(report) + '\n';
169
+ else if (format === 'markdown' || format === 'md')
170
+ body = renderPolyglotBoundaryReportMarkdown(report);
171
+ else
172
+ body = renderPolyglotBoundaryReportText(report);
173
+ return writeOutOrPrint(args, cwd, body);
174
+ },
175
+ };
176
+ const languagesCommandsCommand = {
177
+ name: 'commands',
178
+ description: 'Infer install / test / typecheck / lint / build commands per detected language. Read-only.',
179
+ usage: 'shrk languages commands [--format text|markdown|json] [--output <file>]',
180
+ async run(args) {
181
+ const cwd = resolveCwd(args);
182
+ const report = buildLanguageCommandReport(cwd);
183
+ const format = (flagString(args, 'format') ?? 'text').toLowerCase();
184
+ let body;
185
+ if (format === 'json' || flagBool(args, 'json'))
186
+ body = asJson(report) + '\n';
187
+ else if (format === 'markdown' || format === 'md')
188
+ body = renderLanguageCommandsMarkdown(report);
189
+ else
190
+ body = renderLanguageCommandsText(report);
191
+ return writeOutOrPrint(args, cwd, body);
192
+ },
193
+ };
194
+ const languagesDepsCommand = {
195
+ name: 'deps',
196
+ description: 'Scan polyglot dependency graph (Java/C#/Python/Go/Rust imports). Read-only.',
197
+ usage: 'shrk languages deps [--language java|csharp|python|go|rust|all] [--format text|json] [--output <file>]',
198
+ async run(args) {
199
+ const cwd = resolveCwd(args);
200
+ const langFlag = (flagString(args, 'language') ?? 'all').toLowerCase();
201
+ const languages = langFlag === 'all'
202
+ ? [LanguageId.Java, LanguageId.CSharp, LanguageId.Python, LanguageId.Go, LanguageId.Rust]
203
+ : [langFlag];
204
+ const graph = scanPolyglotDependencies(cwd, { languages });
205
+ const format = (flagString(args, 'format') ?? 'text').toLowerCase();
206
+ let body;
207
+ if (format === 'json' || flagBool(args, 'json'))
208
+ body = asJson(graph) + '\n';
209
+ else
210
+ body = renderPolyglotDependenciesText(graph);
211
+ return writeOutOrPrint(args, cwd, body);
212
+ },
213
+ };
214
+ const languagesTestsCommand = {
215
+ name: 'tests',
216
+ description: 'Predict per-language test files impacted by a set of changed source files. Read-only.',
217
+ usage: 'shrk languages tests --files a,b,c [--format text|json] [--output <file>]',
218
+ async run(args) {
219
+ const cwd = resolveCwd(args);
220
+ const filesFlag = flagString(args, 'files');
221
+ if (!filesFlag) {
222
+ process.stderr.write('--files <a,b,c> is required.\n');
223
+ return 2;
224
+ }
225
+ const files = filesFlag.split(',').map((f) => f.trim()).filter(Boolean);
226
+ const report = computePolyglotTestImpact(cwd, files);
227
+ const format = (flagString(args, 'format') ?? 'text').toLowerCase();
228
+ let body;
229
+ if (format === 'json' || flagBool(args, 'json'))
230
+ body = asJson(report) + '\n';
231
+ else
232
+ body = renderPolyglotTestImpactText(report);
233
+ return writeOutOrPrint(args, cwd, body);
234
+ },
235
+ };
236
+ export const languagesCommand = {
237
+ name: 'languages',
238
+ description: 'Polyglot language support: detect language profiles, infer commands, scan dependencies, predict test impact, enforce boundaries, run safe commands, manage cache. Read-only by default.',
239
+ usage: 'shrk languages <detect|commands|deps|tests|boundaries|run|cache> [...]',
240
+ async run(args) {
241
+ const sub = args.positional[0];
242
+ if (!sub) {
243
+ process.stderr.write('Usage: shrk languages <detect|commands|deps|tests|boundaries|run|cache>\n');
244
+ return 2;
245
+ }
246
+ const next = { ...args, positional: args.positional.slice(1) };
247
+ if (sub === 'detect')
248
+ return (await languagesDetectCommand.run(next));
249
+ if (sub === 'commands')
250
+ return (await languagesCommandsCommand.run(next));
251
+ if (sub === 'deps')
252
+ return (await languagesDepsCommand.run(next));
253
+ if (sub === 'tests')
254
+ return (await languagesTestsCommand.run(next));
255
+ if (sub === 'boundaries')
256
+ return (await languagesBoundariesCommand.run(next));
257
+ if (sub === 'run')
258
+ return (await languagesRunCommand.run(next));
259
+ if (sub === 'cache')
260
+ return (await languagesCacheCommand.run(next));
261
+ if (sub === 'runner') {
262
+ const sub2 = next.positional[0];
263
+ const next2 = { ...next, positional: next.positional.slice(1) };
264
+ if (sub2 === 'config')
265
+ return (await languagesRunnerConfigCommand.run(next2));
266
+ process.stderr.write(`Usage: shrk languages runner config\n`);
267
+ return 2;
268
+ }
269
+ process.stderr.write(`Unknown subcommand: ${sub}\n`);
270
+ return 2;
271
+ },
272
+ };
273
+ const languagesRunnerConfigCommand = {
274
+ name: 'config',
275
+ description: 'Show the language runner policy (allowlist + denylist + built-in deny patterns). Read-only.',
276
+ usage: 'shrk languages runner config [--json]',
277
+ async run(args) {
278
+ const cwd = resolveCwd(args);
279
+ const { getLanguageRunnerPolicy } = await import('@shrkcrft/inspector');
280
+ const policy = getLanguageRunnerPolicy(cwd);
281
+ if (flagBool(args, 'json')) {
282
+ process.stdout.write(asJson(policy) + '\n');
283
+ return 0;
284
+ }
285
+ process.stdout.write('=== Language runner policy ===\n');
286
+ process.stdout.write(` source: ${policy.source}\n`);
287
+ process.stdout.write(` allow: ${policy.allow.length}\n`);
288
+ for (const a of policy.allow) {
289
+ process.stdout.write(` + ${a.command}${a.reason ? ` (${a.reason})` : ''}\n`);
290
+ }
291
+ process.stdout.write(` deny: ${policy.deny.length}\n`);
292
+ for (const d of policy.deny) {
293
+ process.stdout.write(` - /${d.pattern}/${d.reason ? ` (${d.reason})` : ''}\n`);
294
+ }
295
+ process.stdout.write(` built-in deny: ${policy.builtinDeny.length}\n`);
296
+ for (const b of policy.builtinDeny)
297
+ process.stdout.write(` - /${b}/\n`);
298
+ return 0;
299
+ },
300
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Unified `shrk lint` verb.
3
+ *
4
+ * Pure CLI aggregator over the per-kind doctor / lint surfaces:
5
+ * - knowledge → `lintKnowledge` + `buildKnowledgeLintFixPreview`
6
+ * - rules → `diagnoseRuleQuality`
7
+ * - templates → `buildTemplateDriftReport`
8
+ *
9
+ * No new domain logic. Layer order preserved (inspector → cli only).
10
+ * The per-kind verbs (`knowledge lint`, `rules doctor`, `rules lint`,
11
+ * `templates doctor`, `templates drift`) keep working unchanged.
12
+ */
13
+ import { type ICommandHandler } from '../command-registry.js';
14
+ export declare const lintCommand: ICommandHandler;
15
+ //# sourceMappingURL=lint.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.command.d.ts","sourceRoot":"","sources":["../../src/commands/lint.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAmBhC,eAAO,MAAM,WAAW,EAAE,eAuHzB,CAAC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Unified `shrk lint` verb.
3
+ *
4
+ * Pure CLI aggregator over the per-kind doctor / lint surfaces:
5
+ * - knowledge → `lintKnowledge` + `buildKnowledgeLintFixPreview`
6
+ * - rules → `diagnoseRuleQuality`
7
+ * - templates → `buildTemplateDriftReport`
8
+ *
9
+ * No new domain logic. Layer order preserved (inspector → cli only).
10
+ * The per-kind verbs (`knowledge lint`, `rules doctor`, `rules lint`,
11
+ * `templates doctor`, `templates drift`) keep working unchanged.
12
+ */
13
+ import { buildKnowledgeLintFixPreview, buildKnowledgeStaleReport, buildTemplateDriftReport, diagnoseRuleQuality, inspectSharkcraft, lintKnowledge, ReferenceCheckOutcome, TemplateDriftStatus, } from '@shrkcrft/inspector';
14
+ import { flagBool, flagList, flagString, resolveCwd, } from "../command-registry.js";
15
+ import { asJson, header } from "../output/format-output.js";
16
+ import { collectChangedPaths } from "../diff/collect-changed-paths.js";
17
+ function parseKind(value) {
18
+ switch ((value ?? 'all').toLowerCase()) {
19
+ case 'knowledge':
20
+ return 'knowledge';
21
+ case 'rules':
22
+ return 'rules';
23
+ case 'templates':
24
+ return 'templates';
25
+ default:
26
+ return 'all';
27
+ }
28
+ }
29
+ export const lintCommand = {
30
+ name: 'lint',
31
+ description: 'Unified lint aggregator. Runs knowledge / rules / templates per-kind doctors in one pass. `--since <ref>` annotates the run with diff-aware metadata (lints themselves run whole-graph and emit a notice).',
32
+ usage: 'shrk lint [--kind knowledge|rules|templates|all] [--strict] [--fix-preview] [--since <ref>] [--json]',
33
+ async run(args) {
34
+ const cwd = resolveCwd(args);
35
+ const inspection = await inspectSharkcraft({ cwd });
36
+ const kind = parseKind(flagString(args, 'kind'));
37
+ const strict = flagBool(args, 'strict');
38
+ const fixPreview = flagBool(args, 'fix-preview');
39
+ const wantJson = flagBool(args, 'json');
40
+ // Diff-aware metadata. The per-kind lints operate on the
41
+ // whole asset graph (entries / rules / templates), so `--since`
42
+ // is recorded in the report but does not restrict the lint. Add
43
+ // a one-line notice in the text render so the user knows.
44
+ const sinceRaw = args.flags.get('since');
45
+ const since = typeof sinceRaw === 'string'
46
+ ? collectChangedPaths({ cwd, ref: sinceRaw })
47
+ : sinceRaw === true
48
+ ? collectChangedPaths({ cwd })
49
+ : null;
50
+ const knowledgePart = kind === 'all' || kind === 'knowledge'
51
+ ? runKnowledgeLint(inspection, { fixPreview })
52
+ : null;
53
+ const rulesPart = kind === 'all' || kind === 'rules' ? runRulesLint(inspection, { strict }) : null;
54
+ const templatesPart = kind === 'all' || kind === 'templates'
55
+ ? runTemplatesLint(inspection, { strict })
56
+ : null;
57
+ // Knowledge lint emits info/warning only; we no longer carry a
58
+ // hardcoded errors=0 through the totals. Errors come from rules and
59
+ // templates whose underlying doctors actually emit error severity.
60
+ const errors = (rulesPart?.errors ?? 0) + (templatesPart?.errors ?? 0);
61
+ const warnings = (knowledgePart?.warnings ?? 0) +
62
+ (rulesPart?.warnings ?? 0) +
63
+ (templatesPart?.warnings ?? 0);
64
+ const ready = errors === 0 && (!strict || warnings === 0);
65
+ if (wantJson) {
66
+ process.stdout.write(asJson({
67
+ // Schema v2: knowledge.errors field removed (was hardcoded
68
+ // to 0); totals now reflect rules+templates only.
69
+ schema: 'sharkcraft.lint/v2',
70
+ generatedAt: new Date().toISOString(),
71
+ kind,
72
+ strict,
73
+ fixPreview,
74
+ totals: { errors, warnings, ready },
75
+ ...(since
76
+ ? {
77
+ since: {
78
+ ref: since.ref,
79
+ available: since.isAvailable,
80
+ changedPaths: since.changed.length,
81
+ note: 'whole-graph lints ignore --since; reported here for tooling parity',
82
+ ...(since.error ? { error: since.error } : {}),
83
+ },
84
+ }
85
+ : {}),
86
+ ...(knowledgePart ? { knowledge: knowledgePart } : {}),
87
+ ...(rulesPart ? { rules: rulesPart } : {}),
88
+ ...(templatesPart ? { templates: templatesPart } : {}),
89
+ }) + '\n');
90
+ return ready ? 0 : 1;
91
+ }
92
+ process.stdout.write(header(`Lint — ${kind}${strict ? ' (strict)' : ''}`));
93
+ if (since) {
94
+ process.stdout.write(` --since ${since.ref}${since.isAvailable ? ` (${since.changed.length} changed)` : ' (unavailable)'} — whole-graph lints run regardless\n\n`);
95
+ }
96
+ if (knowledgePart) {
97
+ process.stdout.write(` knowledge: ${knowledgePart.warnings} warnings (${knowledgePart.findings} findings)\n`);
98
+ }
99
+ if (rulesPart) {
100
+ process.stdout.write(` rules: ${rulesPart.errors} errors, ${rulesPart.warnings} warnings (${rulesPart.findings} findings)\n`);
101
+ }
102
+ if (templatesPart) {
103
+ process.stdout.write(` templates: ${templatesPart.errors} errors, ${templatesPart.warnings} warnings across ${templatesPart.totalTemplates} template(s)\n`);
104
+ }
105
+ process.stdout.write(`\n totals: ${errors} errors, ${warnings} warnings\n`);
106
+ if (ready) {
107
+ process.stdout.write('\nClean. ✓\n');
108
+ }
109
+ else {
110
+ process.stdout.write('\nIssues found. Drill in:\n' +
111
+ (knowledgePart && knowledgePart.warnings > 0
112
+ ? ' $ shrk knowledge lint --fix-preview\n'
113
+ : '') +
114
+ (rulesPart && (rulesPart.errors > 0 || rulesPart.warnings > 0)
115
+ ? ' $ shrk rules doctor --strict\n'
116
+ : '') +
117
+ (templatesPart && (templatesPart.errors > 0 || templatesPart.warnings > 0)
118
+ ? ' $ shrk templates drift --min-severity warning\n'
119
+ : ''));
120
+ }
121
+ return ready ? 0 : 1;
122
+ },
123
+ };
124
+ function runKnowledgeLint(inspection, options) {
125
+ const stale = buildKnowledgeStaleReport(inspection);
126
+ const staleIds = new Set();
127
+ for (const c of stale.referenceChecks) {
128
+ if (c.outcome === ReferenceCheckOutcome.Stale ||
129
+ c.outcome === ReferenceCheckOutcome.Missing) {
130
+ staleIds.add(c.entryId);
131
+ }
132
+ }
133
+ const report = lintKnowledge(inspection.knowledgeEntries, {
134
+ staleReferenceEntryIds: [...staleIds],
135
+ });
136
+ const warnings = report.findings.filter((f) => f.severity === 'warning' && !f.advisory).length;
137
+ const categories = {};
138
+ for (const f of report.findings) {
139
+ categories[f.category] = (categories[f.category] ?? 0) + 1;
140
+ }
141
+ const summary = {
142
+ warnings,
143
+ findings: report.findings.length,
144
+ categories,
145
+ staleReferences: stale.referenceChecks.filter((c) => c.outcome === ReferenceCheckOutcome.Stale ||
146
+ c.outcome === ReferenceCheckOutcome.Missing).length,
147
+ };
148
+ if (options.fixPreview) {
149
+ summary.fixPreview = buildKnowledgeLintFixPreview(report);
150
+ }
151
+ return summary;
152
+ }
153
+ function runRulesLint(inspection, _options) {
154
+ const rules = inspection.ruleService.list();
155
+ const knownVerificationIds = new Set((inspection.config?.verificationCommands ?? []).map((c) => c.id));
156
+ const report = diagnoseRuleQuality(rules, {}, { knownVerificationIds });
157
+ const byCode = {};
158
+ for (const f of report.findings) {
159
+ byCode[f.code] = (byCode[f.code] ?? 0) + 1;
160
+ }
161
+ return {
162
+ errors: report.summary.errors,
163
+ warnings: report.summary.warnings,
164
+ findings: report.findings.length,
165
+ byCode,
166
+ };
167
+ }
168
+ function runTemplatesLint(inspection, _options) {
169
+ const drift = buildTemplateDriftReport(inspection, {});
170
+ let errors = 0;
171
+ let warnings = 0;
172
+ let passing = 0;
173
+ const byCode = {};
174
+ for (const e of drift.entries) {
175
+ if (e.status === TemplateDriftStatus.Pass)
176
+ passing++;
177
+ for (const i of e.issues) {
178
+ if (i.severity === 'error')
179
+ errors++;
180
+ else if (i.severity === 'warning')
181
+ warnings++;
182
+ byCode[i.code] = (byCode[i.code] ?? 0) + 1;
183
+ }
184
+ }
185
+ return {
186
+ totalTemplates: drift.entries.length,
187
+ errors,
188
+ warnings,
189
+ passing,
190
+ byCode,
191
+ };
192
+ }
193
+ // Silence unused-imports warnings if optional drill-in paths get rolled back.
194
+ void flagList;
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const mcpCommand: ICommandHandler;
3
+ //# sourceMappingURL=mcp.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.command.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAKhC,eAAO,MAAM,UAAU,EAAE,eAiCxB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { startMcpServer, } from '@shrkcrft/mcp-server';
2
+ import { flagBool, flagNumber, flagString, resolveCwd, } from "../command-registry.js";
3
+ import { printError } from "../output/print-error.js";
4
+ import { loadSurfaceContext } from "../surface/load-surface-context.js";
5
+ import { buildSurfaceSummary, findCommandInSummary } from "../surface/surface-summary.js";
6
+ export const mcpCommand = {
7
+ name: 'mcp',
8
+ description: 'MCP server operations (subcommand required).',
9
+ usage: 'shrk [--cwd <dir>] mcp serve [--verbose] [--watch] [--http] [--port <n>] [--host <h>]',
10
+ async run(args) {
11
+ const sub = args.positional[0];
12
+ if (sub === 'serve') {
13
+ try {
14
+ const cwd = resolveCwd(args);
15
+ const opts = {
16
+ cwd,
17
+ verbose: flagBool(args, 'verbose'),
18
+ watch: flagBool(args, 'watch'),
19
+ gateResolver: await buildMcpGateResolver(cwd),
20
+ };
21
+ if (flagBool(args, 'http')) {
22
+ opts.transport = 'http';
23
+ const host = flagString(args, 'host');
24
+ if (host)
25
+ opts.host = host;
26
+ const port = flagNumber(args, 'port');
27
+ if (port !== undefined)
28
+ opts.port = port;
29
+ }
30
+ await startMcpServer(opts);
31
+ return 0;
32
+ }
33
+ catch (e) {
34
+ printError(e instanceof Error ? e : new Error(String(e)));
35
+ return 1;
36
+ }
37
+ }
38
+ process.stderr.write('Usage: shrk mcp serve [--http] [--port N] [--watch]\n');
39
+ return 2;
40
+ },
41
+ };
42
+ /**
43
+ * Build the MCP tier-gate resolver from the surface summary.
44
+ * Returns a function that, given a tool, decides whether to refuse the
45
+ * call (when the tool's sibling CLI command is experimental and not
46
+ * enabled). Tools without `cliCommand` are always callable
47
+ * (bootstrap MCP-only tools).
48
+ *
49
+ * Failure-soft: any error building the summary returns a no-op
50
+ * resolver — the server stays open rather than failing closed on
51
+ * unrelated issues.
52
+ */
53
+ async function buildMcpGateResolver(cwd) {
54
+ try {
55
+ const { context } = await loadSurfaceContext({ cwd });
56
+ const summary = buildSurfaceSummary(context);
57
+ return (tool) => {
58
+ if (!tool.cliCommand)
59
+ return null;
60
+ const view = findCommandInSummary(summary, tool.cliCommand);
61
+ if (!view || view.callable)
62
+ return null;
63
+ return {
64
+ command: tool.cliCommand,
65
+ reason: view.detail
66
+ ? `Sibling CLI command \`${tool.cliCommand}\` is experimental: ${view.detail}.`
67
+ : `Sibling CLI command \`${tool.cliCommand}\` is experimental and not enabled.`,
68
+ };
69
+ };
70
+ }
71
+ catch {
72
+ return undefined;
73
+ }
74
+ }
@@ -0,0 +1,11 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const memoryBuildCommand: ICommandHandler;
3
+ export declare const memoryDiffCommand: ICommandHandler;
4
+ export declare const memoryDriftCommand: ICommandHandler;
5
+ export declare const memorySnapshotsCommand: ICommandHandler;
6
+ export declare const memoryReportCommand: ICommandHandler;
7
+ export declare const memoryRiskCommand: ICommandHandler;
8
+ export declare const memoryFilesCommand: ICommandHandler;
9
+ export declare const memoryDiagnosticsCommand: ICommandHandler;
10
+ export declare const memoryResetCommand: ICommandHandler;
11
+ //# sourceMappingURL=memory.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.command.d.ts","sourceRoot":"","sources":["../../src/commands/memory.command.ts"],"names":[],"mappings":"AAoBA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAgBhC,eAAO,MAAM,kBAAkB,EAAE,eAyBhC,CAAC;AAWF,eAAO,MAAM,iBAAiB,EAAE,eA0C/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAgChC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAkBpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAkBjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAmB/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAyBhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAuBtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAwBhC,CAAC"}