@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,257 @@
1
+ /**
2
+ * Templates update apply splicer.
3
+ *
4
+ * Mutates an existing template literal in place by replacing or inserting
5
+ * top-level fields. Used by `shrk templates update --apply`.
6
+ *
7
+ * Supported top-level fields:
8
+ * - `name`, `description` (scalar strings)
9
+ * - `tags`, `scope`, `appliesWhen`, `related` (string arrays)
10
+ *
11
+ * Array merge modes:
12
+ * - Array fields accept `{ mode: 'add' | 'remove' | 'set', values }`. A
13
+ * bare array is treated as `{ mode: 'set', values }` for back-compat.
14
+ * `add` merges (dedupe, preserve original order, append new),
15
+ * `remove` drops matching values, `set` is wholesale replace.
16
+ * - `metadata.*` nested merge. Known scalar fields (booleans,
17
+ * numbers, strings) replace; known string-array fields
18
+ * (`requiredAnchors`, `requiredProfileIds`, `forbiddenPathFragments`,
19
+ * `requiredVerificationCommandIds`) accept add/remove/set the same
20
+ * way top-level arrays do.
21
+ *
22
+ * Refused:
23
+ * - `files`, `changes`, `targetPath`, `content` — function resolvers.
24
+ * - `variables` — structural, not a simple replacement target.
25
+ */
26
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
27
+ import * as nodePath from 'node:path';
28
+ import { findEntryRange, findNestedObjectRange, readStringArrayField, upsertScalarField, } from "./entry-mutator.js";
29
+ function normaliseArrayOp(op) {
30
+ if (Array.isArray(op))
31
+ return { mode: 'set', values: op };
32
+ const o = op;
33
+ return { mode: o.mode, values: o.values };
34
+ }
35
+ function mergeArray(current, op) {
36
+ if (op.mode === 'set')
37
+ return op.values;
38
+ const base = current ?? [];
39
+ if (op.mode === 'add') {
40
+ const set = new Set(base);
41
+ const out = [...base];
42
+ for (const v of op.values) {
43
+ if (!set.has(v)) {
44
+ out.push(v);
45
+ set.add(v);
46
+ }
47
+ }
48
+ return out;
49
+ }
50
+ // mode === 'remove'
51
+ const removeSet = new Set(op.values);
52
+ return base.filter((v) => !removeSet.has(v));
53
+ }
54
+ function escapesCwd(cwd, absPath) {
55
+ const rel = nodePath.relative(cwd, absPath);
56
+ return rel.startsWith('..') || nodePath.isAbsolute(rel);
57
+ }
58
+ function buildUnifiedDiff(rel, a, b) {
59
+ const aLines = a.split('\n');
60
+ const bLines = b.split('\n');
61
+ let prefix = 0;
62
+ while (prefix < aLines.length && prefix < bLines.length && aLines[prefix] === bLines[prefix]) {
63
+ prefix += 1;
64
+ }
65
+ let suffix = 0;
66
+ while (suffix < aLines.length - prefix &&
67
+ suffix < bLines.length - prefix &&
68
+ aLines[aLines.length - 1 - suffix] === bLines[bLines.length - 1 - suffix]) {
69
+ suffix += 1;
70
+ }
71
+ const aMid = aLines.slice(prefix, aLines.length - suffix);
72
+ const bMid = bLines.slice(prefix, bLines.length - suffix);
73
+ const head = `--- ${rel}\n+++ ${rel}\n@@ -${prefix + 1},${aMid.length} +${prefix + 1},${bMid.length} @@\n`;
74
+ return (head +
75
+ aMid.map((l) => `-${l}`).join('\n') +
76
+ (aMid.length ? '\n' : '') +
77
+ bMid.map((l) => `+${l}`).join('\n'));
78
+ }
79
+ export function applyTemplateUpdate(input) {
80
+ const cwd = nodePath.resolve(input.cwd);
81
+ const targetAbs = nodePath.resolve(cwd, input.targetPath);
82
+ if (escapesCwd(cwd, targetAbs)) {
83
+ return {
84
+ ok: false,
85
+ refusal: `Target path escapes the project root (cwd=${cwd}).`,
86
+ targetAbs,
87
+ templateId: input.templateId,
88
+ originalLength: 0,
89
+ nextLength: 0,
90
+ fieldChanges: [],
91
+ wrote: false,
92
+ };
93
+ }
94
+ if (!existsSync(targetAbs)) {
95
+ return {
96
+ ok: false,
97
+ refusal: `Target file not found: ${targetAbs}`,
98
+ targetAbs,
99
+ templateId: input.templateId,
100
+ originalLength: 0,
101
+ nextLength: 0,
102
+ fieldChanges: [],
103
+ wrote: false,
104
+ };
105
+ }
106
+ const body = readFileSync(targetAbs, 'utf8');
107
+ let workingBody = body;
108
+ let range = findEntryRange(workingBody, input.templateId);
109
+ if (!range) {
110
+ return {
111
+ ok: false,
112
+ refusal: `Template "${input.templateId}" not found in ${nodePath.relative(cwd, targetAbs)}.`,
113
+ targetAbs,
114
+ templateId: input.templateId,
115
+ originalLength: body.length,
116
+ nextLength: body.length,
117
+ fieldChanges: [],
118
+ wrote: false,
119
+ };
120
+ }
121
+ const fieldChanges = [];
122
+ function applyScalar(field, value) {
123
+ const literal = JSON.stringify(value);
124
+ const fragment = `${field}: ${literal},`;
125
+ const result = upsertScalarField(workingBody, range, field, literal, fragment);
126
+ workingBody = result.body;
127
+ range = findEntryRange(workingBody, input.templateId);
128
+ if (range)
129
+ fieldChanges.push({ field, mode: result.mode });
130
+ }
131
+ function applyArray(field, op) {
132
+ const norm = normaliseArrayOp(op);
133
+ const current = readStringArrayField(workingBody, range, field);
134
+ const next = mergeArray(current, norm);
135
+ const literal = JSON.stringify(next);
136
+ const fragment = `${field}: ${literal},`;
137
+ const result = upsertScalarField(workingBody, range, field, literal, fragment);
138
+ workingBody = result.body;
139
+ range = findEntryRange(workingBody, input.templateId);
140
+ if (range)
141
+ fieldChanges.push({ field, mode: result.mode, arrayMode: norm.mode });
142
+ }
143
+ function applyMetadataArray(parentRange, field, op) {
144
+ const norm = normaliseArrayOp(op);
145
+ const current = readStringArrayField(workingBody, parentRange, field);
146
+ const next = mergeArray(current, norm);
147
+ const literal = JSON.stringify(next);
148
+ const fragment = `${field}: ${literal},`;
149
+ const result = upsertScalarField(workingBody, parentRange, field, literal, fragment);
150
+ workingBody = result.body;
151
+ const reroot = findEntryRange(workingBody, input.templateId);
152
+ if (!reroot)
153
+ return null;
154
+ const next1 = findNestedObjectRange(workingBody, reroot, 'metadata');
155
+ if (next1)
156
+ fieldChanges.push({ field: `metadata.${field}`, mode: result.mode, arrayMode: norm.mode });
157
+ return next1;
158
+ }
159
+ function applyMetadataScalar(parentRange, field, value) {
160
+ const literal = JSON.stringify(value);
161
+ const fragment = `${field}: ${literal},`;
162
+ const result = upsertScalarField(workingBody, parentRange, field, literal, fragment);
163
+ workingBody = result.body;
164
+ const reroot = findEntryRange(workingBody, input.templateId);
165
+ if (!reroot)
166
+ return null;
167
+ const next1 = findNestedObjectRange(workingBody, reroot, 'metadata');
168
+ if (next1)
169
+ fieldChanges.push({ field: `metadata.${field}`, mode: result.mode });
170
+ return next1;
171
+ }
172
+ if (input.fields.name !== undefined)
173
+ applyScalar('name', input.fields.name);
174
+ if (input.fields.description !== undefined)
175
+ applyScalar('description', input.fields.description);
176
+ if (input.fields.tags !== undefined)
177
+ applyArray('tags', input.fields.tags);
178
+ if (input.fields.scope !== undefined)
179
+ applyArray('scope', input.fields.scope);
180
+ if (input.fields.appliesWhen !== undefined)
181
+ applyArray('appliesWhen', input.fields.appliesWhen);
182
+ if (input.fields.related !== undefined)
183
+ applyArray('related', input.fields.related);
184
+ if (input.fields.metadata && range) {
185
+ // Insert a stub metadata block if absent so the nested merge has a
186
+ // landing pad. The stub is empty `{}` so subsequent upserts add fields.
187
+ let metadataRange = findNestedObjectRange(workingBody, range, 'metadata');
188
+ if (!metadataRange) {
189
+ const stub = 'metadata: {},';
190
+ const result = upsertScalarField(workingBody, range, 'metadata', '{}', stub);
191
+ workingBody = result.body;
192
+ range = findEntryRange(workingBody, input.templateId);
193
+ if (range) {
194
+ metadataRange = findNestedObjectRange(workingBody, range, 'metadata');
195
+ if (metadataRange) {
196
+ fieldChanges.push({ field: 'metadata', mode: result.mode });
197
+ }
198
+ }
199
+ }
200
+ if (metadataRange) {
201
+ const meta = input.fields.metadata;
202
+ // Scalar fields first (order is deterministic so diffs are stable).
203
+ const scalarKeys = ['priority', 'maturity', 'dryRunOnly', 'requiresApproval'];
204
+ for (const key of scalarKeys) {
205
+ const v = meta[key];
206
+ if (v !== undefined) {
207
+ const next = applyMetadataScalar(metadataRange, key, v);
208
+ if (next)
209
+ metadataRange = next;
210
+ }
211
+ }
212
+ const arrayKeys = [
213
+ 'requiredAnchors',
214
+ 'requiredProfileIds',
215
+ 'forbiddenPathFragments',
216
+ 'requiredVerificationCommandIds',
217
+ ];
218
+ for (const key of arrayKeys) {
219
+ const op = meta[key];
220
+ if (op !== undefined) {
221
+ const next = applyMetadataArray(metadataRange, key, op);
222
+ if (next)
223
+ metadataRange = next;
224
+ }
225
+ }
226
+ }
227
+ }
228
+ if (fieldChanges.length === 0) {
229
+ return {
230
+ ok: false,
231
+ refusal: `No supported fields to apply for "${input.templateId}". Supported: name, description, tags, scope, appliesWhen, related, metadata.{priority, maturity, dryRunOnly, requiresApproval, requiredAnchors, requiredProfileIds, forbiddenPathFragments, requiredVerificationCommandIds}.`,
232
+ targetAbs,
233
+ templateId: input.templateId,
234
+ originalLength: body.length,
235
+ nextLength: body.length,
236
+ fieldChanges: [],
237
+ wrote: false,
238
+ };
239
+ }
240
+ let wrote = false;
241
+ if (input.write && workingBody !== body) {
242
+ writeFileSync(targetAbs, workingBody, 'utf8');
243
+ wrote = true;
244
+ }
245
+ const rel = nodePath.relative(cwd, targetAbs) || nodePath.basename(targetAbs);
246
+ const diff = buildUnifiedDiff(rel, body, workingBody);
247
+ return {
248
+ ok: true,
249
+ targetAbs,
250
+ templateId: input.templateId,
251
+ originalLength: body.length,
252
+ nextLength: workingBody.length,
253
+ fieldChanges,
254
+ diff,
255
+ wrote,
256
+ };
257
+ }
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Shared entry-aware mutation primitives.
3
+ *
4
+ * Three apply paths (knowledge-stale, template-drift, templates-update)
5
+ * all need the same primitive: find an object literal by `id`, walk to
6
+ * its `{...}` range, then replace / insert / remove fields inside.
7
+ *
8
+ * Pure functions over file text. No IO. No inspector imports — operates
9
+ * on raw TS source.
10
+ */
11
+ export interface IEntryRange {
12
+ /** Position of the opening `{` of the entry literal. */
13
+ readonly open: number;
14
+ /** Position of the matching closing `}`. */
15
+ readonly close: number;
16
+ /** Leading whitespace of the line containing the closing `}`. */
17
+ readonly indent: string;
18
+ }
19
+ /**
20
+ * Locate `{...}` range for an entry whose `id: '<id>'` appears in body.
21
+ * Returns null when not found.
22
+ *
23
+ * Heuristic: locate the `id: 'entryId'` line (single or double quotes),
24
+ * walk backwards to the nearest `{`, then walk forwards counting `{`/`}`
25
+ * with string-literal awareness so braces inside strings don't unbalance
26
+ * the count.
27
+ */
28
+ export declare function findEntryRange(body: string, entryId: string): IEntryRange | null;
29
+ /** True if the entry literal already declares a top-level field. */
30
+ export declare function entryHasField(body: string, range: IEntryRange, fieldName: string): boolean;
31
+ /**
32
+ * Insert a top-level field (TS source fragment) just before the closing
33
+ * `}` of the entry literal. Indents the fragment to match the entry.
34
+ *
35
+ * The caller is responsible for ensuring `body[range.close] === '}'`.
36
+ *
37
+ * The inserted line ends with `\n + range.indent` so the closing `}`
38
+ * re-lands on a properly indented line. `after` is preserved
39
+ * verbatim — slicing the indent off here would strip the closing
40
+ * `}` whenever it lived on its own indented line.
41
+ */
42
+ export declare function insertField(body: string, range: IEntryRange, fieldFragment: string): string;
43
+ /**
44
+ * Replace the value of a top-level scalar field inside the entry.
45
+ * Matches `<fieldName>: <value>,` (single-line) and replaces the value.
46
+ *
47
+ * Returns `null` when the field isn't present or isn't single-line.
48
+ */
49
+ export declare function replaceScalarField(body: string, range: IEntryRange, fieldName: string, newLiteral: string): string | null;
50
+ /**
51
+ * Upsert: replace the field if present (single-line scalar), insert
52
+ * otherwise. `fragmentForInsert` is the full `fieldName: value,` line
53
+ * used when the field is absent. `newLiteralForReplace` is the value
54
+ * portion used when the field is present.
55
+ */
56
+ export declare function upsertScalarField(body: string, range: IEntryRange, fieldName: string, newLiteralForReplace: string, fragmentForInsert: string): {
57
+ body: string;
58
+ mode: 'replace' | 'insert';
59
+ };
60
+ /**
61
+ * Remove an element from a top-level array field by predicate on the
62
+ * raw element text. The array is parsed shallowly — elements are split
63
+ * at top-level commas (not inside nested `{}` / `[]` / strings).
64
+ *
65
+ * Returns `{ body, removedCount }`. Refuses (returns null) if the field
66
+ * isn't a single-line OR brace-delimited array. Idempotent — calling
67
+ * twice removes nothing on the second pass.
68
+ */
69
+ export declare function removeArrayEntries(body: string, range: IEntryRange, fieldName: string, predicate: (element: string) => boolean): {
70
+ body: string;
71
+ removedCount: number;
72
+ } | null;
73
+ /**
74
+ * Remove an element from a top-level array of strings by exact value.
75
+ * Convenience wrapper over `removeArrayEntries`.
76
+ */
77
+ export declare function removeStringFromArray(body: string, range: IEntryRange, fieldName: string, value: string): {
78
+ body: string;
79
+ removedCount: number;
80
+ } | null;
81
+ /**
82
+ * Find the `{...}` range of a nested object literal addressed by
83
+ * `<fieldName>: {` within the enclosing entry range. Returns null when
84
+ * the field is missing OR is not an object literal.
85
+ *
86
+ * Used by templates-update --apply to merge into `metadata.*` without
87
+ * touching the surrounding entry.
88
+ */
89
+ export declare function findNestedObjectRange(body: string, parentRange: IEntryRange, fieldName: string): IEntryRange | null;
90
+ /**
91
+ * Read a top-level string array field's current values from the
92
+ * entry literal. Returns the unquoted string values in source order, or
93
+ * null when the field isn't a single-line OR brace-delimited array.
94
+ *
95
+ * Tolerates nested string-quoted commas and surrounding whitespace.
96
+ * Used by templates-update --apply for `--add-tag` / `--remove-tag`
97
+ * merge math.
98
+ */
99
+ export declare function readStringArrayField(body: string, range: IEntryRange, fieldName: string): readonly string[] | null;
100
+ /**
101
+ * Split a comma-separated string at top-level commas (not inside
102
+ * strings or nested brackets). Preserves the original spacing inside
103
+ * each element so the caller can decide how to re-render.
104
+ */
105
+ export declare function splitTopLevelCommas(inner: string): string[];
106
+ //# sourceMappingURL=entry-mutator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-mutator.d.ts","sourceRoot":"","sources":["../../src/asset-preview/entry-mutator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAuDhF;AAED,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAI1F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,CAkBR;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAaf;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAC5B,iBAAiB,EAAE,MAAM,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,CAS9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA+E/C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ/C;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB,WAAW,GAAG,IAAI,CA+CpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,GAChB,SAAS,MAAM,EAAE,GAAG,IAAI,CAmD1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAiC3D"}