@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,538 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join as nodePathJoin, resolve as nodePathResolve } from 'node:path';
3
+ import { buildAnchorUpdatePlan, buildKnowledgeStaleReport, buildRenameFilePlan, buildRenameSymbolPlan, inspectSharkcraft, ReferenceCheckOutcome, resolveChangedFiles, } from '@shrkcrft/inspector';
4
+ import { formatEntryCompact, formatEntryFull, searchKnowledge } from '@shrkcrft/knowledge';
5
+ import { flagBool, flagNumber, flagString, flagList, resolveCwd, } from "../command-registry.js";
6
+ import { asJson, header } from "../output/format-output.js";
7
+ import { maybeRunInWatchMode } from "../output/watch-loop.js";
8
+ import { renderFailureHints, staleKnowledgeHints } from "../output/failure-hints.js";
9
+ function renderStaleCheckMarkdown(p) {
10
+ const out = [];
11
+ out.push(`# Knowledge stale-check`);
12
+ out.push('');
13
+ out.push(`- entries: ${p.entries}`);
14
+ out.push(`- references: ${p.totalReferences}`);
15
+ out.push(`- anchors: ${p.totalAnchors}`);
16
+ out.push(`- counts: ok=${p.counts.ok}, stale=${p.counts.stale}, missing=${p.counts.missing}, unknown=${p.counts.unknown}`);
17
+ if (p.ci.ci || p.ci.strict || p.ci.failOn.length > 0) {
18
+ out.push(`- required failing: ${p.ci.totalRequiredFailing} (stale=${p.ci.requiredStale}, missing=${p.ci.requiredMissing})`);
19
+ }
20
+ if (p.baselineComparison) {
21
+ out.push(`- baseline (${p.baselineComparison.baseline}): new-stale=${p.baselineComparison.newStale}, new-missing=${p.baselineComparison.newMissing}, resolved=${p.baselineComparison.resolved}`);
22
+ }
23
+ out.push('');
24
+ out.push(`## Reference issues`);
25
+ for (const c of p.referenceChecks) {
26
+ if (c.outcome === 'ok')
27
+ continue;
28
+ const req = c.reference.required ? ' **(required)**' : '';
29
+ out.push(`- **${c.outcome.toUpperCase()}**${req} \`${c.entryId}\` → \`${c.reference.kind}:${c.reference.id ?? c.reference.path ?? c.reference.symbol ?? '?'}\` — ${c.message}`);
30
+ }
31
+ if (p.ci.exitNonZero && p.ci.exitReason) {
32
+ out.push('');
33
+ out.push(`> FAIL: ${p.ci.exitReason}`);
34
+ }
35
+ out.push('');
36
+ return out.join('\n');
37
+ }
38
+ function renderStaleCheckHtml(p) {
39
+ const esc = (s) => s.replace(/[&<>"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c]));
40
+ const rows = [];
41
+ for (const c of p.referenceChecks) {
42
+ if (c.outcome === 'ok')
43
+ continue;
44
+ rows.push(`<tr><td>${esc(c.outcome.toUpperCase())}</td><td>${c.reference.required ? '✓' : ''}</td><td>${esc(c.entryId)}</td><td>${esc(c.reference.kind)}:${esc(c.reference.id ?? c.reference.path ?? c.reference.symbol ?? '?')}</td><td>${esc(c.message)}</td></tr>`);
45
+ }
46
+ return `<!doctype html><meta charset="utf-8"><title>Knowledge stale-check</title>
47
+ <style>body{font:14px/1.4 sans-serif;margin:1rem}table{border-collapse:collapse;width:100%}td,th{border:1px solid #ccc;padding:.25rem .5rem;text-align:left}h1{margin-top:0}</style>
48
+ <h1>Knowledge stale-check</h1>
49
+ <p>entries=${p.entries}, references=${p.totalReferences}, anchors=${p.totalAnchors}, ok=${p.counts.ok}, stale=${p.counts.stale}, missing=${p.counts.missing}, unknown=${p.counts.unknown}</p>
50
+ <table><thead><tr><th>Outcome</th><th>Required</th><th>Entry</th><th>Reference</th><th>Message</th></tr></thead><tbody>${rows.join('')}</tbody></table>
51
+ ${p.ci.exitNonZero ? `<p style="color:#a40000;font-weight:bold">FAIL: ${esc(p.ci.exitReason ?? '')}</p>` : ''}
52
+ `;
53
+ }
54
+ export const knowledgeListCommand = {
55
+ name: 'list',
56
+ description: 'List knowledge entries.',
57
+ usage: 'shrk knowledge list [--type rule] [--scope x,y] [--json]',
58
+ async run(args) {
59
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
60
+ const types = flagList(args, 'type');
61
+ const scope = flagList(args, 'scope');
62
+ let entries = inspection.knowledgeEntries;
63
+ if (types.length)
64
+ entries = entries.filter((e) => types.includes(String(e.type)));
65
+ if (scope.length)
66
+ entries = entries.filter((e) => scope.some((s) => e.scope.includes(s)));
67
+ if (flagBool(args, 'json')) {
68
+ process.stdout.write(asJson(entries.map((e) => ({ ...e }))) + '\n');
69
+ return 0;
70
+ }
71
+ process.stdout.write(header(`Knowledge (${entries.length})`));
72
+ for (const e of entries)
73
+ process.stdout.write(formatEntryCompact(e) + '\n');
74
+ return 0;
75
+ },
76
+ };
77
+ export const knowledgeGetCommand = {
78
+ name: 'get',
79
+ description: 'Show full content of one knowledge entry.',
80
+ usage: 'shrk knowledge get <id> [--json]',
81
+ async run(args) {
82
+ const id = args.positional[0];
83
+ if (!id) {
84
+ process.stderr.write('Usage: shrk knowledge get <id>\n');
85
+ return 2;
86
+ }
87
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
88
+ const entry = inspection.index.get(id);
89
+ if (!entry) {
90
+ process.stderr.write(`No knowledge entry with id "${id}".\n`);
91
+ return 1;
92
+ }
93
+ if (flagBool(args, 'json')) {
94
+ process.stdout.write(asJson(entry) + '\n');
95
+ return 0;
96
+ }
97
+ process.stdout.write(formatEntryFull(entry) + '\n');
98
+ return 0;
99
+ },
100
+ };
101
+ export const knowledgeSearchCommand = {
102
+ name: 'search',
103
+ description: 'Search knowledge by query.',
104
+ usage: 'shrk knowledge search <query> [--type x,y] [--scope x,y] [--limit 10] [--json]',
105
+ async run(args) {
106
+ const query = args.positional.join(' ').trim();
107
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
108
+ const types = flagList(args, 'type');
109
+ const scope = flagList(args, 'scope');
110
+ const tags = flagList(args, 'tag');
111
+ const appliesWhen = flagList(args, 'appliesWhen');
112
+ const limit = flagNumber(args, 'limit') ?? 20;
113
+ const results = searchKnowledge(inspection.knowledgeEntries, {
114
+ query: query.length ? query : undefined,
115
+ types: types.length ? types : undefined,
116
+ scope: scope.length ? scope : undefined,
117
+ tags: tags.length ? tags : undefined,
118
+ appliesWhen: appliesWhen.length ? appliesWhen : undefined,
119
+ limit,
120
+ });
121
+ if (flagBool(args, 'json')) {
122
+ process.stdout.write(asJson(results) + '\n');
123
+ return 0;
124
+ }
125
+ process.stdout.write(header(`Results (${results.length})`));
126
+ for (const r of results) {
127
+ process.stdout.write(`[${r.score.toFixed(1)}] ${formatEntryCompact(r.entry)}\n`);
128
+ if (r.reasons.length) {
129
+ const top = r.reasons.slice(0, 3).map((x) => `${x.field}=${x.match}`).join(', ');
130
+ process.stdout.write(` reasons: ${top}\n`);
131
+ }
132
+ }
133
+ return 0;
134
+ },
135
+ };
136
+ function readChangedScopeOptionsForKnowledge(args, projectRoot) {
137
+ const changedOnly = flagBool(args, 'changed-only');
138
+ const since = flagString(args, 'since');
139
+ const staged = flagBool(args, 'staged');
140
+ const files = flagList(args, 'files');
141
+ if (!changedOnly && !since && !staged && files.length === 0)
142
+ return null;
143
+ return {
144
+ projectRoot,
145
+ ...(since ? { since } : {}),
146
+ ...(staged ? { staged: true } : {}),
147
+ ...(files.length > 0 ? { files } : {}),
148
+ includeWorktree: changedOnly || !since,
149
+ };
150
+ }
151
+ export const knowledgeStaleCheckCommand = {
152
+ name: 'stale-check',
153
+ description: 'Validate `references[]` + `anchors[]` on each knowledge entry against the workspace. CI flags and `--watch [--once] [--debounce N]` supported. Read-only.',
154
+ usage: 'shrk knowledge stale-check [--changed-only|--since <ref>|--staged|--files a,b,c] [--ci] [--strict] [--fail-on required|stale|missing|all] [--baseline <file>] [--report] [--format text|markdown|html|json] [--output <path>] [--json] [--watch [--once] [--debounce N]]',
155
+ async run(args) {
156
+ const watchExit = await maybeRunInWatchMode(args, knowledgeStaleCheckImpl);
157
+ if (watchExit !== null)
158
+ return watchExit;
159
+ return knowledgeStaleCheckImpl(args);
160
+ },
161
+ };
162
+ async function knowledgeStaleCheckImpl(args) {
163
+ const cwd = resolveCwd(args);
164
+ const inspection = await inspectSharkcraft({ cwd });
165
+ const scopeOpts = readChangedScopeOptionsForKnowledge(args, cwd);
166
+ const changedFiles = scopeOpts ? resolveChangedFiles(scopeOpts).files : undefined;
167
+ const report = buildKnowledgeStaleReport(inspection, {
168
+ ...(changedFiles ? { changedFiles } : {}),
169
+ });
170
+ // CI/preflight flags.
171
+ const ci = flagBool(args, 'ci');
172
+ const strict = flagBool(args, 'strict');
173
+ const failOnRaw = (flagString(args, 'fail-on') ?? '').toLowerCase();
174
+ const failOn = new Set(failOnRaw
175
+ .split(',')
176
+ .map((s) => s.trim())
177
+ .filter(Boolean));
178
+ const baselineFile = flagString(args, 'baseline');
179
+ const wantReport = flagBool(args, 'report');
180
+ const formatRaw = (flagString(args, 'format') ?? '').toLowerCase();
181
+ const wantJson = flagBool(args, 'json') || formatRaw === 'json';
182
+ const wantMarkdown = formatRaw === 'markdown' || formatRaw === 'md';
183
+ const wantHtml = formatRaw === 'html';
184
+ const output = flagString(args, 'output');
185
+ // Required-reference computation. A reference is "required" when its
186
+ // `required: true` (default false). Stale + missing are the same outcome
187
+ // family.
188
+ let requiredStale = 0;
189
+ let requiredMissing = 0;
190
+ for (const c of report.referenceChecks) {
191
+ const isRequired = c.reference.required === true;
192
+ if (isRequired && c.outcome === ReferenceCheckOutcome.Stale)
193
+ requiredStale++;
194
+ if (isRequired && c.outcome === ReferenceCheckOutcome.Missing)
195
+ requiredMissing++;
196
+ }
197
+ const totalRequiredFailing = requiredStale + requiredMissing;
198
+ // Decide exit code.
199
+ let exitNonZero = false;
200
+ let exitReason;
201
+ const considerFailOn = (cat) => failOn.has(cat) || failOn.has('all');
202
+ if (ci) {
203
+ // CI mode — required failing refs are blocking. Optional refs warn only.
204
+ if (totalRequiredFailing > 0) {
205
+ exitNonZero = true;
206
+ exitReason = `${totalRequiredFailing} required references failing in --ci mode`;
207
+ }
208
+ }
209
+ else if (strict) {
210
+ // Strict — any stale/missing required ref fails. Same as CI essentially.
211
+ if (totalRequiredFailing > 0) {
212
+ exitNonZero = true;
213
+ exitReason = `${totalRequiredFailing} required references failing in --strict mode`;
214
+ }
215
+ }
216
+ else if (failOn.size > 0) {
217
+ if (considerFailOn('required') && totalRequiredFailing > 0) {
218
+ exitNonZero = true;
219
+ exitReason = `${totalRequiredFailing} required reference issues (--fail-on=required)`;
220
+ }
221
+ if (considerFailOn('stale') && report.counts.stale > 0) {
222
+ exitNonZero = true;
223
+ exitReason = `${report.counts.stale} stale references (--fail-on=stale)`;
224
+ }
225
+ if (considerFailOn('missing') && report.counts.missing > 0) {
226
+ exitNonZero = true;
227
+ exitReason = `${report.counts.missing} missing references (--fail-on=missing)`;
228
+ }
229
+ }
230
+ else {
231
+ // Default — non-CI: only the legacy "any missing or stale" condition fails.
232
+ if (report.counts.missing + report.counts.stale > 0) {
233
+ exitNonZero = true;
234
+ exitReason = `${report.counts.missing + report.counts.stale} stale or missing references (legacy default)`;
235
+ }
236
+ }
237
+ // Baseline comparison (informational).
238
+ let baselineComparison;
239
+ if (baselineFile) {
240
+ const baselineAbs = nodePathResolve(cwd, baselineFile);
241
+ if (existsSync(baselineAbs)) {
242
+ try {
243
+ const prev = JSON.parse(readFileSync(baselineAbs, 'utf8'));
244
+ const prevKey = (rc) => `${rc.entryId}|${rc.reference.path ?? rc.reference.symbol ?? rc.reference.id ?? ''}`;
245
+ const prevFailing = new Map();
246
+ for (const rc of prev.referenceChecks ?? []) {
247
+ if (rc.outcome === 'stale' || rc.outcome === 'missing') {
248
+ prevFailing.set(prevKey(rc), rc.outcome);
249
+ }
250
+ }
251
+ let newStale = 0;
252
+ let newMissing = 0;
253
+ let resolved = 0;
254
+ const currentKeys = new Set();
255
+ for (const rc of report.referenceChecks) {
256
+ const k = prevKey(rc);
257
+ currentKeys.add(k);
258
+ if ((rc.outcome === ReferenceCheckOutcome.Stale ||
259
+ rc.outcome === ReferenceCheckOutcome.Missing) &&
260
+ !prevFailing.has(k)) {
261
+ if (rc.outcome === ReferenceCheckOutcome.Stale)
262
+ newStale++;
263
+ else
264
+ newMissing++;
265
+ }
266
+ }
267
+ for (const [k] of prevFailing) {
268
+ // Resolved = was failing, now ok or not present.
269
+ const cur = report.referenceChecks.find((rc) => prevKey(rc) === k);
270
+ if (!cur || cur.outcome === ReferenceCheckOutcome.Ok)
271
+ resolved++;
272
+ void currentKeys;
273
+ }
274
+ baselineComparison = {
275
+ baseline: baselineAbs,
276
+ newStale,
277
+ newMissing,
278
+ resolved,
279
+ };
280
+ }
281
+ catch (e) {
282
+ process.stderr.write(`Baseline read failed: ${e.message}\n`);
283
+ }
284
+ }
285
+ else {
286
+ process.stderr.write(`Baseline file not found: ${baselineAbs}\n`);
287
+ }
288
+ }
289
+ // Build the structured payload (always built, even for text output).
290
+ const ciPayload = {
291
+ ...report,
292
+ ci: {
293
+ ci,
294
+ strict,
295
+ failOn: [...failOn],
296
+ requiredStale,
297
+ requiredMissing,
298
+ totalRequiredFailing,
299
+ exitNonZero,
300
+ exitReason,
301
+ },
302
+ baselineComparison,
303
+ };
304
+ // Optional report file.
305
+ if (wantReport || output) {
306
+ const reportsDir = nodePathJoin(cwd, '.sharkcraft', 'reports');
307
+ mkdirSync(reportsDir, { recursive: true });
308
+ const ts = new Date().toISOString().replace(/[:.]/g, '-');
309
+ const defaultPath = nodePathJoin(reportsDir, `knowledge-stale-${ts}.json`);
310
+ const outPath = output
311
+ ? nodePathResolve(cwd, output)
312
+ : defaultPath;
313
+ writeFileSync(outPath, JSON.stringify(ciPayload, null, 2), 'utf8');
314
+ if (!wantJson && !wantMarkdown && !wantHtml) {
315
+ process.stdout.write(`Wrote report → ${outPath}\n`);
316
+ }
317
+ }
318
+ // Format-specific output.
319
+ if (wantJson) {
320
+ process.stdout.write(asJson(ciPayload) + '\n');
321
+ return exitNonZero ? 1 : 0;
322
+ }
323
+ if (wantMarkdown) {
324
+ process.stdout.write(renderStaleCheckMarkdown(ciPayload));
325
+ return exitNonZero ? 1 : 0;
326
+ }
327
+ if (wantHtml) {
328
+ process.stdout.write(renderStaleCheckHtml(ciPayload));
329
+ return exitNonZero ? 1 : 0;
330
+ }
331
+ // Default text output.
332
+ process.stdout.write(header('Knowledge stale-check'));
333
+ process.stdout.write(`entries=${report.entries} references=${report.totalReferences} anchors=${report.totalAnchors}\n`);
334
+ process.stdout.write(`ok=${report.counts.ok} stale=${report.counts.stale} missing=${report.counts.missing} unknown=${report.counts.unknown}\n`);
335
+ if (ci || strict || failOn.size > 0) {
336
+ process.stdout.write(`required: stale=${requiredStale} missing=${requiredMissing} (total failing: ${totalRequiredFailing})\n`);
337
+ }
338
+ if (baselineComparison) {
339
+ process.stdout.write(`baseline: new-stale=${baselineComparison.newStale} new-missing=${baselineComparison.newMissing} resolved=${baselineComparison.resolved}\n`);
340
+ }
341
+ process.stdout.write('\n');
342
+ for (const c of report.referenceChecks) {
343
+ if (c.outcome === ReferenceCheckOutcome.Ok)
344
+ continue;
345
+ const tag = c.outcome.toUpperCase().padEnd(7);
346
+ const req = c.reference.required === true ? '[REQ] ' : ' ';
347
+ process.stdout.write(` ${tag} ${req}${c.entryId} → ${c.reference.kind}:${c.reference.id ?? c.reference.path ?? c.reference.symbol ?? '?'} — ${c.message}\n`);
348
+ if (c.suggestion)
349
+ process.stdout.write(` ↳ ${c.suggestion}\n`);
350
+ }
351
+ for (const c of report.anchorChecks) {
352
+ if (c.outcome === ReferenceCheckOutcome.Ok)
353
+ continue;
354
+ const tag = c.outcome.toUpperCase().padEnd(7);
355
+ process.stdout.write(` ${tag} ${c.entryId} anchor[${c.anchor.id}] (${c.anchor.kind}) — ${c.message}\n`);
356
+ }
357
+ if (exitNonZero && exitReason) {
358
+ process.stdout.write(`\nFAIL: ${exitReason}\n`);
359
+ }
360
+ if (exitNonZero) {
361
+ process.stdout.write(renderFailureHints(staleKnowledgeHints()));
362
+ }
363
+ return exitNonZero ? 1 : 0;
364
+ }
365
+ export const knowledgeVerifyCommand = {
366
+ name: 'verify',
367
+ description: 'Alias for `knowledge stale-check`. Read-only.',
368
+ usage: 'shrk knowledge verify [--changed-only|--since|--staged|--files] [--json]',
369
+ run(args) {
370
+ return knowledgeStaleCheckCommand.run(args);
371
+ },
372
+ };
373
+ export const knowledgeReferencesCommand = {
374
+ name: 'references',
375
+ description: 'List references/anchors for one knowledge entry. Read-only.',
376
+ usage: 'shrk knowledge references <id> [--json]',
377
+ async run(args) {
378
+ const id = args.positional[0];
379
+ if (!id) {
380
+ process.stderr.write('Usage: shrk knowledge references <id>\n');
381
+ return 2;
382
+ }
383
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
384
+ const entry = inspection.index.get(id);
385
+ if (!entry) {
386
+ process.stderr.write(`No knowledge entry with id "${id}".\n`);
387
+ return 1;
388
+ }
389
+ const data = {
390
+ id: entry.id,
391
+ title: entry.title,
392
+ references: entry.references ?? [],
393
+ anchors: entry.anchors ?? [],
394
+ };
395
+ if (flagBool(args, 'json')) {
396
+ process.stdout.write(asJson(data) + '\n');
397
+ return 0;
398
+ }
399
+ process.stdout.write(header(`References for ${id}`));
400
+ if (data.references.length === 0 && data.anchors.length === 0) {
401
+ process.stdout.write(' (no references / anchors declared)\n');
402
+ return 0;
403
+ }
404
+ if (data.references.length > 0) {
405
+ process.stdout.write(`References (${data.references.length}):\n`);
406
+ for (const r of data.references) {
407
+ const target = r.id ?? r.path ?? r.symbol ?? r.command ?? '?';
408
+ process.stdout.write(` • ${r.kind}: ${target}${r.required ? ' [required]' : ''}\n`);
409
+ }
410
+ }
411
+ if (data.anchors.length > 0) {
412
+ process.stdout.write(`Anchors (${data.anchors.length}):\n`);
413
+ for (const a of data.anchors) {
414
+ process.stdout.write(` • ${a.id} (${a.kind}) → ${a.targetId ?? a.path ?? a.symbol ?? '?'}\n`);
415
+ }
416
+ }
417
+ return 0;
418
+ },
419
+ };
420
+ export const knowledgeAnchorsCommand = {
421
+ name: 'anchors',
422
+ description: 'List all anchors across the knowledge corpus. Read-only.',
423
+ usage: 'shrk knowledge anchors [--json]',
424
+ async run(args) {
425
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
426
+ const out = [];
427
+ for (const e of inspection.knowledgeEntries) {
428
+ for (const a of e.anchors ?? []) {
429
+ out.push({ entryId: e.id, anchor: a });
430
+ }
431
+ }
432
+ if (flagBool(args, 'json')) {
433
+ process.stdout.write(asJson({ anchors: out, count: out.length }) + '\n');
434
+ return 0;
435
+ }
436
+ process.stdout.write(header(`Anchors (${out.length})`));
437
+ for (const { entryId, anchor } of out) {
438
+ const a = anchor;
439
+ process.stdout.write(` ${entryId} → ${a.id} (${a.kind})\n`);
440
+ }
441
+ return 0;
442
+ },
443
+ };
444
+ /**
445
+ * Read-only preview of which knowledge entries' references / anchors
446
+ * would change when a symbol or file is renamed. Source-side symbol
447
+ * rename remains out of scope until an AST-aware path exists. Use
448
+ * `shrk fix --knowledge-stale --apply` to land entry-side renames.
449
+ */
450
+ export const knowledgeRenameSymbolCommand = {
451
+ name: 'rename-symbol',
452
+ description: 'Preview which knowledge entries reference a symbol and would be updated by a rename. Read-only. To land entry-side renames, run `shrk fix --knowledge-stale --apply` (uses the engine\'s replaceWith signal).',
453
+ usage: 'shrk knowledge rename-symbol <old> <new> [--json]',
454
+ async run(args) {
455
+ const [from, to] = args.positional;
456
+ if (!from || !to) {
457
+ process.stderr.write('Usage: shrk knowledge rename-symbol <old> <new>\n');
458
+ return 2;
459
+ }
460
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
461
+ const plan = buildRenameSymbolPlan(inspection, { from, to });
462
+ if (flagBool(args, 'json')) {
463
+ process.stdout.write(asJson(plan) + '\n');
464
+ return 0;
465
+ }
466
+ process.stdout.write(header(`Rename symbol: ${from} → ${to}`));
467
+ if (plan.matches.length === 0) {
468
+ process.stdout.write(' no knowledge entries reference this symbol.\n');
469
+ return 0;
470
+ }
471
+ for (const m of plan.matches) {
472
+ process.stdout.write(` • ${m.entryId} [${m.field}]\n`);
473
+ }
474
+ process.stdout.write('\n(preview only — use `shrk fix --knowledge-stale --apply` to land entry-side renames.)\n');
475
+ return 0;
476
+ },
477
+ };
478
+ export const knowledgeRenameFileCommand = {
479
+ name: 'rename-file',
480
+ description: 'Preview which knowledge entries reference a file path and would be updated by a rename. Read-only. To land entry-side renames, run `shrk fix --knowledge-stale --apply`.',
481
+ usage: 'shrk knowledge rename-file <old-path> <new-path> [--json]',
482
+ async run(args) {
483
+ const [from, to] = args.positional;
484
+ if (!from || !to) {
485
+ process.stderr.write('Usage: shrk knowledge rename-file <old> <new>\n');
486
+ return 2;
487
+ }
488
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
489
+ const plan = buildRenameFilePlan(inspection, { from, to });
490
+ if (flagBool(args, 'json')) {
491
+ process.stdout.write(asJson(plan) + '\n');
492
+ return 0;
493
+ }
494
+ process.stdout.write(header(`Rename file: ${from} → ${to}`));
495
+ if (plan.matches.length === 0) {
496
+ process.stdout.write(' no knowledge entries reference this path.\n');
497
+ return 0;
498
+ }
499
+ for (const m of plan.matches) {
500
+ process.stdout.write(` • ${m.entryId} [${m.field}]\n`);
501
+ }
502
+ process.stdout.write('\n(preview only — use `shrk fix --knowledge-stale --apply` to land entry-side renames.)\n');
503
+ return 0;
504
+ },
505
+ };
506
+ export const knowledgeUpdateAnchorCommand = {
507
+ name: 'update-anchor',
508
+ description: 'Preview an anchor update. Read-only. To land entry-side updates, edit the entry source directly.',
509
+ usage: 'shrk knowledge update-anchor <anchorId> [--to-symbol <name>] [--to-path <path>] [--to-target-id <id>] [--json]',
510
+ async run(args) {
511
+ const anchorId = args.positional[0];
512
+ if (!anchorId) {
513
+ process.stderr.write('Usage: shrk knowledge update-anchor <anchorId> [--to-symbol|--to-path|--to-target-id <value>]\n');
514
+ return 2;
515
+ }
516
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
517
+ const plan = buildAnchorUpdatePlan(inspection, {
518
+ anchorId,
519
+ ...(flagString(args, 'to-symbol') ? { toSymbol: flagString(args, 'to-symbol') } : {}),
520
+ ...(flagString(args, 'to-path') ? { toPath: flagString(args, 'to-path') } : {}),
521
+ ...(flagString(args, 'to-target-id') ? { toTargetId: flagString(args, 'to-target-id') } : {}),
522
+ });
523
+ if (flagBool(args, 'json')) {
524
+ process.stdout.write(asJson(plan) + '\n');
525
+ return 0;
526
+ }
527
+ process.stdout.write(header(`Update anchor: ${anchorId}`));
528
+ if (plan.matches.length === 0) {
529
+ process.stdout.write(' no anchors match this id.\n');
530
+ return 0;
531
+ }
532
+ for (const m of plan.matches) {
533
+ process.stdout.write(` • ${m.entryId} [${m.field}]\n`);
534
+ }
535
+ process.stdout.write('\n(preview only.)\n');
536
+ return 0;
537
+ },
538
+ };
@@ -0,0 +1,3 @@
1
+ import { type ICommandHandler } from '../command-registry.js';
2
+ export declare const languagesCommand: ICommandHandler;
3
+ //# sourceMappingURL=languages.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.command.d.ts","sourceRoot":"","sources":["../../src/commands/languages.command.ts"],"names":[],"mappings":"AA4BA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AA8NhC,eAAO,MAAM,gBAAgB,EAAE,eA6B9B,CAAC"}