@canonical/pragma-cli 0.31.0 → 0.32.0

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 (1064) hide show
  1. package/dist/pragma +0 -0
  2. package/package.json +27 -42
  3. package/src/bin.ts +292 -11
  4. package/src/capabilities/block/blockList.verb.ts +150 -0
  5. package/src/capabilities/block/index.ts +25 -0
  6. package/src/capabilities/block/pack.ts +155 -0
  7. package/src/capabilities/block/parity.test.ts +180 -0
  8. package/src/capabilities/block/tierChain.ts +78 -0
  9. package/src/capabilities/capabilities/capabilities.render.ts +89 -0
  10. package/src/capabilities/capabilities/capabilities.test.ts +131 -0
  11. package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
  12. package/src/capabilities/capabilities/catalog.ts +144 -0
  13. package/src/capabilities/capabilities/hints.ts +221 -0
  14. package/src/capabilities/capabilities/index.ts +13 -0
  15. package/src/capabilities/capabilities/types.ts +58 -0
  16. package/src/capabilities/colophon/collectColophon.ts +68 -0
  17. package/src/capabilities/colophon/colophon.render.test.ts +87 -0
  18. package/src/capabilities/colophon/colophon.render.ts +38 -0
  19. package/src/capabilities/colophon/colophon.test.ts +241 -0
  20. package/src/capabilities/colophon/colophon.verb.ts +41 -0
  21. package/src/capabilities/colophon/index.ts +6 -0
  22. package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
  23. package/src/capabilities/colophon/markdownTerminal.ts +85 -0
  24. package/src/capabilities/colophon/pragmaColophon.ts +66 -0
  25. package/src/capabilities/colophon/types.ts +29 -0
  26. package/src/capabilities/config/collectConfigShow.ts +32 -0
  27. package/src/capabilities/config/field.render.ts +28 -0
  28. package/src/capabilities/config/field.test.ts +188 -0
  29. package/src/capabilities/config/fields.ts +152 -0
  30. package/src/capabilities/config/index.ts +6 -0
  31. package/src/capabilities/config/runField.ts +59 -0
  32. package/src/capabilities/config/runSet.ts +38 -0
  33. package/src/capabilities/config/set.test.ts +207 -0
  34. package/src/capabilities/config/set.verb.ts +70 -0
  35. package/src/capabilities/config/show.render.ts +61 -0
  36. package/src/capabilities/config/show.verb.ts +45 -0
  37. package/src/capabilities/config/types.ts +27 -0
  38. package/src/capabilities/create/byteEquality.subprocess.test.ts +88 -0
  39. package/src/capabilities/create/byteEquality.test.ts +222 -0
  40. package/src/capabilities/create/compiledCreate.subprocess.test.ts +152 -0
  41. package/src/capabilities/create/create.mcp.test.ts +139 -0
  42. package/src/capabilities/create/create.render.ts +50 -0
  43. package/src/capabilities/create/create.test.ts +403 -0
  44. package/src/capabilities/create/create.verb.ts +435 -0
  45. package/src/capabilities/create/cwdJail.test.ts +129 -0
  46. package/src/capabilities/create/generatorToVerbSpec.ts +111 -0
  47. package/src/capabilities/create/index.ts +25 -0
  48. package/src/capabilities/create/pathJail.ts +73 -0
  49. package/src/capabilities/create/pickGenerator.ts +63 -0
  50. package/src/capabilities/create/templates.embedded.generated.ts +53 -0
  51. package/src/capabilities/create/types.ts +8 -0
  52. package/src/capabilities/doctor/checks/checkConfigFile.ts +41 -0
  53. package/src/capabilities/doctor/checks/checkKeStore.ts +39 -0
  54. package/src/capabilities/doctor/checks/checkMcpCommands.ts +108 -0
  55. package/src/capabilities/doctor/checks/checkMcpConfigured.ts +61 -0
  56. package/src/capabilities/doctor/checks/checkNodeVersion.ts +25 -0
  57. package/src/capabilities/doctor/checks/checkPackageRefs.ts +73 -0
  58. package/src/capabilities/doctor/checks/checkPragmaVersion.ts +22 -0
  59. package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +111 -0
  60. package/src/capabilities/doctor/checks/checkShellCompletions.ts +131 -0
  61. package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +60 -0
  62. package/src/capabilities/doctor/doctor.render.ts +116 -0
  63. package/src/capabilities/doctor/doctor.test.ts +179 -0
  64. package/src/capabilities/doctor/doctor.verb.ts +46 -0
  65. package/src/capabilities/doctor/index.ts +6 -0
  66. package/src/capabilities/doctor/runChecks.ts +76 -0
  67. package/src/capabilities/doctor/types.ts +41 -0
  68. package/src/capabilities/emptyRecovery.test.ts +112 -0
  69. package/src/capabilities/graph/index.ts +21 -0
  70. package/src/capabilities/graph/inspect.render.ts +38 -0
  71. package/src/capabilities/graph/inspect.test.ts +80 -0
  72. package/src/capabilities/graph/inspect.verb.ts +51 -0
  73. package/src/capabilities/graph/query.render.ts +77 -0
  74. package/src/capabilities/graph/query.test.ts +156 -0
  75. package/src/capabilities/graph/query.verb.ts +58 -0
  76. package/src/capabilities/graph/runQuery.ts +49 -0
  77. package/src/capabilities/index.ts +54 -0
  78. package/src/capabilities/info/collectInfo.ts +76 -0
  79. package/src/capabilities/info/index.ts +6 -0
  80. package/src/capabilities/info/info.render.ts +72 -0
  81. package/src/capabilities/info/info.test.ts +127 -0
  82. package/src/capabilities/info/info.verb.ts +46 -0
  83. package/src/capabilities/info/types.ts +42 -0
  84. package/src/capabilities/lazy.test.ts +89 -0
  85. package/src/capabilities/meta/complete.verb.ts +52 -0
  86. package/src/capabilities/meta/index.ts +15 -0
  87. package/src/capabilities/meta/mcp.verb.ts +35 -0
  88. package/src/capabilities/modifier/index.ts +15 -0
  89. package/src/capabilities/modifier/pack.ts +64 -0
  90. package/src/capabilities/ontology/index.ts +12 -0
  91. package/src/capabilities/ontology/ontology.test.ts +94 -0
  92. package/src/capabilities/ontology/queries.ts +197 -0
  93. package/src/capabilities/ontology/render.ts +87 -0
  94. package/src/capabilities/ontology/verbs.ts +170 -0
  95. package/src/capabilities/prompt/index.ts +18 -0
  96. package/src/capabilities/prompt/prompt.render.ts +70 -0
  97. package/src/capabilities/prompt/prompt.test.ts +119 -0
  98. package/src/capabilities/prompt/types.ts +30 -0
  99. package/src/capabilities/prompt/verbs.ts +93 -0
  100. package/src/capabilities/resources/index.ts +15 -0
  101. package/src/capabilities/resources/provider.ts +231 -0
  102. package/src/capabilities/resources/resources.test.ts +114 -0
  103. package/src/capabilities/roundtrip.test.ts +107 -0
  104. package/src/capabilities/setup/index.ts +6 -0
  105. package/src/capabilities/setup/operations/setupCompletions.ts +108 -0
  106. package/src/capabilities/setup/operations/setupGenerator.ts +307 -0
  107. package/src/capabilities/setup/operations/setupLsp.ts +61 -0
  108. package/src/capabilities/setup/operations/setupMcp.ts +85 -0
  109. package/src/capabilities/setup/operations/setupSkills.ts +199 -0
  110. package/src/capabilities/setup/setup.render.ts +49 -0
  111. package/src/capabilities/setup/setup.test.ts +351 -0
  112. package/src/capabilities/setup/setup.verb.ts +209 -0
  113. package/src/capabilities/setup/shell.ts +85 -0
  114. package/src/capabilities/setup/types.ts +42 -0
  115. package/src/capabilities/shared/assertExecOk.ts +106 -0
  116. package/src/capabilities/shared/packageManager.ts +62 -0
  117. package/src/capabilities/shared/registry.ts +70 -0
  118. package/src/capabilities/skill/discover.ts +178 -0
  119. package/src/capabilities/skill/index.ts +12 -0
  120. package/src/capabilities/skill/render.ts +60 -0
  121. package/src/capabilities/skill/skill.test.ts +142 -0
  122. package/src/capabilities/skill/verbs.ts +100 -0
  123. package/src/capabilities/sources/collectStatus.ts +87 -0
  124. package/src/capabilities/sources/index.ts +15 -0
  125. package/src/capabilities/sources/installSkills.ts +124 -0
  126. package/src/capabilities/sources/runUpdate.ts +407 -0
  127. package/src/capabilities/sources/sources.test.ts +642 -0
  128. package/src/capabilities/sources/status.render.ts +56 -0
  129. package/src/capabilities/sources/status.verb.ts +42 -0
  130. package/src/capabilities/sources/types.ts +51 -0
  131. package/src/capabilities/sources/update.render.ts +35 -0
  132. package/src/capabilities/sources/update.verb.ts +76 -0
  133. package/src/capabilities/standard/index.ts +18 -0
  134. package/src/capabilities/standard/pack.ts +128 -0
  135. package/src/capabilities/standard/parity.test.ts +208 -0
  136. package/src/capabilities/surface.test.ts +208 -0
  137. package/src/capabilities/tier/index.ts +19 -0
  138. package/src/capabilities/tier/lookup.render.ts +34 -0
  139. package/src/capabilities/tier/lookup.test.ts +68 -0
  140. package/src/capabilities/tier/lookup.verb.ts +44 -0
  141. package/src/capabilities/tier/pack.ts +28 -0
  142. package/src/capabilities/tier/runLookup.ts +59 -0
  143. package/src/capabilities/token/addConfig.render.ts +27 -0
  144. package/src/capabilities/token/addConfig.test.ts +62 -0
  145. package/src/capabilities/token/addConfig.verb.ts +40 -0
  146. package/src/capabilities/token/index.ts +19 -0
  147. package/src/capabilities/token/pack.ts +58 -0
  148. package/src/capabilities/token/runAddConfig.ts +95 -0
  149. package/src/capabilities/upgrade/index.ts +6 -0
  150. package/src/capabilities/upgrade/runUpgrade.ts +119 -0
  151. package/src/capabilities/upgrade/types.ts +21 -0
  152. package/src/capabilities/upgrade/upgrade.render.ts +55 -0
  153. package/src/capabilities/upgrade/upgrade.test.ts +372 -0
  154. package/src/capabilities/upgrade/upgrade.verb.ts +56 -0
  155. package/src/constants.test.ts +33 -0
  156. package/src/constants.ts +38 -70
  157. package/src/index.ts +27 -122
  158. package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +340 -0
  159. package/src/kernel/completion/bashDrive.test.ts +73 -0
  160. package/src/kernel/completion/complete.test.ts +101 -0
  161. package/src/kernel/completion/complete.ts +77 -0
  162. package/src/kernel/completion/emitScripts.test.ts +173 -0
  163. package/src/kernel/completion/emitScripts.ts +122 -0
  164. package/src/kernel/completion/entitySource.test.ts +198 -0
  165. package/src/kernel/completion/entitySource.ts +269 -0
  166. package/src/kernel/completion/index.ts +42 -0
  167. package/src/kernel/completion/model.test.ts +405 -0
  168. package/src/kernel/completion/model.ts +259 -0
  169. package/src/kernel/completion/parse.test.ts +338 -0
  170. package/src/kernel/completion/parse.ts +294 -0
  171. package/src/kernel/completion/rank.test.ts +100 -0
  172. package/src/kernel/completion/rank.ts +118 -0
  173. package/src/kernel/completion/resolve.test.ts +204 -0
  174. package/src/kernel/completion/resolve.ts +133 -0
  175. package/src/kernel/completion/safety.test.ts +374 -0
  176. package/src/kernel/completion/templates/bash.ts +249 -0
  177. package/src/kernel/completion/templates/fish.ts +245 -0
  178. package/src/kernel/completion/templates/shared.ts +134 -0
  179. package/src/kernel/completion/templates/zsh.ts +246 -0
  180. package/src/kernel/completion/types.ts +153 -0
  181. package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +11 -0
  182. package/src/kernel/config/defaults.ts +28 -0
  183. package/src/kernel/config/evaluateProjectConfig.ts +119 -0
  184. package/src/kernel/config/findProjectConfig.ts +45 -0
  185. package/src/kernel/config/firstRun.test.ts +60 -0
  186. package/src/kernel/config/firstRun.ts +91 -0
  187. package/src/kernel/config/globalConfig.ts +94 -0
  188. package/src/kernel/config/index.ts +35 -0
  189. package/src/kernel/config/paths.ts +39 -0
  190. package/src/kernel/config/readConfig.test.ts +245 -0
  191. package/src/kernel/config/readConfig.ts +94 -0
  192. package/src/kernel/config/schema.ts +56 -0
  193. package/src/kernel/config/types.ts +106 -0
  194. package/src/kernel/config/writeConfigField.ts +82 -0
  195. package/src/kernel/error/PragmaError.test.ts +119 -0
  196. package/src/kernel/error/PragmaError.ts +182 -0
  197. package/src/kernel/error/constants.ts +38 -0
  198. package/src/kernel/error/fromTaskError.test.ts +83 -0
  199. package/src/kernel/error/fromTaskError.ts +80 -0
  200. package/src/kernel/error/index.ts +23 -0
  201. package/src/kernel/error/recovery.test.ts +60 -0
  202. package/src/kernel/error/recovery.ts +49 -0
  203. package/src/kernel/error/renderError.ts +101 -0
  204. package/src/kernel/error/serialize.ts +28 -0
  205. package/src/kernel/error/types.ts +62 -0
  206. package/src/kernel/packs/collect.test.ts +138 -0
  207. package/src/kernel/packs/collect.ts +108 -0
  208. package/src/kernel/packs/compile.test.ts +229 -0
  209. package/src/kernel/packs/compile.ts +315 -0
  210. package/src/kernel/packs/disclosure.test.ts +200 -0
  211. package/src/kernel/packs/disclosure.ts +98 -0
  212. package/src/kernel/packs/glob.ts +39 -0
  213. package/src/kernel/packs/graphql/buildLookupDocument.ts +397 -0
  214. package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +217 -0
  215. package/src/kernel/packs/graphql/nameMap.ts +67 -0
  216. package/src/kernel/packs/graphqlSource.test.ts +383 -0
  217. package/src/kernel/packs/iri.ts +78 -0
  218. package/src/kernel/packs/renderPack.ts +196 -0
  219. package/src/kernel/packs/resolveEntity.ts +232 -0
  220. package/src/kernel/packs/runBodies.ts +157 -0
  221. package/src/kernel/packs/sample.ts +60 -0
  222. package/src/kernel/packs/schema.ts +328 -0
  223. package/src/kernel/packs/sparql/applyFilters.ts +83 -0
  224. package/src/kernel/packs/sparql/applySearch.ts +33 -0
  225. package/src/kernel/packs/sparql/buildLookupQuery.ts +180 -0
  226. package/src/kernel/packs/sparql/escape.ts +22 -0
  227. package/src/kernel/packs/sparql/runSelect.test.ts +80 -0
  228. package/src/kernel/packs/sparql/runSelect.ts +84 -0
  229. package/src/kernel/packs/toolDescription.test.ts +81 -0
  230. package/src/kernel/packs/types.ts +337 -0
  231. package/src/kernel/packs/uniqueness.ts +35 -0
  232. package/src/kernel/project/cli/buildProgram.test.ts +387 -0
  233. package/src/kernel/project/cli/buildProgram.ts +280 -0
  234. package/src/kernel/project/cli/dispatch.test.ts +288 -0
  235. package/src/kernel/project/cli/dispatch.ts +334 -0
  236. package/src/kernel/project/cli/exitCodes.test.ts +59 -0
  237. package/src/kernel/project/cli/exitCodes.ts +68 -0
  238. package/src/kernel/project/cli/globalFlags.test.ts +99 -0
  239. package/src/kernel/project/cli/globalFlags.ts +149 -0
  240. package/src/kernel/project/cli/helpFormat.ts +58 -0
  241. package/src/kernel/project/cli/index.ts +21 -0
  242. package/src/kernel/project/cli/interactionSeam.test.ts +99 -0
  243. package/src/kernel/project/cli/rootHelp.ts +218 -0
  244. package/src/kernel/project/cli/suggest.test.ts +54 -0
  245. package/src/kernel/project/cli/suggest.ts +67 -0
  246. package/src/kernel/project/cli/suggestNames.ts +122 -0
  247. package/src/kernel/project/cli/verbHelp.test.ts +138 -0
  248. package/src/kernel/project/cli/verbHelp.ts +144 -0
  249. package/src/kernel/project/mcp/buildServer.ts +70 -0
  250. package/src/kernel/project/mcp/envelope.ts +44 -0
  251. package/src/kernel/project/mcp/index.ts +8 -0
  252. package/src/kernel/project/mcp/instructions.ts +48 -0
  253. package/src/kernel/project/mcp/parity.test.ts +72 -0
  254. package/src/kernel/project/mcp/prompts/prompts.test.ts +96 -0
  255. package/src/kernel/project/mcp/prompts/provider.ts +74 -0
  256. package/src/kernel/project/mcp/prompts/source.ts +194 -0
  257. package/src/kernel/project/mcp/registerVerb.test.ts +238 -0
  258. package/src/kernel/project/mcp/registerVerb.ts +296 -0
  259. package/src/kernel/project/mcp/serve.ts +34 -0
  260. package/src/kernel/project/mcp/toolDescriptions.test.ts +80 -0
  261. package/src/kernel/render/__snapshots__/renderers.test.ts.snap +127 -0
  262. package/src/kernel/render/compactUri.ts +25 -0
  263. package/src/kernel/render/contracts.ts +72 -0
  264. package/src/kernel/render/disclosure.ts +44 -0
  265. package/src/kernel/render/envelope.ts +50 -0
  266. package/src/kernel/render/formatters.ts +30 -0
  267. package/src/kernel/render/index.ts +30 -0
  268. package/src/kernel/render/prefixes.ts +21 -0
  269. package/src/kernel/render/renderers.test.ts +171 -0
  270. package/src/kernel/render/renderers.ts +429 -0
  271. package/src/kernel/render/writeStdout.test.ts +43 -0
  272. package/src/kernel/render/writeStdout.ts +49 -0
  273. package/src/kernel/runtime/boot.test.ts +69 -0
  274. package/src/kernel/runtime/boot.ts +59 -0
  275. package/src/kernel/runtime/facade.test.ts +125 -0
  276. package/src/kernel/runtime/facade.ts +47 -0
  277. package/src/kernel/runtime/graphpack/build.ts +148 -0
  278. package/src/kernel/runtime/graphpack/buildIndex.ts +229 -0
  279. package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +8 -0
  280. package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +4 -0
  281. package/src/kernel/runtime/graphpack/embedded/sample.ttl +39 -0
  282. package/src/kernel/runtime/graphpack/embedded.ts +70 -0
  283. package/src/kernel/runtime/graphpack/graphpack.test.ts +153 -0
  284. package/src/kernel/runtime/graphpack/hash.ts +46 -0
  285. package/src/kernel/runtime/graphpack/index.ts +21 -0
  286. package/src/kernel/runtime/graphpack/manifest.ts +55 -0
  287. package/src/kernel/runtime/graphpack/read.ts +102 -0
  288. package/src/kernel/runtime/graphpack/types.ts +111 -0
  289. package/src/kernel/runtime/index.ts +15 -0
  290. package/src/kernel/runtime/loadSession.ts +56 -0
  291. package/src/kernel/runtime/lock.ts +90 -0
  292. package/src/kernel/runtime/paths.ts +37 -0
  293. package/src/kernel/runtime/probe.test.ts +16 -0
  294. package/src/kernel/runtime/probe.ts +39 -0
  295. package/src/kernel/runtime/readEntity.ts +83 -0
  296. package/src/kernel/runtime/refs/gitOps.ts +88 -0
  297. package/src/kernel/runtime/refs/parseRef.test.ts +34 -0
  298. package/src/kernel/runtime/refs/parseRef.ts +103 -0
  299. package/src/kernel/runtime/refs/resolve.ts +320 -0
  300. package/src/kernel/runtime/resolveSources.test.ts +154 -0
  301. package/src/kernel/runtime/resolveSources.ts +66 -0
  302. package/src/kernel/runtime/store.test.ts +94 -0
  303. package/src/kernel/runtime/store.ts +90 -0
  304. package/src/kernel/runtime/storeless.test.ts +86 -0
  305. package/src/kernel/runtime/types.ts +210 -0
  306. package/src/kernel/runtime/wasmEmbed.test.ts +142 -0
  307. package/src/kernel/spec/asVerb.ts +23 -0
  308. package/src/kernel/spec/emitSurface.test.ts +65 -0
  309. package/src/kernel/spec/emitSurface.ts +223 -0
  310. package/src/kernel/spec/index.ts +34 -0
  311. package/src/kernel/spec/surfaceConformance.test.ts +94 -0
  312. package/src/kernel/spec/surfaceConformance.ts +135 -0
  313. package/src/kernel/spec/types.ts +233 -0
  314. package/src/kernel/spec/validate.test.ts +81 -0
  315. package/src/kernel/spec/validate.ts +125 -0
  316. package/src/testing/PARITY_GAPS.test.ts +32 -0
  317. package/src/testing/PARITY_GAPS.ts +179 -0
  318. package/src/testing/behavioral/README.md +164 -0
  319. package/src/testing/behavioral/agentSession.mcp.test.ts +160 -0
  320. package/src/testing/behavioral/autoLlm.e2e.test.ts +44 -0
  321. package/src/testing/behavioral/completion.test.ts +132 -0
  322. package/src/testing/behavioral/disclosure.test.ts +103 -0
  323. package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
  324. package/src/testing/behavioral/errorMatrix.storeless.test.ts +123 -0
  325. package/src/testing/behavioral/exitCodes.e2e.test.ts +53 -0
  326. package/src/testing/behavioral/firstRun.e2e.test.ts +40 -0
  327. package/src/testing/behavioral/harness.foundation.test.ts +136 -0
  328. package/src/testing/behavioral/journeys.cli.test.ts +129 -0
  329. package/src/testing/behavioral/liveReadSurface.ts +80 -0
  330. package/src/testing/behavioral/mcpServe.e2e.test.ts +21 -0
  331. package/src/testing/behavioral/mcpSurface.test.ts +139 -0
  332. package/src/testing/behavioral/parity.test.ts +224 -0
  333. package/src/testing/behavioral/rootCli.e2e.test.ts +62 -0
  334. package/src/testing/eval/__snapshots__/eval.test.ts.snap +201 -0
  335. package/src/testing/eval/cases/assembly.ts +195 -0
  336. package/src/testing/eval/cases/effectful.ts +245 -0
  337. package/src/testing/eval/cases/readNouns.ts +232 -0
  338. package/src/testing/eval/cases/stable.ts +163 -0
  339. package/src/testing/eval/eval.test.ts +74 -0
  340. package/src/testing/eval/harness.ts +91 -0
  341. package/src/testing/eval/report.ts +58 -0
  342. package/src/testing/fixtures/blockGraph.ts +112 -0
  343. package/src/testing/fixtures/completionFixture.ts +239 -0
  344. package/src/testing/fixtures/fixtureCapability.ts +175 -0
  345. package/src/testing/fixtures/graph/canonical.ts +184 -0
  346. package/src/testing/fixtures/packs/recipe.ts +78 -0
  347. package/src/testing/helpers/fixtureGraph.ts +148 -0
  348. package/src/testing/helpers/golden.ts +45 -0
  349. package/src/testing/helpers/packRuntime.ts +118 -0
  350. package/src/testing/helpers/parity.ts +86 -0
  351. package/src/testing/helpers/projectCli.ts +35 -0
  352. package/src/testing/helpers/projectMcp.ts +145 -0
  353. package/src/testing/helpers/runCli.ts +128 -0
  354. package/src/testing/perf/budgets.test.ts +164 -0
  355. package/src/testing/perf/budgets.ts +37 -0
  356. package/src/testing/perf/globalSetup.ts +30 -0
  357. package/src/testing/perf/measure.ts +97 -0
  358. package/src/testing/setupXdgIsolation.ts +13 -12
  359. package/src/types.ts +42 -0
  360. package/README.md +0 -458
  361. package/src/bin.test.ts +0 -54
  362. package/src/compile-validation.runner.ts +0 -137
  363. package/src/compile-validation.ts +0 -191
  364. package/src/completions/computeSocketPath.test.ts +0 -26
  365. package/src/completions/computeSocketPath.ts +0 -16
  366. package/src/completions/constants.ts +0 -25
  367. package/src/completions/handleQuery.test.ts +0 -125
  368. package/src/completions/handleQuery.ts +0 -49
  369. package/src/completions/index.ts +0 -14
  370. package/src/completions/queryCompletions.test.ts +0 -105
  371. package/src/completions/queryCompletions.ts +0 -75
  372. package/src/completions/querySocket.test.ts +0 -101
  373. package/src/completions/querySocket.ts +0 -71
  374. package/src/completions/startCompletionsServer.test.ts +0 -74
  375. package/src/completions/startCompletionsServer.ts +0 -75
  376. package/src/completions/startCompletionsServer.unit.test.ts +0 -131
  377. package/src/completions/waitForSocket.test.ts +0 -27
  378. package/src/completions/waitForSocket.ts +0 -27
  379. package/src/config/configExists.ts +0 -14
  380. package/src/config/defaultConfig.test.ts +0 -33
  381. package/src/config/defaultConfig.ts +0 -59
  382. package/src/config/defaults.json +0 -17
  383. package/src/config/findProjectConfigPath.test.ts +0 -53
  384. package/src/config/findProjectConfigPath.ts +0 -36
  385. package/src/config/index.ts +0 -21
  386. package/src/config/mergeConfigFileUpdate.ts +0 -58
  387. package/src/config/parseConfigValues.ts +0 -217
  388. package/src/config/readConfig.test.ts +0 -395
  389. package/src/config/readConfig.ts +0 -21
  390. package/src/config/readConfigLayers.test.ts +0 -109
  391. package/src/config/readConfigLayers.ts +0 -118
  392. package/src/config/resolveConfigPath.test.ts +0 -20
  393. package/src/config/resolveConfigPath.ts +0 -11
  394. package/src/config/resolveGlobalConfigPath.ts +0 -13
  395. package/src/config/resolveWriteConfigPath.test.ts +0 -53
  396. package/src/config/resolveWriteConfigPath.ts +0 -31
  397. package/src/config/types.ts +0 -128
  398. package/src/config/writeConfig.ts +0 -37
  399. package/src/domains/block/blockConfig.ts +0 -97
  400. package/src/domains/block/commands/index.ts +0 -5
  401. package/src/domains/block/commands/list.test.ts +0 -111
  402. package/src/domains/block/commands/list.ts +0 -11
  403. package/src/domains/block/commands/lookup.test.ts +0 -187
  404. package/src/domains/block/commands/lookup.ts +0 -14
  405. package/src/domains/block/commands/sample.ts +0 -56
  406. package/src/domains/block/formatters/index.ts +0 -5
  407. package/src/domains/block/formatters/list.test.ts +0 -107
  408. package/src/domains/block/formatters/list.ts +0 -50
  409. package/src/domains/block/formatters/lookup.test.ts +0 -318
  410. package/src/domains/block/formatters/lookup.ts +0 -149
  411. package/src/domains/block/formatters/sample.ts +0 -21
  412. package/src/domains/block/formatters/types.ts +0 -16
  413. package/src/domains/block/helpers/index.ts +0 -4
  414. package/src/domains/block/helpers/resolveAspects.test.ts +0 -64
  415. package/src/domains/block/helpers/resolveAspects.ts +0 -35
  416. package/src/domains/block/index.ts +0 -25
  417. package/src/domains/block/mcp/index.ts +0 -2
  418. package/src/domains/block/mcp/specs.ts +0 -67
  419. package/src/domains/block/operations/index.ts +0 -5
  420. package/src/domains/block/operations/list.test.ts +0 -80
  421. package/src/domains/block/operations/list.ts +0 -72
  422. package/src/domains/block/operations/lookup.test.ts +0 -129
  423. package/src/domains/block/operations/lookup.ts +0 -446
  424. package/src/domains/block/operations/sample.ts +0 -41
  425. package/src/domains/block/orchestration/blockEmptyError.test.ts +0 -26
  426. package/src/domains/block/orchestration/blockEmptyError.ts +0 -19
  427. package/src/domains/block/orchestration/buildBlockFilters.ts +0 -12
  428. package/src/domains/block/orchestration/enrichBlocks.ts +0 -44
  429. package/src/domains/block/orchestration/index.ts +0 -5
  430. package/src/domains/block/orchestration/resolveBlockList.ts +0 -39
  431. package/src/domains/block/orchestration/resolveBlockLookup.ts +0 -35
  432. package/src/domains/block/stories.test.ts +0 -28
  433. package/src/domains/block/stories.ts +0 -260
  434. package/src/domains/block/types.ts +0 -30
  435. package/src/domains/config/commands/channel.test.ts +0 -128
  436. package/src/domains/config/commands/channel.ts +0 -99
  437. package/src/domains/config/commands/configScope.ts +0 -46
  438. package/src/domains/config/commands/framework.test.ts +0 -119
  439. package/src/domains/config/commands/framework.ts +0 -103
  440. package/src/domains/config/commands/index.ts +0 -6
  441. package/src/domains/config/commands/show.test.ts +0 -61
  442. package/src/domains/config/commands/show.ts +0 -11
  443. package/src/domains/config/commands/tier.test.ts +0 -102
  444. package/src/domains/config/commands/tier.ts +0 -97
  445. package/src/domains/config/commands/trace.test.ts +0 -165
  446. package/src/domains/config/commands/trace.ts +0 -83
  447. package/src/domains/config/formatters/channel.test.ts +0 -70
  448. package/src/domains/config/formatters/channel.ts +0 -37
  449. package/src/domains/config/formatters/framework.ts +0 -37
  450. package/src/domains/config/formatters/index.ts +0 -6
  451. package/src/domains/config/formatters/show.test.ts +0 -153
  452. package/src/domains/config/formatters/show.ts +0 -89
  453. package/src/domains/config/formatters/tier.test.ts +0 -86
  454. package/src/domains/config/formatters/tier.ts +0 -48
  455. package/src/domains/config/formatters/trace.ts +0 -28
  456. package/src/domains/config/index.ts +0 -36
  457. package/src/domains/config/mcp/index.ts +0 -2
  458. package/src/domains/config/mcp/specs.ts +0 -100
  459. package/src/domains/config/operations/index.ts +0 -6
  460. package/src/domains/config/operations/show.test.ts +0 -78
  461. package/src/domains/config/operations/show.ts +0 -48
  462. package/src/domains/config/operations/types.ts +0 -20
  463. package/src/domains/config/operations/validateChannel.test.ts +0 -36
  464. package/src/domains/config/operations/validateChannel.ts +0 -24
  465. package/src/domains/config/operations/validateFramework.ts +0 -24
  466. package/src/domains/config/operations/validateTier.test.ts +0 -65
  467. package/src/domains/config/operations/validateTier.ts +0 -43
  468. package/src/domains/config/stories.ts +0 -42
  469. package/src/domains/config/tasks/index.ts +0 -6
  470. package/src/domains/config/tasks/setChannel.ts +0 -21
  471. package/src/domains/config/tasks/setFramework.ts +0 -21
  472. package/src/domains/config/tasks/setTier.ts +0 -20
  473. package/src/domains/config/tasks/setTrace.ts +0 -20
  474. package/src/domains/config/tasks/writeConfigField.ts +0 -41
  475. package/src/domains/create/generatorPack/bundled.ts +0 -49
  476. package/src/domains/create/generatorPack/compileGeneratorPack.test.ts +0 -159
  477. package/src/domains/create/generatorPack/compileGeneratorPack.ts +0 -312
  478. package/src/domains/create/index.ts +0 -21
  479. package/src/domains/create/mcp/index.ts +0 -2
  480. package/src/domains/create/mcp/specs.ts +0 -13
  481. package/src/domains/create/renderGeneratorUi.test.ts +0 -103
  482. package/src/domains/create/renderGeneratorUi.ts +0 -65
  483. package/src/domains/doctor/commands/doctor.test.ts +0 -75
  484. package/src/domains/doctor/commands/doctor.ts +0 -43
  485. package/src/domains/doctor/commands/index.ts +0 -2
  486. package/src/domains/doctor/formatters/doctor.test.ts +0 -165
  487. package/src/domains/doctor/formatters/doctor.ts +0 -136
  488. package/src/domains/doctor/formatters/index.ts +0 -2
  489. package/src/domains/doctor/index.ts +0 -9
  490. package/src/domains/doctor/mcp/index.ts +0 -2
  491. package/src/domains/doctor/mcp/specs.ts +0 -41
  492. package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
  493. package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
  494. package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -133
  495. package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
  496. package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
  497. package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -76
  498. package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
  499. package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
  500. package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
  501. package/src/domains/doctor/operations/checks/index.ts +0 -10
  502. package/src/domains/doctor/operations/checks.test.ts +0 -307
  503. package/src/domains/doctor/operations/index.ts +0 -3
  504. package/src/domains/doctor/operations/runChecks.test.ts +0 -176
  505. package/src/domains/doctor/operations/runChecks.ts +0 -78
  506. package/src/domains/doctor/operations/types.ts +0 -42
  507. package/src/domains/graph/commands/index.ts +0 -4
  508. package/src/domains/graph/commands/inspect.test.ts +0 -94
  509. package/src/domains/graph/commands/inspect.ts +0 -63
  510. package/src/domains/graph/commands/query.test.ts +0 -94
  511. package/src/domains/graph/commands/query.ts +0 -60
  512. package/src/domains/graph/formatters/index.ts +0 -4
  513. package/src/domains/graph/formatters/inspect.ts +0 -50
  514. package/src/domains/graph/formatters/query.test.ts +0 -87
  515. package/src/domains/graph/formatters/query.ts +0 -74
  516. package/src/domains/graph/helpers/index.ts +0 -3
  517. package/src/domains/graph/helpers/resolveUri.test.ts +0 -50
  518. package/src/domains/graph/helpers/resolveUri.ts +0 -77
  519. package/src/domains/graph/index.ts +0 -22
  520. package/src/domains/graph/mcp/index.ts +0 -2
  521. package/src/domains/graph/mcp/specs.ts +0 -82
  522. package/src/domains/graph/operations/executeQuery.test.ts +0 -68
  523. package/src/domains/graph/operations/executeQuery.ts +0 -32
  524. package/src/domains/graph/operations/index.ts +0 -4
  525. package/src/domains/graph/operations/inspectUri.test.ts +0 -101
  526. package/src/domains/graph/operations/inspectUri.ts +0 -64
  527. package/src/domains/graphql/commands/build.test.ts +0 -196
  528. package/src/domains/graphql/commands/build.ts +0 -117
  529. package/src/domains/graphql/commands/check.test.ts +0 -141
  530. package/src/domains/graphql/commands/check.ts +0 -81
  531. package/src/domains/graphql/commands/index.ts +0 -5
  532. package/src/domains/graphql/commands/serve.test.ts +0 -46
  533. package/src/domains/graphql/commands/serve.ts +0 -141
  534. package/src/domains/graphql/constants.ts +0 -10
  535. package/src/domains/graphql/formatters/index.ts +0 -3
  536. package/src/domains/graphql/formatters/report.ts +0 -78
  537. package/src/domains/graphql/helpers/gatherSources.test.ts +0 -92
  538. package/src/domains/graphql/helpers/gatherSources.ts +0 -58
  539. package/src/domains/graphql/helpers/index.ts +0 -6
  540. package/src/domains/graphql/helpers/parsePrefixes.test.ts +0 -44
  541. package/src/domains/graphql/helpers/parsePrefixes.ts +0 -38
  542. package/src/domains/graphql/helpers/resolveSourceFiles.test.ts +0 -65
  543. package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -66
  544. package/src/domains/graphql/helpers/routeGraphql.test.ts +0 -43
  545. package/src/domains/graphql/helpers/routeGraphql.ts +0 -28
  546. package/src/domains/graphql/index.ts +0 -24
  547. package/src/domains/graphql/operations/compileSchema.test.ts +0 -95
  548. package/src/domains/graphql/operations/compileSchema.ts +0 -107
  549. package/src/domains/graphql/operations/createSchemaServer.test.ts +0 -50
  550. package/src/domains/graphql/operations/createSchemaServer.ts +0 -75
  551. package/src/domains/graphql/operations/ensureSchemaArtifact.test.ts +0 -167
  552. package/src/domains/graphql/operations/ensureSchemaArtifact.ts +0 -178
  553. package/src/domains/graphql/operations/index.ts +0 -17
  554. package/src/domains/graphql/types.ts +0 -29
  555. package/src/domains/info/commands/index.ts +0 -4
  556. package/src/domains/info/commands/info.test.ts +0 -88
  557. package/src/domains/info/commands/info.ts +0 -47
  558. package/src/domains/info/commands/upgrade.test.ts +0 -183
  559. package/src/domains/info/commands/upgrade.ts +0 -153
  560. package/src/domains/info/constants.test.ts +0 -22
  561. package/src/domains/info/constants.ts +0 -15
  562. package/src/domains/info/formatters/index.ts +0 -8
  563. package/src/domains/info/formatters/info.test.ts +0 -207
  564. package/src/domains/info/formatters/info.ts +0 -131
  565. package/src/domains/info/formatters/upgrade.test.ts +0 -136
  566. package/src/domains/info/formatters/upgrade.ts +0 -70
  567. package/src/domains/info/index.ts +0 -9
  568. package/src/domains/info/mcp/index.ts +0 -2
  569. package/src/domains/info/mcp/specs.ts +0 -65
  570. package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
  571. package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
  572. package/src/domains/info/operations/collectEntityCounts.test.ts +0 -156
  573. package/src/domains/info/operations/collectEntityCounts.ts +0 -123
  574. package/src/domains/info/operations/collectInfo.test.ts +0 -122
  575. package/src/domains/info/operations/collectInfo.ts +0 -94
  576. package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
  577. package/src/domains/info/operations/collectStoreSummary.ts +0 -42
  578. package/src/domains/info/operations/index.ts +0 -6
  579. package/src/domains/info/types.test-d.ts +0 -35
  580. package/src/domains/info/types.ts +0 -67
  581. package/src/domains/llm/capabilities.test.ts +0 -111
  582. package/src/domains/llm/commands/capabilities.ts +0 -37
  583. package/src/domains/llm/commands/index.ts +0 -4
  584. package/src/domains/llm/commands/llm.ts +0 -41
  585. package/src/domains/llm/data/commandReference.ts +0 -106
  586. package/src/domains/llm/data/decisionTrees.ts +0 -55
  587. package/src/domains/llm/data/index.ts +0 -6
  588. package/src/domains/llm/data/toolCatalog.ts +0 -221
  589. package/src/domains/llm/formatters/capabilities.ts +0 -50
  590. package/src/domains/llm/formatters/index.ts +0 -4
  591. package/src/domains/llm/formatters/orientation.ts +0 -57
  592. package/src/domains/llm/index.ts +0 -9
  593. package/src/domains/llm/llmCommand.test.ts +0 -101
  594. package/src/domains/llm/mcp/index.ts +0 -2
  595. package/src/domains/llm/mcp/specs.ts +0 -93
  596. package/src/domains/llm/operations/collectContext.test.ts +0 -64
  597. package/src/domains/llm/operations/collectContext.ts +0 -37
  598. package/src/domains/llm/operations/index.ts +0 -3
  599. package/src/domains/llm/types.ts +0 -72
  600. package/src/domains/modifier/commands/index.ts +0 -5
  601. package/src/domains/modifier/commands/list.test.ts +0 -57
  602. package/src/domains/modifier/commands/list.ts +0 -9
  603. package/src/domains/modifier/commands/lookup.test.ts +0 -91
  604. package/src/domains/modifier/commands/lookup.ts +0 -14
  605. package/src/domains/modifier/commands/sample.ts +0 -54
  606. package/src/domains/modifier/formatters/index.ts +0 -8
  607. package/src/domains/modifier/formatters/list.test.ts +0 -38
  608. package/src/domains/modifier/formatters/list.ts +0 -22
  609. package/src/domains/modifier/formatters/lookup.test.ts +0 -33
  610. package/src/domains/modifier/formatters/lookup.ts +0 -50
  611. package/src/domains/modifier/formatters/sample.ts +0 -15
  612. package/src/domains/modifier/index.ts +0 -27
  613. package/src/domains/modifier/mcp/index.ts +0 -2
  614. package/src/domains/modifier/mcp/specs.ts +0 -65
  615. package/src/domains/modifier/modifierConfig.ts +0 -36
  616. package/src/domains/modifier/operations/index.ts +0 -5
  617. package/src/domains/modifier/operations/list.test.ts +0 -39
  618. package/src/domains/modifier/operations/list.ts +0 -41
  619. package/src/domains/modifier/operations/lookup.test.ts +0 -37
  620. package/src/domains/modifier/operations/lookup.ts +0 -69
  621. package/src/domains/modifier/operations/sample.ts +0 -32
  622. package/src/domains/modifier/orchestration/index.ts +0 -3
  623. package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
  624. package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
  625. package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
  626. package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
  627. package/src/domains/modifier/stories.test.ts +0 -20
  628. package/src/domains/modifier/stories.ts +0 -86
  629. package/src/domains/modifier/types.ts +0 -5
  630. package/src/domains/ontology/commands/index.ts +0 -4
  631. package/src/domains/ontology/commands/list.test.ts +0 -84
  632. package/src/domains/ontology/commands/list.ts +0 -11
  633. package/src/domains/ontology/commands/show.test.ts +0 -179
  634. package/src/domains/ontology/commands/show.ts +0 -14
  635. package/src/domains/ontology/formatters/index.ts +0 -5
  636. package/src/domains/ontology/formatters/list.ts +0 -64
  637. package/src/domains/ontology/formatters/show.ts +0 -396
  638. package/src/domains/ontology/helpers/buildClassTree.ts +0 -89
  639. package/src/domains/ontology/helpers/completeClassNames.ts +0 -43
  640. package/src/domains/ontology/helpers/expandOntologyIris.ts +0 -79
  641. package/src/domains/ontology/helpers/findNamespace.ts +0 -23
  642. package/src/domains/ontology/helpers/index.ts +0 -21
  643. package/src/domains/ontology/helpers/queryClasses.ts +0 -66
  644. package/src/domains/ontology/helpers/queryProperties.ts +0 -90
  645. package/src/domains/ontology/helpers/queryTboxFacts.ts +0 -160
  646. package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
  647. package/src/domains/ontology/index.ts +0 -26
  648. package/src/domains/ontology/mcp/index.ts +0 -2
  649. package/src/domains/ontology/mcp/specs.ts +0 -16
  650. package/src/domains/ontology/operations/index.ts +0 -5
  651. package/src/domains/ontology/operations/listOntologies.test.ts +0 -122
  652. package/src/domains/ontology/operations/listOntologies.ts +0 -197
  653. package/src/domains/ontology/operations/showOntology.test.ts +0 -184
  654. package/src/domains/ontology/operations/showOntology.ts +0 -323
  655. package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -41
  656. package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
  657. package/src/domains/ontology/stories.test.ts +0 -36
  658. package/src/domains/ontology/stories.ts +0 -153
  659. package/src/domains/refs/commands/updateRefs.ts +0 -52
  660. package/src/domains/refs/formatters/updateRefs.ts +0 -27
  661. package/src/domains/refs/index.ts +0 -27
  662. package/src/domains/refs/operations/gitOps.test.ts +0 -155
  663. package/src/domains/refs/operations/gitOps.ts +0 -92
  664. package/src/domains/refs/operations/index.ts +0 -10
  665. package/src/domains/refs/operations/parseRef.test.ts +0 -157
  666. package/src/domains/refs/operations/parseRef.ts +0 -114
  667. package/src/domains/refs/operations/paths.test.ts +0 -98
  668. package/src/domains/refs/operations/paths.ts +0 -91
  669. package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
  670. package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
  671. package/src/domains/refs/operations/updateRefs.test.ts +0 -167
  672. package/src/domains/refs/operations/updateRefs.ts +0 -180
  673. package/src/domains/setup/commands/all.ts +0 -58
  674. package/src/domains/setup/commands/completions.ts +0 -85
  675. package/src/domains/setup/commands/entrypoints.test.ts +0 -170
  676. package/src/domains/setup/commands/index.ts +0 -7
  677. package/src/domains/setup/commands/lsp.ts +0 -49
  678. package/src/domains/setup/commands/mcp.ts +0 -119
  679. package/src/domains/setup/commands/setup.ts +0 -70
  680. package/src/domains/setup/commands/skills.test.ts +0 -68
  681. package/src/domains/setup/commands/skills.ts +0 -110
  682. package/src/domains/setup/formatters/index.ts +0 -2
  683. package/src/domains/setup/formatters/skills.test.ts +0 -103
  684. package/src/domains/setup/formatters/skills.ts +0 -112
  685. package/src/domains/setup/formatters/types.ts +0 -7
  686. package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
  687. package/src/domains/setup/helpers/completionScripts.ts +0 -92
  688. package/src/domains/setup/helpers/constants.ts +0 -2
  689. package/src/domains/setup/helpers/detectShell.test.ts +0 -48
  690. package/src/domains/setup/helpers/detectShell.ts +0 -20
  691. package/src/domains/setup/helpers/index.ts +0 -12
  692. package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
  693. package/src/domains/setup/helpers/runSetupTask.ts +0 -221
  694. package/src/domains/setup/index.ts +0 -37
  695. package/src/domains/setup/operations/index.ts +0 -6
  696. package/src/domains/setup/operations/setupAll.test.ts +0 -48
  697. package/src/domains/setup/operations/setupAll.ts +0 -41
  698. package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
  699. package/src/domains/setup/operations/setupCompletions.ts +0 -54
  700. package/src/domains/setup/operations/setupLsp.test.ts +0 -30
  701. package/src/domains/setup/operations/setupLsp.ts +0 -22
  702. package/src/domains/setup/operations/setupMcp.test.ts +0 -120
  703. package/src/domains/setup/operations/setupMcp.ts +0 -108
  704. package/src/domains/setup/operations/setupSkills.test.ts +0 -191
  705. package/src/domains/setup/operations/setupSkills.ts +0 -160
  706. package/src/domains/setup/types.ts +0 -18
  707. package/src/domains/shared/ToolSpec.ts +0 -49
  708. package/src/domains/shared/bootStore.bareCore.test.ts +0 -63
  709. package/src/domains/shared/bootStore.test.ts +0 -82
  710. package/src/domains/shared/bootStore.ts +0 -171
  711. package/src/domains/shared/buildQuery.ts +0 -18
  712. package/src/domains/shared/compactUri.test.ts +0 -32
  713. package/src/domains/shared/compactUri.ts +0 -21
  714. package/src/domains/shared/context.ts +0 -16
  715. package/src/domains/shared/contracts.ts +0 -164
  716. package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
  717. package/src/domains/shared/createInteractivePromptSession.ts +0 -236
  718. package/src/domains/shared/emptyErrorRecovery.test.ts +0 -106
  719. package/src/domains/shared/extractLocalName.test.ts +0 -21
  720. package/src/domains/shared/extractLocalName.ts +0 -14
  721. package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
  722. package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
  723. package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
  724. package/src/domains/shared/filters/buildFilters.test.ts +0 -33
  725. package/src/domains/shared/filters/buildFilters.ts +0 -30
  726. package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
  727. package/src/domains/shared/filters/buildTierFilter.ts +0 -69
  728. package/src/domains/shared/filters/describeFilters.ts +0 -14
  729. package/src/domains/shared/filters/index.ts +0 -10
  730. package/src/domains/shared/formatters.ts +0 -103
  731. package/src/domains/shared/listTiers.ts +0 -40
  732. package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
  733. package/src/domains/shared/loaders/bundledLoader.ts +0 -254
  734. package/src/domains/shared/loaders/gitLoader.ts +0 -30
  735. package/src/domains/shared/loaders/index.ts +0 -9
  736. package/src/domains/shared/loaders/localLoader.ts +0 -71
  737. package/src/domains/shared/loaders/readPackageDir.test.ts +0 -58
  738. package/src/domains/shared/loaders/readPackageDir.ts +0 -185
  739. package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
  740. package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
  741. package/src/domains/shared/lookupMany.test.ts +0 -135
  742. package/src/domains/shared/lookupMany.ts +0 -101
  743. package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
  744. package/src/domains/shared/mergeAndParseRefs.ts +0 -44
  745. package/src/domains/shared/namespaces.ts +0 -26
  746. package/src/domains/shared/packages.ts +0 -20
  747. package/src/domains/shared/parseSampleCount.test.ts +0 -47
  748. package/src/domains/shared/parseSampleCount.ts +0 -45
  749. package/src/domains/shared/pickRandom.ts +0 -22
  750. package/src/domains/shared/prefixes.test.ts +0 -211
  751. package/src/domains/shared/prefixes.ts +0 -204
  752. package/src/domains/shared/renderers.ts +0 -410
  753. package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
  754. package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
  755. package/src/domains/shared/resolveLookupExitCode.test.ts +0 -48
  756. package/src/domains/shared/resolveLookupExitCode.ts +0 -42
  757. package/src/domains/shared/runtime.ts +0 -61
  758. package/src/domains/shared/sampleFormatters.ts +0 -47
  759. package/src/domains/shared/semanticPackage.test.ts +0 -89
  760. package/src/domains/shared/semanticPackage.ts +0 -127
  761. package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
  762. package/src/domains/shared/stories/compileLookupCommand.ts +0 -102
  763. package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
  764. package/src/domains/shared/stories/compileLookupTool.ts +0 -96
  765. package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
  766. package/src/domains/shared/stories/compileReadCommand.ts +0 -48
  767. package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
  768. package/src/domains/shared/stories/compileReadTool.ts +0 -38
  769. package/src/domains/shared/stories/condense.test.ts +0 -18
  770. package/src/domains/shared/stories/condense.ts +0 -15
  771. package/src/domains/shared/stories/index.ts +0 -20
  772. package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
  773. package/src/domains/shared/stories/normalizeNames.ts +0 -22
  774. package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -151
  775. package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -111
  776. package/src/domains/shared/stories/pack/applyPackSearch.test.ts +0 -57
  777. package/src/domains/shared/stories/pack/applyPackSearch.ts +0 -41
  778. package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -81
  779. package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -154
  780. package/src/domains/shared/stories/pack/bundled/index.ts +0 -23
  781. package/src/domains/shared/stories/pack/bundled/standardPack.ts +0 -164
  782. package/src/domains/shared/stories/pack/bundled/tierPack.ts +0 -50
  783. package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -406
  784. package/src/domains/shared/stories/pack/collectPackStories.ts +0 -158
  785. package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -50
  786. package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -751
  787. package/src/domains/shared/stories/pack/compilePackStories.ts +0 -724
  788. package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -55
  789. package/src/domains/shared/stories/pack/index.ts +0 -42
  790. package/src/domains/shared/stories/pack/reservedVerbs.test.ts +0 -213
  791. package/src/domains/shared/stories/pack/reservedVerbs.ts +0 -170
  792. package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
  793. package/src/domains/shared/stories/pack/standardParity.test.ts +0 -381
  794. package/src/domains/shared/stories/pack/types.ts +0 -224
  795. package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -742
  796. package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -859
  797. package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
  798. package/src/domains/shared/stories/projectCliParameters.ts +0 -57
  799. package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
  800. package/src/domains/shared/stories/projectToolParams.ts +0 -32
  801. package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
  802. package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
  803. package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
  804. package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
  805. package/src/domains/shared/stories/types.ts +0 -179
  806. package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
  807. package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
  808. package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
  809. package/src/domains/shared/suggestions/expandGlob.ts +0 -52
  810. package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
  811. package/src/domains/shared/suggestions/index.ts +0 -7
  812. package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
  813. package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
  814. package/src/domains/shared/suggestions/suggestNames.ts +0 -130
  815. package/src/domains/shared/types/block.ts +0 -107
  816. package/src/domains/shared/types/common.ts +0 -33
  817. package/src/domains/shared/types/graph.ts +0 -17
  818. package/src/domains/shared/types/index.ts +0 -46
  819. package/src/domains/shared/types/modifier.ts +0 -22
  820. package/src/domains/shared/types/ontology.ts +0 -145
  821. package/src/domains/shared/types/runtime.ts +0 -24
  822. package/src/domains/shared/types/sample.ts +0 -17
  823. package/src/domains/shared/types/standard.ts +0 -21
  824. package/src/domains/shared/types/tier.ts +0 -15
  825. package/src/domains/shared/types/token.ts +0 -30
  826. package/src/domains/skill/commands/index.ts +0 -4
  827. package/src/domains/skill/commands/list.test.ts +0 -115
  828. package/src/domains/skill/commands/list.ts +0 -11
  829. package/src/domains/skill/commands/lookup.test.ts +0 -118
  830. package/src/domains/skill/commands/lookup.ts +0 -14
  831. package/src/domains/skill/formatters/index.ts +0 -3
  832. package/src/domains/skill/formatters/list.test.ts +0 -140
  833. package/src/domains/skill/formatters/list.ts +0 -119
  834. package/src/domains/skill/formatters/lookup.test.ts +0 -46
  835. package/src/domains/skill/formatters/lookup.ts +0 -57
  836. package/src/domains/skill/formatters/types.ts +0 -8
  837. package/src/domains/skill/helpers/index.ts +0 -6
  838. package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
  839. package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
  840. package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
  841. package/src/domains/skill/index.ts +0 -23
  842. package/src/domains/skill/mcp/index.ts +0 -2
  843. package/src/domains/skill/mcp/specs.ts +0 -19
  844. package/src/domains/skill/operations/discover.test.ts +0 -176
  845. package/src/domains/skill/operations/discover.ts +0 -59
  846. package/src/domains/skill/operations/index.ts +0 -5
  847. package/src/domains/skill/operations/list.test.ts +0 -76
  848. package/src/domains/skill/operations/list.ts +0 -47
  849. package/src/domains/skill/operations/lookup.test.ts +0 -91
  850. package/src/domains/skill/operations/lookup.ts +0 -70
  851. package/src/domains/skill/stories.test.ts +0 -43
  852. package/src/domains/skill/stories.ts +0 -103
  853. package/src/domains/skill/types.ts +0 -33
  854. package/src/domains/token/commands/add-config.test.ts +0 -68
  855. package/src/domains/token/commands/add-config.ts +0 -62
  856. package/src/domains/token/commands/index.ts +0 -6
  857. package/src/domains/token/commands/list.test.ts +0 -82
  858. package/src/domains/token/commands/list.ts +0 -54
  859. package/src/domains/token/commands/lookup.test.ts +0 -133
  860. package/src/domains/token/commands/lookup.ts +0 -107
  861. package/src/domains/token/commands/sample.ts +0 -54
  862. package/src/domains/token/featureFlag.ts +0 -17
  863. package/src/domains/token/formatters/index.ts +0 -8
  864. package/src/domains/token/formatters/list.test.ts +0 -37
  865. package/src/domains/token/formatters/list.ts +0 -24
  866. package/src/domains/token/formatters/lookup.test.ts +0 -61
  867. package/src/domains/token/formatters/lookup.ts +0 -107
  868. package/src/domains/token/formatters/sample.ts +0 -16
  869. package/src/domains/token/index.ts +0 -45
  870. package/src/domains/token/mcp/index.ts +0 -2
  871. package/src/domains/token/mcp/specs.ts +0 -207
  872. package/src/domains/token/operations/add-config.test.ts +0 -68
  873. package/src/domains/token/operations/add-config.ts +0 -61
  874. package/src/domains/token/operations/index.ts +0 -8
  875. package/src/domains/token/operations/list.test.ts +0 -50
  876. package/src/domains/token/operations/list.ts +0 -52
  877. package/src/domains/token/operations/lookup.test.ts +0 -42
  878. package/src/domains/token/operations/lookup.ts +0 -75
  879. package/src/domains/token/operations/sample.ts +0 -32
  880. package/src/domains/token/orchestration/index.ts +0 -3
  881. package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
  882. package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
  883. package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
  884. package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
  885. package/src/domains/token/tokenConfig.ts +0 -38
  886. package/src/domains/token/types.ts +0 -6
  887. package/src/domains/trace/commands/clear.ts +0 -71
  888. package/src/domains/trace/commands/index.ts +0 -5
  889. package/src/domains/trace/commands/resolveTraceLimit.test.ts +0 -31
  890. package/src/domains/trace/commands/sessions.ts +0 -32
  891. package/src/domains/trace/commands/show.ts +0 -171
  892. package/src/domains/trace/formatters/index.ts +0 -9
  893. package/src/domains/trace/formatters/sessions.ts +0 -80
  894. package/src/domains/trace/formatters/show.ts +0 -122
  895. package/src/domains/trace/index.ts +0 -17
  896. package/src/domains/trace/operations/index.ts +0 -8
  897. package/src/domains/trace/operations/listSessions.test.ts +0 -55
  898. package/src/domains/trace/operations/listSessions.ts +0 -52
  899. package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
  900. package/src/domains/trace/operations/readTraceLog.ts +0 -104
  901. package/src/domains/trace/tracePlugin.test.ts +0 -171
  902. package/src/domains/trace/tracePlugin.ts +0 -159
  903. package/src/domains/trace/types.ts +0 -65
  904. package/src/embedWasm.ts +0 -42
  905. package/src/error/PragmaError.test.ts +0 -121
  906. package/src/error/PragmaError.ts +0 -177
  907. package/src/error/constants.ts +0 -12
  908. package/src/error/index.ts +0 -4
  909. package/src/error/types.ts +0 -55
  910. package/src/mcp/createMcpServer.test.ts +0 -41
  911. package/src/mcp/createMcpServer.ts +0 -53
  912. package/src/mcp/error/buildRecovery.test.ts +0 -37
  913. package/src/mcp/error/buildRecovery.ts +0 -17
  914. package/src/mcp/error/index.ts +0 -12
  915. package/src/mcp/error/serializeError.test.ts +0 -121
  916. package/src/mcp/error/serializeError.ts +0 -31
  917. package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
  918. package/src/mcp/error/serializeErrorPayload.ts +0 -34
  919. package/src/mcp/error/types.ts +0 -59
  920. package/src/mcp/index.ts +0 -15
  921. package/src/mcp/registerResources.test.ts +0 -566
  922. package/src/mcp/registerResources.ts +0 -9
  923. package/src/mcp/resources/buildGraphIndex.ts +0 -167
  924. package/src/mcp/resources/buildResourceList.test.ts +0 -97
  925. package/src/mcp/resources/buildResourceList.ts +0 -176
  926. package/src/mcp/resources/classifyEntity.test.ts +0 -40
  927. package/src/mcp/resources/classifyEntity.ts +0 -27
  928. package/src/mcp/resources/constants.ts +0 -105
  929. package/src/mcp/resources/displayPredicates.ts +0 -62
  930. package/src/mcp/resources/pickFirstValue.test.ts +0 -29
  931. package/src/mcp/resources/pickFirstValue.ts +0 -26
  932. package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
  933. package/src/mcp/resources/pickPrimaryType.ts +0 -26
  934. package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
  935. package/src/mcp/resources/rankUriCompletions.ts +0 -64
  936. package/src/mcp/resources/readEntity.ts +0 -169
  937. package/src/mcp/resources/registerResources.ts +0 -126
  938. package/src/mcp/resources/types.ts +0 -128
  939. package/src/mcp/runMcpServer.test.ts +0 -66
  940. package/src/mcp/runMcpServer.ts +0 -24
  941. package/src/mcp/tools/index.ts +0 -74
  942. package/src/mcp/tools/registerFromSpec.ts +0 -97
  943. package/src/mcp/tools/registerTools.test.ts +0 -1277
  944. package/src/mcp/types.ts +0 -66
  945. package/src/mcp/utils/estimateTokens.test.ts +0 -14
  946. package/src/mcp/utils/estimateTokens.ts +0 -9
  947. package/src/mcp/utils/index.ts +0 -11
  948. package/src/mcp/utils/wrapTool.test.ts +0 -109
  949. package/src/mcp/utils/wrapTool.ts +0 -81
  950. package/src/package-manager/constants.ts +0 -29
  951. package/src/package-manager/detectInstallSource.test.ts +0 -23
  952. package/src/package-manager/detectInstallSource.ts +0 -111
  953. package/src/package-manager/detectLocalInstall.test.ts +0 -16
  954. package/src/package-manager/detectLocalInstall.ts +0 -43
  955. package/src/package-manager/detectPackageManager.test.ts +0 -81
  956. package/src/package-manager/detectPackageManager.ts +0 -30
  957. package/src/package-manager/index.ts +0 -6
  958. package/src/package-manager/types.ts +0 -10
  959. package/src/pipeline/collectCommands.test.ts +0 -187
  960. package/src/pipeline/collectCommands.ts +0 -75
  961. package/src/pipeline/constants.ts +0 -14
  962. package/src/pipeline/createProgram.test.ts +0 -116
  963. package/src/pipeline/createProgram.ts +0 -89
  964. package/src/pipeline/firstRun.test.ts +0 -80
  965. package/src/pipeline/firstRun.ts +0 -99
  966. package/src/pipeline/formatTerminal.test.ts +0 -43
  967. package/src/pipeline/formatTerminal.ts +0 -53
  968. package/src/pipeline/index.ts +0 -22
  969. package/src/pipeline/mapExitCode.test.ts +0 -41
  970. package/src/pipeline/mapExitCode.ts +0 -12
  971. package/src/pipeline/parseGlobalFlags.test.ts +0 -193
  972. package/src/pipeline/parseGlobalFlags.ts +0 -135
  973. package/src/pipeline/renderError.test.ts +0 -151
  974. package/src/pipeline/renderError.ts +0 -129
  975. package/src/pipeline/resolveCommandKind.test.ts +0 -80
  976. package/src/pipeline/resolveCommandKind.ts +0 -82
  977. package/src/pipeline/rootHelp.test.ts +0 -87
  978. package/src/pipeline/rootHelp.ts +0 -265
  979. package/src/pipeline/runCli.orchestration.test.ts +0 -435
  980. package/src/pipeline/runCli.test.ts +0 -83
  981. package/src/pipeline/runCli.ts +0 -411
  982. package/src/pipeline/types.ts +0 -17
  983. package/src/testing/cli.ts +0 -71
  984. package/src/testing/createTestMcpClient.ts +0 -68
  985. package/src/testing/dsFixtures.ts +0 -523
  986. package/src/testing/fixtures/canonical-config.json +0 -4
  987. package/src/testing/fixtures/canonical.ttl +0 -437
  988. package/src/testing/fixtures/filtered-config.json +0 -4
  989. package/src/testing/fixtures.ts +0 -34
  990. package/src/testing/graphqlFixtures.ts +0 -72
  991. package/src/testing/helpers/assertParity.ts +0 -28
  992. package/src/testing/helpers/createTestMcpClient.ts +0 -40
  993. package/src/testing/helpers/createTestRuntime.ts +0 -67
  994. package/src/testing/index.ts +0 -22
  995. package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
  996. package/src/testing/integration/agent-session.test.ts +0 -148
  997. package/src/testing/integration/boot.test.ts +0 -105
  998. package/src/testing/integration/cli-user-stories.test.ts +0 -261
  999. package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
  1000. package/src/testing/integration/edge-cases.test.ts +0 -275
  1001. package/src/testing/integration/executor-execution.test.ts +0 -103
  1002. package/src/testing/integration/executor-golden.test.ts +0 -145
  1003. package/src/testing/integration/mcp-surface.test.ts +0 -605
  1004. package/src/testing/integration/parity.test.ts +0 -596
  1005. package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
  1006. package/src/testing/standardParityFixtures.ts +0 -35
  1007. package/src/testing/store.ts +0 -39
  1008. package/src/testing/storyFixtures.ts +0 -63
  1009. package/src/testing/types.ts +0 -20
  1010. package/src/tui/components/BulletList/BulletList.tsx +0 -46
  1011. package/src/tui/components/BulletList/index.ts +0 -2
  1012. package/src/tui/components/BulletList/types.ts +0 -6
  1013. package/src/tui/components/Card/Card.tsx +0 -73
  1014. package/src/tui/components/Card/index.ts +0 -1
  1015. package/src/tui/components/Card/types.ts +0 -12
  1016. package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
  1017. package/src/tui/components/CodeBlock/index.ts +0 -2
  1018. package/src/tui/components/CodeBlock/types.ts +0 -6
  1019. package/src/tui/components/DataRow/DataRow.tsx +0 -80
  1020. package/src/tui/components/DataRow/index.ts +0 -2
  1021. package/src/tui/components/DataRow/types.ts +0 -14
  1022. package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
  1023. package/src/tui/components/FieldRow/index.ts +0 -2
  1024. package/src/tui/components/FieldRow/types.ts +0 -10
  1025. package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
  1026. package/src/tui/components/HeaderRow/index.ts +0 -2
  1027. package/src/tui/components/HeaderRow/types.ts +0 -8
  1028. package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
  1029. package/src/tui/components/MarkdownText/index.ts +0 -2
  1030. package/src/tui/components/MarkdownText/types.ts +0 -4
  1031. package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
  1032. package/src/tui/components/MiniTable/index.ts +0 -2
  1033. package/src/tui/components/MiniTable/types.ts +0 -6
  1034. package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
  1035. package/src/tui/components/SectionRenderer/index.ts +0 -2
  1036. package/src/tui/components/SectionRenderer/types.ts +0 -15
  1037. package/src/tui/components/TreeView/TreeView.tsx +0 -84
  1038. package/src/tui/components/TreeView/index.ts +0 -2
  1039. package/src/tui/components/TreeView/types.ts +0 -6
  1040. package/src/tui/components/index.ts +0 -19
  1041. package/src/tui/constants.ts +0 -39
  1042. package/src/tui/createListView.ts +0 -23
  1043. package/src/tui/createLookupView.ts +0 -26
  1044. package/src/tui/helpers/computeWidths.ts +0 -53
  1045. package/src/tui/helpers/fitColumns.ts +0 -33
  1046. package/src/tui/helpers/formatMarkdown.ts +0 -19
  1047. package/src/tui/helpers/getTerminalSize.ts +0 -16
  1048. package/src/tui/helpers/index.ts +0 -6
  1049. package/src/tui/helpers/syntaxColor.ts +0 -67
  1050. package/src/tui/helpers/truncateText.ts +0 -12
  1051. package/src/tui/hooks/index.ts +0 -3
  1052. package/src/tui/hooks/types.ts +0 -7
  1053. package/src/tui/hooks/useAutoExit.ts +0 -17
  1054. package/src/tui/hooks/useTerminalSize.ts +0 -19
  1055. package/src/tui/index.ts +0 -15
  1056. package/src/tui/renderInk.tsx +0 -18
  1057. package/src/tui/types.ts +0 -12
  1058. package/src/tui/views/ListView/ListView.tsx +0 -104
  1059. package/src/tui/views/ListView/index.ts +0 -2
  1060. package/src/tui/views/ListView/types.ts +0 -14
  1061. package/src/tui/views/LookupView/LookupView.tsx +0 -244
  1062. package/src/tui/views/LookupView/index.ts +0 -2
  1063. package/src/tui/views/LookupView/types.ts +0 -16
  1064. package/src/tui/views/index.ts +0 -4
@@ -1,1207 +0,0 @@
1
- // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
-
3
- exports[`golden: executeGenerator — components > lit — dry-run plan 1`] = `
4
- "
5
- ├─ Info Generating Lit web component: Button
6
- ├─ Create dir src/components/Button
7
- ├─ Create file src/components/Button/Button.ts
8
- ├─ Create file src/components/Button/index.ts
9
- ├─ Create file src/components/Button/types.ts
10
- ├─ Create file src/components/Button/Button.tests.ts
11
- ├─ Create file src/components/Button/Button.stories.ts
12
- ├─ Create file src/components/Button/styles.css
13
- ├─ Create file src/components/index.ts
14
- └─ Info Created Button component at src/components/Button
15
-
16
- Dry-run complete. No files were modified.
17
- Tip: Use --show-files to see generated file contents
18
- "
19
- `;
20
-
21
- exports[`golden: executeGenerator — components > lit — json plan 1`] = `
22
- "{
23
- "generator": {
24
- "name": "component/lit",
25
- "version": "0.1.0",
26
- "description": "Generate a Lit web component with TypeScript, tests, stories, and styles"
27
- },
28
- "answers": {
29
- "componentPath": "src/components/Button",
30
- "withStyles": true,
31
- "withStories": true
32
- },
33
- "plan": [
34
- {
35
- "action": "info",
36
- "path": "Generating Lit web component: Button"
37
- },
38
- {
39
- "action": "mkdir",
40
- "path": "src/components/Button"
41
- },
42
- {
43
- "action": "create",
44
- "path": "src/components/Button/Button.ts",
45
- "lines": 25
46
- },
47
- {
48
- "action": "create",
49
- "path": "src/components/Button/index.ts",
50
- "lines": 3
51
- },
52
- {
53
- "action": "create",
54
- "path": "src/components/Button/types.ts",
55
- "lines": 7
56
- },
57
- {
58
- "action": "create",
59
- "path": "src/components/Button/Button.tests.ts",
60
- "lines": 28
61
- },
62
- {
63
- "action": "create",
64
- "path": "src/components/Button/Button.stories.ts",
65
- "lines": 18
66
- },
67
- {
68
- "action": "create",
69
- "path": "src/components/Button/styles.css",
70
- "lines": 50
71
- },
72
- {
73
- "action": "create",
74
- "path": "src/components/index.ts",
75
- "lines": 2
76
- },
77
- {
78
- "action": "info",
79
- "path": "Created Button component at src/components/Button"
80
- }
81
- ],
82
- "files": {
83
- "src/components/Button/Button.ts": "import { html, LitElement } from \\"lit\\";\\nimport { customElement } from \\"lit/decorators.js\\";\\nimport styles from \\"./styles.css\\";\\nimport type { ButtonProps } from \\"./types.js\\";\\n\\nconst componentCssClassName = \\"ds button\\";\\n\\n/**\\n * Button web component.\\n *\\n * @implements ds:global.component.button\\n */\\n@customElement(\\"ds-button\\")\\nexport default class Button extends LitElement implements ButtonProps {\\n static styles = styles;\\n\\n render() {\\n return html\`\\n <div class=\\"\${componentCssClassName}\\">\\n <slot></slot>\\n </div>\\n \`;\\n }\\n}\\n",
84
- "src/components/Button/index.ts": "export { default as Button } from \\"./Button.js\\";\\nexport type { ButtonProps } from \\"./types.js\\";\\n",
85
- "src/components/Button/types.ts": "/**\\n * Props for the Button component.\\n */\\nexport interface ButtonProps {\\n // Define props specific to Button here\\n}\\n",
86
- "src/components/Button/Button.tests.ts": "import { afterEach, beforeEach, describe, expect, it } from \\"vitest\\";\\nimport \\"./Button.js\\";\\nimport type Button from \\"./Button.js\\";\\n\\ndescribe(\\"Button component\\", () => {\\n let elem: Button;\\n\\n beforeEach(() => {\\n elem = document.createElement(\\"ds-button\\") as Button;\\n document.body.appendChild(elem);\\n });\\n\\n afterEach(() => {\\n elem.remove();\\n });\\n\\n it(\\"should render component\\", async () => {\\n await customElements.whenDefined(\\"ds-button\\");\\n\\n const container = elem.shadowRoot?.querySelector(\\".ds.button\\");\\n expect(container).toBeTruthy();\\n });\\n\\n it(\\"should have correct tag name\\", () => {\\n expect(elem.tagName.toLowerCase()).toBe(\\"ds-button\\");\\n });\\n});\\n",
87
- "src/components/Button/Button.stories.ts": "import type { Meta, StoryObj } from \\"@storybook/web-components-vite\\";\\nimport { html } from \\"lit\\";\\n\\nimport \\"./Button.js\\";\\nimport type Button from \\"./Button.js\\";\\n\\nconst meta = {\\n title: \\"Web Components/Button\\",\\n tags: [\\"autodocs\\"],\\n} satisfies Meta<Button>;\\n\\nexport default meta;\\ntype Story = StoryObj<Button>;\\n\\nexport const Default: Story = {\\n render: () => html\`<ds-button>Hello, Button!</ds-button>\`,\\n};\\n",
88
- "src/components/Button/styles.css": "/*\\n * Lit Layout Primer\\n * Delete this comment block when you're done implementing.\\n *\\n * Styles live in a shadow DOM, isolated from the page by default.\\n *\\n * Two layers:\\n *\\n * 1) :host — the outer shell, how this component presents to its parent layout.\\n * display, width, height (always apply)\\n * grid-column, grid-row, align-self, justify-self (parent must be grid/flex)\\n *\\n * 2) .ds.button — the inner shell, how this component arranges its shadow children.\\n * display: grid/flex, gap, grid-template-columns, align-items, justify-content\\n *\\n * Subgrid pattern — use when the parent defines grid tracks you want to inherit:\\n *\\n * In the parent component:\\n * .ds.parent { display: grid; grid-template-columns: repeat(4, 1fr); }\\n *\\n * In this component:\\n * :host { display: grid; grid-column: span 2; }\\n * .ds.button { display: grid; grid-template-columns: subgrid; }\\n *\\n * In this example, the parent establishes a 4-column grid.\\n * This component claims 2 of those columns and inherits their widths via subgrid.\\n *\\n * Keep in mind:\\n * - Custom elements are display: inline by default — always set display on :host.\\n * - Flex/grid rules only affect direct children of the container, not deeper descendants.\\n * - External CSS cannot pierce the shadow boundary — expose CSS custom properties for theming.\\n */\\n\\n:host {\\n /*\\n * Host controls the outer layout role.\\n * Declare component CSS variables here when needed.\\n * Variables must be on :host to be accessible inside the shadow tree.\\n *\\n * Example:\\n * --button-color-background: var(--color-background-default);\\n * --button-color-text: var(--color-text-default);\\n */\\n display: inline-flex;\\n}\\n\\n.ds.button {\\n /* Inner layout and visual styles go here. */\\n}\\n",
89
- "src/components/index.ts": "export * from \\"./Button/index.js\\";\\n"
90
- },
91
- "executeCommand": "summon component/lit --component-path src/components/Button --yes"
92
- }
93
- "
94
- `;
95
-
96
- exports[`golden: executeGenerator — components > lit — llm plan 1`] = `
97
- "# component/lit
98
-
99
- > Generate a Lit web component with TypeScript, tests, stories, and styles
100
- > v0.1.0
101
-
102
- ## Answers
103
-
104
- | Option | Value |
105
- |--------|-------|
106
- | componentPath | src/components/Button |
107
- | withStyles | true |
108
- | withStories | true |
109
-
110
- ## Plan
111
-
112
- | Action | Path | Lines |
113
- |--------|------|-------|
114
- | info | Generating Lit web component: Button | |
115
- | mkdir | src/components/Button | |
116
- | create | src/components/Button/Button.ts | 25 |
117
- | create | src/components/Button/index.ts | 3 |
118
- | create | src/components/Button/types.ts | 7 |
119
- | create | src/components/Button/Button.tests.ts | 28 |
120
- | create | src/components/Button/Button.stories.ts | 18 |
121
- | create | src/components/Button/styles.css | 50 |
122
- | create | src/components/index.ts | 2 |
123
- | info | Created Button component at src/components/Button | |
124
-
125
- ## Files
126
-
127
- ### src/components/Button/Button.ts
128
-
129
- \`\`\`ts
130
- import { html, LitElement } from "lit";
131
- import { customElement } from "lit/decorators.js";
132
- import styles from "./styles.css";
133
- import type { ButtonProps } from "./types.js";
134
-
135
- const componentCssClassName = "ds button";
136
-
137
- /**
138
- * Button web component.
139
- *
140
- * @implements ds:global.component.button
141
- */
142
- @customElement("ds-button")
143
- export default class Button extends LitElement implements ButtonProps {
144
- static styles = styles;
145
-
146
- render() {
147
- return html\`
148
- <div class="\${componentCssClassName}">
149
- <slot></slot>
150
- </div>
151
- \`;
152
- }
153
- }
154
-
155
- \`\`\`
156
-
157
- ### src/components/Button/index.ts
158
-
159
- \`\`\`ts
160
- export { default as Button } from "./Button.js";
161
- export type { ButtonProps } from "./types.js";
162
-
163
- \`\`\`
164
-
165
- ### src/components/Button/types.ts
166
-
167
- \`\`\`ts
168
- /**
169
- * Props for the Button component.
170
- */
171
- export interface ButtonProps {
172
- // Define props specific to Button here
173
- }
174
-
175
- \`\`\`
176
-
177
- ### src/components/Button/Button.tests.ts
178
-
179
- \`\`\`ts
180
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
181
- import "./Button.js";
182
- import type Button from "./Button.js";
183
-
184
- describe("Button component", () => {
185
- let elem: Button;
186
-
187
- beforeEach(() => {
188
- elem = document.createElement("ds-button") as Button;
189
- document.body.appendChild(elem);
190
- });
191
-
192
- afterEach(() => {
193
- elem.remove();
194
- });
195
-
196
- it("should render component", async () => {
197
- await customElements.whenDefined("ds-button");
198
-
199
- const container = elem.shadowRoot?.querySelector(".ds.button");
200
- expect(container).toBeTruthy();
201
- });
202
-
203
- it("should have correct tag name", () => {
204
- expect(elem.tagName.toLowerCase()).toBe("ds-button");
205
- });
206
- });
207
-
208
- \`\`\`
209
-
210
- ### src/components/Button/Button.stories.ts
211
-
212
- \`\`\`ts
213
- import type { Meta, StoryObj } from "@storybook/web-components-vite";
214
- import { html } from "lit";
215
-
216
- import "./Button.js";
217
- import type Button from "./Button.js";
218
-
219
- const meta = {
220
- title: "Web Components/Button",
221
- tags: ["autodocs"],
222
- } satisfies Meta<Button>;
223
-
224
- export default meta;
225
- type Story = StoryObj<Button>;
226
-
227
- export const Default: Story = {
228
- render: () => html\`<ds-button>Hello, Button!</ds-button>\`,
229
- };
230
-
231
- \`\`\`
232
-
233
- ### src/components/Button/styles.css
234
-
235
- \`\`\`css
236
- /*
237
- * Lit Layout Primer
238
- * Delete this comment block when you're done implementing.
239
- *
240
- * Styles live in a shadow DOM, isolated from the page by default.
241
- *
242
- * Two layers:
243
- *
244
- * 1) :host — the outer shell, how this component presents to its parent layout.
245
- * display, width, height (always apply)
246
- * grid-column, grid-row, align-self, justify-self (parent must be grid/flex)
247
- *
248
- * 2) .ds.button — the inner shell, how this component arranges its shadow children.
249
- * display: grid/flex, gap, grid-template-columns, align-items, justify-content
250
- *
251
- * Subgrid pattern — use when the parent defines grid tracks you want to inherit:
252
- *
253
- * In the parent component:
254
- * .ds.parent { display: grid; grid-template-columns: repeat(4, 1fr); }
255
- *
256
- * In this component:
257
- * :host { display: grid; grid-column: span 2; }
258
- * .ds.button { display: grid; grid-template-columns: subgrid; }
259
- *
260
- * In this example, the parent establishes a 4-column grid.
261
- * This component claims 2 of those columns and inherits their widths via subgrid.
262
- *
263
- * Keep in mind:
264
- * - Custom elements are display: inline by default — always set display on :host.
265
- * - Flex/grid rules only affect direct children of the container, not deeper descendants.
266
- * - External CSS cannot pierce the shadow boundary — expose CSS custom properties for theming.
267
- */
268
-
269
- :host {
270
- /*
271
- * Host controls the outer layout role.
272
- * Declare component CSS variables here when needed.
273
- * Variables must be on :host to be accessible inside the shadow tree.
274
- *
275
- * Example:
276
- * --button-color-background: var(--color-background-default);
277
- * --button-color-text: var(--color-text-default);
278
- */
279
- display: inline-flex;
280
- }
281
-
282
- .ds.button {
283
- /* Inner layout and visual styles go here. */
284
- }
285
-
286
- \`\`\`
287
-
288
- ### src/components/index.ts
289
-
290
- \`\`\`ts
291
- export * from "./Button/index.js";
292
-
293
- \`\`\`
294
-
295
- ---
296
-
297
- Dry-run complete. No files were modified.
298
-
299
- To execute:
300
-
301
- \`\`\`sh
302
- summon component/lit --component-path src/components/Button --yes
303
- \`\`\`
304
- "
305
- `;
306
-
307
- exports[`golden: executeGenerator — components > react — dry-run plan 1`] = `
308
- "
309
- ├─ Info Generating React component: Button
310
- ├─ Create dir src/components/Button
311
- ├─ Create file src/components/Button/Button.tsx
312
- ├─ Create file src/components/Button/types.ts
313
- ├─ Create file src/components/Button/index.ts
314
- ├─ Create file src/components/Button/Button.tests.tsx
315
- ├─ Create file src/components/Button/Button.ssr.tests.tsx
316
- ├─ Create file src/components/Button/Button.stories.tsx
317
- ├─ Create file src/components/Button/styles.css
318
- ├─ Create file src/components/index.ts
319
- └─ Info Created Button component at src/components/Button
320
-
321
- Dry-run complete. No files were modified.
322
- Tip: Use --show-files to see generated file contents
323
- "
324
- `;
325
-
326
- exports[`golden: executeGenerator — components > react — json plan 1`] = `
327
- "{
328
- "generator": {
329
- "name": "component/react",
330
- "version": "0.1.0",
331
- "description": "Generate a React component with TypeScript, tests, stories, and styles"
332
- },
333
- "answers": {
334
- "componentPath": "src/components/Button",
335
- "withStyles": true,
336
- "withStories": true,
337
- "withSsrTests": true
338
- },
339
- "plan": [
340
- {
341
- "action": "info",
342
- "path": "Generating React component: Button"
343
- },
344
- {
345
- "action": "mkdir",
346
- "path": "src/components/Button"
347
- },
348
- {
349
- "action": "create",
350
- "path": "src/components/Button/Button.tsx",
351
- "lines": 26
352
- },
353
- {
354
- "action": "create",
355
- "path": "src/components/Button/types.ts",
356
- "lines": 7
357
- },
358
- {
359
- "action": "create",
360
- "path": "src/components/Button/index.ts",
361
- "lines": 3
362
- },
363
- {
364
- "action": "create",
365
- "path": "src/components/Button/Button.tests.tsx",
366
- "lines": 23
367
- },
368
- {
369
- "action": "create",
370
- "path": "src/components/Button/Button.ssr.tests.tsx",
371
- "lines": 12
372
- },
373
- {
374
- "action": "create",
375
- "path": "src/components/Button/Button.stories.tsx",
376
- "lines": 25
377
- },
378
- {
379
- "action": "create",
380
- "path": "src/components/Button/styles.css",
381
- "lines": 4
382
- },
383
- {
384
- "action": "create",
385
- "path": "src/components/index.ts",
386
- "lines": 2
387
- },
388
- {
389
- "action": "info",
390
- "path": "Created Button component at src/components/Button"
391
- }
392
- ],
393
- "files": {
394
- "src/components/Button/Button.tsx": "import type React from \\"react\\";\\nimport type { ButtonProps } from \\"./types.js\\";\\nimport \\"./styles.css\\";\\n\\nconst componentCssClassName = \\"ds button\\";\\n\\n/**\\n * Button component\\n */\\nconst Button = ({\\n\\tclassName,\\n\\tchildren,\\n\\t...props\\n}: ButtonProps): React.ReactElement => {\\n\\treturn (\\n\\t\\t<div\\n\\t\\t\\tclassName={[componentCssClassName, className].filter(Boolean).join(\\" \\")}\\n\\t\\t\\t{...props}\\n\\t\\t>\\n\\t\\t\\t{children}\\n\\t\\t</div>\\n\\t);\\n};\\n\\nexport default Button;\\n",
395
- "src/components/Button/types.ts": "import type { HTMLAttributes, ReactNode } from \\"react\\";\\n\\nexport interface ButtonProps extends HTMLAttributes<HTMLDivElement> {\\n\\t/** Content to render inside the component */\\n\\tchildren?: ReactNode;\\n}\\n",
396
- "src/components/Button/index.ts": "export { default as Button } from \\"./Button.js\\";\\nexport type * from \\"./types.js\\";\\n",
397
- "src/components/Button/Button.tests.tsx": "import { describe, expect, it } from \\"vitest\\";\\nimport { render, screen } from \\"@testing-library/react\\";\\nimport Button from \\"./Button.js\\";\\n\\ndescribe(\\"Button\\", () => {\\n\\tit(\\"renders children\\", () => {\\n\\t\\trender(<Button>Test content</Button>);\\n\\t\\texpect(screen.getByText(\\"Test content\\")).toBeInTheDocument();\\n\\t});\\n\\n\\tit(\\"applies custom className\\", () => {\\n\\t\\trender(<Button className=\\"custom-class\\">Content</Button>);\\n\\t\\tconst element = screen.getByText(\\"Content\\");\\n\\t\\texpect(element.className).toContain(\\"ds button\\");\\n\\t\\texpect(element.className).toContain(\\"custom-class\\");\\n\\t});\\n\\n\\tit(\\"passes through additional props\\", () => {\\n\\t\\trender(<Button data-testid=\\"test-component\\">Content</Button>);\\n\\t\\texpect(screen.getByTestId(\\"test-component\\")).toBeInTheDocument();\\n\\t});\\n});\\n",
398
- "src/components/Button/Button.ssr.tests.tsx": "import { describe, expect, it } from \\"vitest\\";\\nimport { renderToString } from \\"react-dom/server\\";\\nimport Button from \\"./Button.js\\";\\n\\ndescribe(\\"Button SSR\\", () => {\\n\\tit(\\"renders without hydration errors\\", () => {\\n\\t\\tconst html = renderToString(<Button>Test content</Button>);\\n\\t\\texpect(html).toContain(\\"Test content\\");\\n\\t\\texpect(html).toContain(\\"ds button\\");\\n\\t});\\n});\\n",
399
- "src/components/Button/Button.stories.tsx": "import type { Meta, StoryObj } from \\"@storybook/react-vite\\";\\nimport Button from \\"./Button.js\\";\\n\\nconst meta: Meta<typeof Button> = {\\n\\ttitle: \\"Components/Button\\",\\n\\tcomponent: Button,\\n\\ttags: [\\"autodocs\\"],\\n};\\n\\nexport default meta;\\ntype Story = StoryObj<typeof Button>;\\n\\nexport const Default: Story = {\\n\\targs: {\\n\\t\\tchildren: \\"Hello, Button!\\",\\n\\t},\\n};\\n\\nexport const WithCustomClass: Story = {\\n\\targs: {\\n\\t\\tchildren: \\"Custom styled\\",\\n\\t\\tclassName: \\"custom-class\\",\\n\\t},\\n};\\n",
400
- "src/components/Button/styles.css": ".ds.button {\\n\\t/* Component styles */\\n}\\n",
401
- "src/components/index.ts": "export * from \\"./Button/index.js\\";\\n"
402
- },
403
- "executeCommand": "summon component/react --component-path src/components/Button --yes"
404
- }
405
- "
406
- `;
407
-
408
- exports[`golden: executeGenerator — components > react — llm plan 1`] = `
409
- "# component/react
410
-
411
- > Generate a React component with TypeScript, tests, stories, and styles
412
- > v0.1.0
413
-
414
- ## Answers
415
-
416
- | Option | Value |
417
- |--------|-------|
418
- | componentPath | src/components/Button |
419
- | withStyles | true |
420
- | withStories | true |
421
- | withSsrTests | true |
422
-
423
- ## Plan
424
-
425
- | Action | Path | Lines |
426
- |--------|------|-------|
427
- | info | Generating React component: Button | |
428
- | mkdir | src/components/Button | |
429
- | create | src/components/Button/Button.tsx | 26 |
430
- | create | src/components/Button/types.ts | 7 |
431
- | create | src/components/Button/index.ts | 3 |
432
- | create | src/components/Button/Button.tests.tsx | 23 |
433
- | create | src/components/Button/Button.ssr.tests.tsx | 12 |
434
- | create | src/components/Button/Button.stories.tsx | 25 |
435
- | create | src/components/Button/styles.css | 4 |
436
- | create | src/components/index.ts | 2 |
437
- | info | Created Button component at src/components/Button | |
438
-
439
- ## Files
440
-
441
- ### src/components/Button/Button.tsx
442
-
443
- \`\`\`tsx
444
- import type React from "react";
445
- import type { ButtonProps } from "./types.js";
446
- import "./styles.css";
447
-
448
- const componentCssClassName = "ds button";
449
-
450
- /**
451
- * Button component
452
- */
453
- const Button = ({
454
- className,
455
- children,
456
- ...props
457
- }: ButtonProps): React.ReactElement => {
458
- return (
459
- <div
460
- className={[componentCssClassName, className].filter(Boolean).join(" ")}
461
- {...props}
462
- >
463
- {children}
464
- </div>
465
- );
466
- };
467
-
468
- export default Button;
469
-
470
- \`\`\`
471
-
472
- ### src/components/Button/types.ts
473
-
474
- \`\`\`ts
475
- import type { HTMLAttributes, ReactNode } from "react";
476
-
477
- export interface ButtonProps extends HTMLAttributes<HTMLDivElement> {
478
- /** Content to render inside the component */
479
- children?: ReactNode;
480
- }
481
-
482
- \`\`\`
483
-
484
- ### src/components/Button/index.ts
485
-
486
- \`\`\`ts
487
- export { default as Button } from "./Button.js";
488
- export type * from "./types.js";
489
-
490
- \`\`\`
491
-
492
- ### src/components/Button/Button.tests.tsx
493
-
494
- \`\`\`tsx
495
- import { describe, expect, it } from "vitest";
496
- import { render, screen } from "@testing-library/react";
497
- import Button from "./Button.js";
498
-
499
- describe("Button", () => {
500
- it("renders children", () => {
501
- render(<Button>Test content</Button>);
502
- expect(screen.getByText("Test content")).toBeInTheDocument();
503
- });
504
-
505
- it("applies custom className", () => {
506
- render(<Button className="custom-class">Content</Button>);
507
- const element = screen.getByText("Content");
508
- expect(element.className).toContain("ds button");
509
- expect(element.className).toContain("custom-class");
510
- });
511
-
512
- it("passes through additional props", () => {
513
- render(<Button data-testid="test-component">Content</Button>);
514
- expect(screen.getByTestId("test-component")).toBeInTheDocument();
515
- });
516
- });
517
-
518
- \`\`\`
519
-
520
- ### src/components/Button/Button.ssr.tests.tsx
521
-
522
- \`\`\`tsx
523
- import { describe, expect, it } from "vitest";
524
- import { renderToString } from "react-dom/server";
525
- import Button from "./Button.js";
526
-
527
- describe("Button SSR", () => {
528
- it("renders without hydration errors", () => {
529
- const html = renderToString(<Button>Test content</Button>);
530
- expect(html).toContain("Test content");
531
- expect(html).toContain("ds button");
532
- });
533
- });
534
-
535
- \`\`\`
536
-
537
- ### src/components/Button/Button.stories.tsx
538
-
539
- \`\`\`tsx
540
- import type { Meta, StoryObj } from "@storybook/react-vite";
541
- import Button from "./Button.js";
542
-
543
- const meta: Meta<typeof Button> = {
544
- title: "Components/Button",
545
- component: Button,
546
- tags: ["autodocs"],
547
- };
548
-
549
- export default meta;
550
- type Story = StoryObj<typeof Button>;
551
-
552
- export const Default: Story = {
553
- args: {
554
- children: "Hello, Button!",
555
- },
556
- };
557
-
558
- export const WithCustomClass: Story = {
559
- args: {
560
- children: "Custom styled",
561
- className: "custom-class",
562
- },
563
- };
564
-
565
- \`\`\`
566
-
567
- ### src/components/Button/styles.css
568
-
569
- \`\`\`css
570
- .ds.button {
571
- /* Component styles */
572
- }
573
-
574
- \`\`\`
575
-
576
- ### src/components/index.ts
577
-
578
- \`\`\`ts
579
- export * from "./Button/index.js";
580
-
581
- \`\`\`
582
-
583
- ---
584
-
585
- Dry-run complete. No files were modified.
586
-
587
- To execute:
588
-
589
- \`\`\`sh
590
- summon component/react --component-path src/components/Button --yes
591
- \`\`\`
592
- "
593
- `;
594
-
595
- exports[`golden: executeGenerator — components > svelte — dry-run plan 1`] = `
596
- "
597
- ├─ Info Generating Svelte component: Button
598
- ├─ Create dir src/components/Button
599
- ├─ Create file src/components/Button/Button.svelte
600
- ├─ Create file src/components/Button/types.ts
601
- ├─ Create file src/components/Button/index.ts
602
- ├─ Create file src/components/Button/Button.svelte.test.ts
603
- ├─ Create file src/components/Button/Button.ssr.test.ts
604
- ├─ Create file src/components/Button/Button.stories.svelte
605
- ├─ Create file src/components/Button/styles.css
606
- ├─ Create file src/components/index.ts
607
- └─ Info Created Button component at src/components/Button
608
-
609
- Dry-run complete. No files were modified.
610
- Tip: Use --show-files to see generated file contents
611
- "
612
- `;
613
-
614
- exports[`golden: executeGenerator — components > svelte — json plan 1`] = `
615
- "{
616
- "generator": {
617
- "name": "component/svelte",
618
- "version": "0.1.0",
619
- "description": "Generate a Svelte 5 component with TypeScript, tests, stories, and styles"
620
- },
621
- "answers": {
622
- "componentPath": "src/components/Button",
623
- "withStyles": true,
624
- "withStories": true,
625
- "withSsrTests": true,
626
- "useTsStories": false
627
- },
628
- "plan": [
629
- {
630
- "action": "info",
631
- "path": "Generating Svelte component: Button"
632
- },
633
- {
634
- "action": "mkdir",
635
- "path": "src/components/Button"
636
- },
637
- {
638
- "action": "create",
639
- "path": "src/components/Button/Button.svelte",
640
- "lines": 20
641
- },
642
- {
643
- "action": "create",
644
- "path": "src/components/Button/types.ts",
645
- "lines": 36
646
- },
647
- {
648
- "action": "create",
649
- "path": "src/components/Button/index.ts",
650
- "lines": 3
651
- },
652
- {
653
- "action": "create",
654
- "path": "src/components/Button/Button.svelte.test.ts",
655
- "lines": 78
656
- },
657
- {
658
- "action": "create",
659
- "path": "src/components/Button/Button.ssr.test.ts",
660
- "lines": 84
661
- },
662
- {
663
- "action": "create",
664
- "path": "src/components/Button/Button.stories.svelte",
665
- "lines": 26
666
- },
667
- {
668
- "action": "create",
669
- "path": "src/components/Button/styles.css",
670
- "lines": 4
671
- },
672
- {
673
- "action": "create",
674
- "path": "src/components/index.ts",
675
- "lines": 2
676
- },
677
- {
678
- "action": "info",
679
- "path": "Created Button component at src/components/Button"
680
- }
681
- ],
682
- "files": {
683
- "src/components/Button/Button.svelte": "<script lang=\\"ts\\">\\n\\timport type { ButtonProps } from \\"./types.js\\";\\n\\timport \\"./styles.css\\";\\n\\n\\tconst componentCssClassName = \\"ds button\\";\\n\\n\\tlet {\\n\\t\\tclass: className,\\n\\t\\tchildren,\\n\\t\\t...rest\\n\\t}: ButtonProps = $props();\\n</script>\\n\\n<div\\n\\tclass={[componentCssClassName, className]}\\n\\t{...rest}\\n>\\n\\t{@render children?.()}\\n</div>\\n",
684
- "src/components/Button/types.ts": "import type { Snippet } from \\"svelte\\";\\nimport type { SvelteHTMLElements } from \\"svelte/elements\\";\\n\\n/*\\n\\tFor components that render specific HTML elements with extended prop sets,\\n\\tmake sure to change \`\\"div\\"\` to the appropriate HTML element type.\\n*/\\ntype BaseProps = SvelteHTMLElements[\\"div\\"];\\n\\nexport interface ButtonProps extends BaseProps {\\n\\t/** Content to render inside the component */\\n\\tchildren?: Snippet;\\n\\t// Define additional props specific to Button here\\n}\\n\\n/*\\n\\t...or consider using appropriate interfaces directly exported from \`svelte/elements\`.\\n\\n\\tFor example:\\n\\t- \`HTMLButtonAttributes\` (provides \`disabled\`, \`type\`, etc.)\\n\\t- \`HTMLAnchorAttributes\` (provides \`href\`, \`target\`, etc.)\\n\\t- \`HTMLInputAttributes\` (provides \`type\`, \`checked\`, \`value\`, etc.)\\n\\t- \`HTMLFormAttributes\` (provides \`action\`, \`method\`, etc.)\\n\\n\\t\`\`\`typescript\\n\\timport type { HTMLButtonAttributes } from \\"svelte/elements\\";\\n\\n\\texport interface MyButtonProps extends HTMLButtonAttributes {\\n\\t\\t// Your custom props here\\n\\t}\\n\\t\`\`\`\\n\\n\\tSee Svelte documentation on typing wrapper components:\\n\\thttps://svelte.dev/docs/svelte/typescript#Typing-wrapper-components\\n*/\\n",
685
- "src/components/Button/index.ts": "export { default as Button } from \\"./Button.svelte\\";\\nexport type { ButtonProps } from \\"./types.js\\";\\n",
686
- "src/components/Button/Button.svelte.test.ts": "import type { Locator } from \\"@vitest/browser/context\\";\\nimport { createRawSnippet } from \\"svelte\\";\\nimport type { ComponentProps } from \\"svelte\\";\\nimport { describe, expect, it } from \\"vitest\\";\\nimport { render } from \\"vitest-browser-svelte\\";\\nimport type { RenderResult } from \\"vitest-browser-svelte\\";\\nimport Component from \\"./Button.svelte\\";\\n\\ndescribe(\\"Button component\\", () => {\\n\\tconst baseProps = {\\n\\t\\tchildren: createRawSnippet(() => ({\\n\\t\\t\\trender: () => \`<span>Button</span>\`,\\n\\t\\t})),\\n\\t} satisfies ComponentProps<typeof Component>;\\n\\n\\tit(\\"renders\\", async () => {\\n\\t\\tconst page = render(Component, { ...baseProps });\\n\\t\\tawait expect.element(componentLocator(page)).toBeInTheDocument();\\n\\t\\tawait expect.element(page.getByText(\\"Button\\")).toBeVisible();\\n\\t});\\n\\n\\tdescribe(\\"attributes\\", () => {\\n\\t\\tit.each([\\n\\t\\t\\t[\\"id\\", \\"test-id\\"],\\n\\t\\t\\t[\\"aria-label\\", \\"test-aria-label\\"],\\n\\t\\t])(\\"applies %s\\", async (attribute, expected) => {\\n\\t\\t\\tconst page = render(Component, { ...baseProps, [attribute]: expected });\\n\\t\\t\\tawait expect\\n\\t\\t\\t\\t.element(componentLocator(page))\\n\\t\\t\\t\\t.toHaveAttribute(attribute, expected);\\n\\t\\t});\\n\\n\\t\\tit(\\"applies classes\\", async () => {\\n\\t\\t\\tconst page = render(Component, { ...baseProps, class: \\"test-class\\" });\\n\\t\\t\\tawait expect.element(componentLocator(page)).toHaveClass(\\"test-class\\");\\n\\t\\t\\tawait expect.element(componentLocator(page)).toHaveClass(\\"ds\\");\\n\\t\\t\\tawait expect\\n\\t\\t\\t\\t.element(componentLocator(page))\\n\\t\\t\\t\\t.toHaveClass(\\"button\\");\\n\\t\\t});\\n\\n\\t\\tit(\\"applies style\\", async () => {\\n\\t\\t\\tconst page = render(Component, {\\n\\t\\t\\t\\t...baseProps,\\n\\t\\t\\t\\tstyle: \\"color: orange;\\",\\n\\t\\t\\t});\\n\\t\\t\\tawait expect\\n\\t\\t\\t\\t.element(componentLocator(page))\\n\\t\\t\\t\\t.toHaveStyle({ color: \\"orange\\" });\\n\\t\\t});\\n\\t});\\n});\\n\\n// Note: Prefer role/semantics-oriented ways of selecting elements (e.g., by role, label, etc.) not only for component roots but for all elements to enhance accessibility and maintainability.\\n// To select the component's root element, use one of the available [Locators](https://vitest.dev/guide/browser/locators.html).\\nfunction componentLocator(page: RenderResult<typeof Component>): Locator {\\n\\t// 1. SEMANTIC ROLES (PREFERRED) - These the most closely resemble how assistive technologies interact with your component\\n\\t// return page.getByRole(\\"link\\", { name: \\"Learn more\\" });\\n\\n\\t// 2. LABELS - To test the association between labels and form controls\\n\\t// return page.getByLabel(\\"Email address\\");\\n\\n\\t// 3. PLACEHOLDER TEXT - Useful for input fields with placeholders\\n\\t// return page.getByPlaceholder(\\"Enter your email\\");\\n\\n\\t// 4. TEXT CONTENT - Good for testing the presence of unique texts and selecting non-interactive elements\\n\\t// return page.getByText(\\"Button\\");\\n\\n\\t// 5. ALT TEXT - For images and visual elements\\n\\t// return page.getByAltText(\\"Company logo\\");\\n\\n\\t// 6. TITLE ATTRIBUTE - For elements with title tooltips\\n\\t// return page.getByTitle(\\"Close dialog\\");\\n\\n\\t// 7. TEST IDS (LAST RESORT) - When semantic options aren't available\\n\\t// return page.getByTestId(\\"button\\");\\n}\\n",
687
- "src/components/Button/Button.ssr.test.ts": "import { render } from \\"@canonical/svelte-ssr-test\\";\\nimport type { RenderResult } from \\"@canonical/svelte-ssr-test\\";\\nimport { createRawSnippet } from \\"svelte\\";\\nimport type { ComponentProps } from \\"svelte\\";\\nimport { describe, expect, it } from \\"vitest\\";\\nimport Component from \\"./Button.svelte\\";\\n\\ndescribe(\\"Button SSR\\", () => {\\n\\tconst baseProps = {\\n\\t\\tchildren: createRawSnippet(() => ({\\n\\t\\t\\trender: () => \`<span>Button</span>\`,\\n\\t\\t})),\\n\\t} satisfies ComponentProps<typeof Component>;\\n\\n\\tdescribe(\\"basics\\", () => {\\n\\t\\tit(\\"doesn't throw\\", () => {\\n\\t\\t\\texpect(() => {\\n\\t\\t\\t\\trender(Component, { props: { ...baseProps } });\\n\\t\\t\\t}).not.toThrow();\\n\\t\\t});\\n\\n\\t\\tit(\\"renders\\", () => {\\n\\t\\t\\tconst page = render(Component, { props: { ...baseProps } });\\n\\t\\t\\texpect(componentLocator(page)).toBeInstanceOf(page.window.HTMLDivElement);\\n\\t\\t});\\n\\t});\\n\\n\\tdescribe(\\"attributes\\", () => {\\n\\t\\tit.each([\\n\\t\\t\\t[\\"id\\", \\"test-id\\"],\\n\\t\\t\\t[\\"aria-label\\", \\"test-aria-label\\"],\\n\\t\\t])(\\"applies %s\\", (attribute, expected) => {\\n\\t\\t\\tconst page = render(Component, {\\n\\t\\t\\t\\tprops: { ...baseProps, [attribute]: expected },\\n\\t\\t\\t});\\n\\t\\t\\texpect(componentLocator(page).getAttribute(attribute)).toBe(expected);\\n\\t\\t});\\n\\n\\t\\tit(\\"applies classes\\", () => {\\n\\t\\t\\tconst page = render(Component, {\\n\\t\\t\\t\\tprops: { class: \\"test-class\\", ...baseProps },\\n\\t\\t\\t});\\n\\t\\t\\texpect(componentLocator(page).classList).toContain(\\"test-class\\");\\n\\t\\t\\texpect(componentLocator(page).classList).toContain(\\"ds\\");\\n\\t\\t\\texpect(componentLocator(page).classList).toContain(\\"button\\");\\n\\t\\t});\\n\\n\\t\\tit(\\"applies style\\", () => {\\n\\t\\t\\tconst page = render(Component, {\\n\\t\\t\\t\\tprops: { style: \\"color: orange;\\", ...baseProps },\\n\\t\\t\\t});\\n\\t\\t\\texpect(componentLocator(page).style.color).toBe(\\"orange\\");\\n\\t\\t});\\n\\t});\\n});\\n\\n// Note: Prefer role/semantics-oriented ways of selecting elements (e.g., by role, label, etc.) not only for component roots but for all elements to enhance accessibility and maintainability.\\n// To select the component's root element, use one of the available [Queries](https://testing-library.com/docs/queries/about/#priority).\\nfunction componentLocator(page: RenderResult): HTMLElement {\\n\\t// 1. SEMANTIC ROLES (PREFERRED) - These the most closely resemble how assistive technologies interact with your component\\n\\t// return page.getByRole(\\"link\\", { name: \\"Learn more\\" });\\n\\n\\t// 2. LABELS - To test the association between labels and form controls\\n\\t// return page.getByLabelText(\\"Email address\\");\\n\\n\\t// 3. PLACEHOLDER TEXT - Useful for input fields with placeholders\\n\\t// return page.getByPlaceholderText(\\"Enter your email\\");\\n\\n\\t// 4. TEXT CONTENT - Good for testing the presence of unique texts and selecting non-interactive elements\\n\\t// return page.getByText(\\"Button\\");\\n\\n\\t// 5. DISPLAY VALUE - For selecting form elements by their current value\\n\\t// return page.getByDisplayValue(\\"test value\\");\\n\\n\\t// 6. ALT TEXT - For images and visual elements\\n\\t// return page.getByAltText(\\"Company logo\\");\\n\\n\\t// 7. TITLE ATTRIBUTE - For elements with title tooltips\\n\\t// return page.getByTitle(\\"Close dialog\\");\\n\\n\\t// 8. TEST IDS (LAST RESORT) - When semantic options aren't available\\n\\t// return page.getByTestId(\\"button\\");\\n}\\n",
688
- "src/components/Button/Button.stories.svelte": "<script lang=\\"ts\\" module>\\n\\timport { defineMeta } from \\"@storybook/addon-svelte-csf\\";\\n\\timport Button from \\"./Button.svelte\\";\\n\\n\\tconst { Story } = defineMeta({\\n\\t\\ttitle: \\"Components/Button\\",\\n\\t\\tcomponent: Button,\\n\\t\\ttags: [\\"autodocs\\"],\\n\\t});\\n</script>\\n\\n<Story name=\\"Default\\">\\n\\tHello, Button!\\n</Story>\\n\\n<Story\\n name=\\"WithCustomClass\\"\\n args={{\\n class: \\"custom-class\\",\\n id: \\"custom-id\\",\\n style: \\"background-color: tomato;\\",\\n }}\\n>\\n\\tCustom styled\\n</Story>\\n",
689
- "src/components/Button/styles.css": ".ds.button {\\n\\t/* Component styles */\\n}\\n",
690
- "src/components/index.ts": "export * from \\"./Button/index.js\\";\\n"
691
- },
692
- "executeCommand": "summon component/svelte --component-path src/components/Button --yes"
693
- }
694
- "
695
- `;
696
-
697
- exports[`golden: executeGenerator — components > svelte — llm plan 1`] = `
698
- "# component/svelte
699
-
700
- > Generate a Svelte 5 component with TypeScript, tests, stories, and styles
701
- > v0.1.0
702
-
703
- ## Answers
704
-
705
- | Option | Value |
706
- |--------|-------|
707
- | componentPath | src/components/Button |
708
- | withStyles | true |
709
- | withStories | true |
710
- | withSsrTests | true |
711
- | useTsStories | false |
712
-
713
- ## Plan
714
-
715
- | Action | Path | Lines |
716
- |--------|------|-------|
717
- | info | Generating Svelte component: Button | |
718
- | mkdir | src/components/Button | |
719
- | create | src/components/Button/Button.svelte | 20 |
720
- | create | src/components/Button/types.ts | 36 |
721
- | create | src/components/Button/index.ts | 3 |
722
- | create | src/components/Button/Button.svelte.test.ts | 78 |
723
- | create | src/components/Button/Button.ssr.test.ts | 84 |
724
- | create | src/components/Button/Button.stories.svelte | 26 |
725
- | create | src/components/Button/styles.css | 4 |
726
- | create | src/components/index.ts | 2 |
727
- | info | Created Button component at src/components/Button | |
728
-
729
- ## Files
730
-
731
- ### src/components/Button/Button.svelte
732
-
733
- \`\`\`svelte
734
- <script lang="ts">
735
- import type { ButtonProps } from "./types.js";
736
- import "./styles.css";
737
-
738
- const componentCssClassName = "ds button";
739
-
740
- let {
741
- class: className,
742
- children,
743
- ...rest
744
- }: ButtonProps = $props();
745
- </script>
746
-
747
- <div
748
- class={[componentCssClassName, className]}
749
- {...rest}
750
- >
751
- {@render children?.()}
752
- </div>
753
-
754
- \`\`\`
755
-
756
- ### src/components/Button/types.ts
757
-
758
- \`\`\`ts
759
- import type { Snippet } from "svelte";
760
- import type { SvelteHTMLElements } from "svelte/elements";
761
-
762
- /*
763
- For components that render specific HTML elements with extended prop sets,
764
- make sure to change \`"div"\` to the appropriate HTML element type.
765
- */
766
- type BaseProps = SvelteHTMLElements["div"];
767
-
768
- export interface ButtonProps extends BaseProps {
769
- /** Content to render inside the component */
770
- children?: Snippet;
771
- // Define additional props specific to Button here
772
- }
773
-
774
- /*
775
- ...or consider using appropriate interfaces directly exported from \`svelte/elements\`.
776
-
777
- For example:
778
- - \`HTMLButtonAttributes\` (provides \`disabled\`, \`type\`, etc.)
779
- - \`HTMLAnchorAttributes\` (provides \`href\`, \`target\`, etc.)
780
- - \`HTMLInputAttributes\` (provides \`type\`, \`checked\`, \`value\`, etc.)
781
- - \`HTMLFormAttributes\` (provides \`action\`, \`method\`, etc.)
782
-
783
- \`\`\`typescript
784
- import type { HTMLButtonAttributes } from "svelte/elements";
785
-
786
- export interface MyButtonProps extends HTMLButtonAttributes {
787
- // Your custom props here
788
- }
789
- \`\`\`
790
-
791
- See Svelte documentation on typing wrapper components:
792
- https://svelte.dev/docs/svelte/typescript#Typing-wrapper-components
793
- */
794
-
795
- \`\`\`
796
-
797
- ### src/components/Button/index.ts
798
-
799
- \`\`\`ts
800
- export { default as Button } from "./Button.svelte";
801
- export type { ButtonProps } from "./types.js";
802
-
803
- \`\`\`
804
-
805
- ### src/components/Button/Button.svelte.test.ts
806
-
807
- \`\`\`ts
808
- import type { Locator } from "@vitest/browser/context";
809
- import { createRawSnippet } from "svelte";
810
- import type { ComponentProps } from "svelte";
811
- import { describe, expect, it } from "vitest";
812
- import { render } from "vitest-browser-svelte";
813
- import type { RenderResult } from "vitest-browser-svelte";
814
- import Component from "./Button.svelte";
815
-
816
- describe("Button component", () => {
817
- const baseProps = {
818
- children: createRawSnippet(() => ({
819
- render: () => \`<span>Button</span>\`,
820
- })),
821
- } satisfies ComponentProps<typeof Component>;
822
-
823
- it("renders", async () => {
824
- const page = render(Component, { ...baseProps });
825
- await expect.element(componentLocator(page)).toBeInTheDocument();
826
- await expect.element(page.getByText("Button")).toBeVisible();
827
- });
828
-
829
- describe("attributes", () => {
830
- it.each([
831
- ["id", "test-id"],
832
- ["aria-label", "test-aria-label"],
833
- ])("applies %s", async (attribute, expected) => {
834
- const page = render(Component, { ...baseProps, [attribute]: expected });
835
- await expect
836
- .element(componentLocator(page))
837
- .toHaveAttribute(attribute, expected);
838
- });
839
-
840
- it("applies classes", async () => {
841
- const page = render(Component, { ...baseProps, class: "test-class" });
842
- await expect.element(componentLocator(page)).toHaveClass("test-class");
843
- await expect.element(componentLocator(page)).toHaveClass("ds");
844
- await expect
845
- .element(componentLocator(page))
846
- .toHaveClass("button");
847
- });
848
-
849
- it("applies style", async () => {
850
- const page = render(Component, {
851
- ...baseProps,
852
- style: "color: orange;",
853
- });
854
- await expect
855
- .element(componentLocator(page))
856
- .toHaveStyle({ color: "orange" });
857
- });
858
- });
859
- });
860
-
861
- // Note: Prefer role/semantics-oriented ways of selecting elements (e.g., by role, label, etc.) not only for component roots but for all elements to enhance accessibility and maintainability.
862
- // To select the component's root element, use one of the available [Locators](https://vitest.dev/guide/browser/locators.html).
863
- function componentLocator(page: RenderResult<typeof Component>): Locator {
864
- // 1. SEMANTIC ROLES (PREFERRED) - These the most closely resemble how assistive technologies interact with your component
865
- // return page.getByRole("link", { name: "Learn more" });
866
-
867
- // 2. LABELS - To test the association between labels and form controls
868
- // return page.getByLabel("Email address");
869
-
870
- // 3. PLACEHOLDER TEXT - Useful for input fields with placeholders
871
- // return page.getByPlaceholder("Enter your email");
872
-
873
- // 4. TEXT CONTENT - Good for testing the presence of unique texts and selecting non-interactive elements
874
- // return page.getByText("Button");
875
-
876
- // 5. ALT TEXT - For images and visual elements
877
- // return page.getByAltText("Company logo");
878
-
879
- // 6. TITLE ATTRIBUTE - For elements with title tooltips
880
- // return page.getByTitle("Close dialog");
881
-
882
- // 7. TEST IDS (LAST RESORT) - When semantic options aren't available
883
- // return page.getByTestId("button");
884
- }
885
-
886
- \`\`\`
887
-
888
- ### src/components/Button/Button.ssr.test.ts
889
-
890
- \`\`\`ts
891
- import { render } from "@canonical/svelte-ssr-test";
892
- import type { RenderResult } from "@canonical/svelte-ssr-test";
893
- import { createRawSnippet } from "svelte";
894
- import type { ComponentProps } from "svelte";
895
- import { describe, expect, it } from "vitest";
896
- import Component from "./Button.svelte";
897
-
898
- describe("Button SSR", () => {
899
- const baseProps = {
900
- children: createRawSnippet(() => ({
901
- render: () => \`<span>Button</span>\`,
902
- })),
903
- } satisfies ComponentProps<typeof Component>;
904
-
905
- describe("basics", () => {
906
- it("doesn't throw", () => {
907
- expect(() => {
908
- render(Component, { props: { ...baseProps } });
909
- }).not.toThrow();
910
- });
911
-
912
- it("renders", () => {
913
- const page = render(Component, { props: { ...baseProps } });
914
- expect(componentLocator(page)).toBeInstanceOf(page.window.HTMLDivElement);
915
- });
916
- });
917
-
918
- describe("attributes", () => {
919
- it.each([
920
- ["id", "test-id"],
921
- ["aria-label", "test-aria-label"],
922
- ])("applies %s", (attribute, expected) => {
923
- const page = render(Component, {
924
- props: { ...baseProps, [attribute]: expected },
925
- });
926
- expect(componentLocator(page).getAttribute(attribute)).toBe(expected);
927
- });
928
-
929
- it("applies classes", () => {
930
- const page = render(Component, {
931
- props: { class: "test-class", ...baseProps },
932
- });
933
- expect(componentLocator(page).classList).toContain("test-class");
934
- expect(componentLocator(page).classList).toContain("ds");
935
- expect(componentLocator(page).classList).toContain("button");
936
- });
937
-
938
- it("applies style", () => {
939
- const page = render(Component, {
940
- props: { style: "color: orange;", ...baseProps },
941
- });
942
- expect(componentLocator(page).style.color).toBe("orange");
943
- });
944
- });
945
- });
946
-
947
- // Note: Prefer role/semantics-oriented ways of selecting elements (e.g., by role, label, etc.) not only for component roots but for all elements to enhance accessibility and maintainability.
948
- // To select the component's root element, use one of the available [Queries](https://testing-library.com/docs/queries/about/#priority).
949
- function componentLocator(page: RenderResult): HTMLElement {
950
- // 1. SEMANTIC ROLES (PREFERRED) - These the most closely resemble how assistive technologies interact with your component
951
- // return page.getByRole("link", { name: "Learn more" });
952
-
953
- // 2. LABELS - To test the association between labels and form controls
954
- // return page.getByLabelText("Email address");
955
-
956
- // 3. PLACEHOLDER TEXT - Useful for input fields with placeholders
957
- // return page.getByPlaceholderText("Enter your email");
958
-
959
- // 4. TEXT CONTENT - Good for testing the presence of unique texts and selecting non-interactive elements
960
- // return page.getByText("Button");
961
-
962
- // 5. DISPLAY VALUE - For selecting form elements by their current value
963
- // return page.getByDisplayValue("test value");
964
-
965
- // 6. ALT TEXT - For images and visual elements
966
- // return page.getByAltText("Company logo");
967
-
968
- // 7. TITLE ATTRIBUTE - For elements with title tooltips
969
- // return page.getByTitle("Close dialog");
970
-
971
- // 8. TEST IDS (LAST RESORT) - When semantic options aren't available
972
- // return page.getByTestId("button");
973
- }
974
-
975
- \`\`\`
976
-
977
- ### src/components/Button/Button.stories.svelte
978
-
979
- \`\`\`svelte
980
- <script lang="ts" module>
981
- import { defineMeta } from "@storybook/addon-svelte-csf";
982
- import Button from "./Button.svelte";
983
-
984
- const { Story } = defineMeta({
985
- title: "Components/Button",
986
- component: Button,
987
- tags: ["autodocs"],
988
- });
989
- </script>
990
-
991
- <Story name="Default">
992
- Hello, Button!
993
- </Story>
994
-
995
- <Story
996
- name="WithCustomClass"
997
- args={{
998
- class: "custom-class",
999
- id: "custom-id",
1000
- style: "background-color: tomato;",
1001
- }}
1002
- >
1003
- Custom styled
1004
- </Story>
1005
-
1006
- \`\`\`
1007
-
1008
- ### src/components/Button/styles.css
1009
-
1010
- \`\`\`css
1011
- .ds.button {
1012
- /* Component styles */
1013
- }
1014
-
1015
- \`\`\`
1016
-
1017
- ### src/components/index.ts
1018
-
1019
- \`\`\`ts
1020
- export * from "./Button/index.js";
1021
-
1022
- \`\`\`
1023
-
1024
- ---
1025
-
1026
- Dry-run complete. No files were modified.
1027
-
1028
- To execute:
1029
-
1030
- \`\`\`sh
1031
- summon component/svelte --component-path src/components/Button --yes
1032
- \`\`\`
1033
- "
1034
- `;
1035
-
1036
- exports[`golden: executeGenerator — package > library — dry-run plan 1`] = `
1037
- "
1038
- ├─ Info Creating package: @canonical/example
1039
- ├─ Info Type: library
1040
- ├─ Create dir example
1041
- ├─ Create dir example/src
1042
- ├─ Create file example/package.json
1043
- ├─ Create file example/tsconfig.json
1044
- ├─ Create file example/biome.json
1045
- ├─ Create file example/src/index.ts
1046
- ├─ Create file example/README.md
1047
- ├─ Info Package created at ./example
1048
- ├─ Info Running bun install...
1049
- ├─ Execute bun install
1050
- ├─ Info Dependencies installed successfully
1051
- ├─ Info
1052
- ├─ Info Next steps:
1053
- ├─ Info cd example
1054
- ├─ Info bun run check
1055
- └─ Info
1056
-
1057
- Dry-run complete. No files were modified.
1058
- Tip: Use --show-files to see generated file contents
1059
- "
1060
- `;
1061
-
1062
- exports[`golden: executeGenerator — package > library — json plan 1`] = `
1063
- "{
1064
- "generator": {
1065
- "name": "package",
1066
- "version": "0.1.0",
1067
- "description": "Generate a new npm package with proper configuration for the pragma monorepo"
1068
- },
1069
- "answers": {
1070
- "name": "@canonical/example",
1071
- "type": "library",
1072
- "description": "",
1073
- "withReact": false,
1074
- "withStorybook": false,
1075
- "withCli": false,
1076
- "withPrTemplate": false,
1077
- "runInstall": true
1078
- },
1079
- "plan": [
1080
- {
1081
- "action": "info",
1082
- "path": "Creating package: @canonical/example"
1083
- },
1084
- {
1085
- "action": "info",
1086
- "path": "Type: library"
1087
- },
1088
- {
1089
- "action": "mkdir",
1090
- "path": "example"
1091
- },
1092
- {
1093
- "action": "mkdir",
1094
- "path": "example/src"
1095
- },
1096
- {
1097
- "action": "create",
1098
- "path": "example/package.json",
1099
- "lines": 1
1100
- },
1101
- {
1102
- "action": "create",
1103
- "path": "example/tsconfig.json",
1104
- "lines": 1
1105
- },
1106
- {
1107
- "action": "create",
1108
- "path": "example/biome.json",
1109
- "lines": 1
1110
- },
1111
- {
1112
- "action": "create",
1113
- "path": "example/src/index.ts",
1114
- "lines": 1
1115
- },
1116
- {
1117
- "action": "create",
1118
- "path": "example/README.md",
1119
- "lines": 1
1120
- },
1121
- {
1122
- "action": "info",
1123
- "path": "Package created at ./example"
1124
- },
1125
- {
1126
- "action": "info",
1127
- "path": "Running bun install..."
1128
- },
1129
- {
1130
- "action": "exec",
1131
- "path": "bun install"
1132
- },
1133
- {
1134
- "action": "info",
1135
- "path": "Dependencies installed successfully"
1136
- },
1137
- {
1138
- "action": "info",
1139
- "path": ""
1140
- },
1141
- {
1142
- "action": "info",
1143
- "path": "Next steps:"
1144
- },
1145
- {
1146
- "action": "info",
1147
- "path": " cd example"
1148
- },
1149
- {
1150
- "action": "info",
1151
- "path": " bun run check"
1152
- },
1153
- {
1154
- "action": "info",
1155
- "path": ""
1156
- }
1157
- ],
1158
- "files": {
1159
- "example/package.json": "[mock content of <repo>/packages/summon/package/src/templates/package.json.ejs]",
1160
- "example/tsconfig.json": "[mock content of <repo>/packages/summon/package/src/templates/tsconfig.json.ejs]",
1161
- "example/biome.json": "[mock content of <repo>/packages/summon/package/src/templates/biome.json.ejs]",
1162
- "example/src/index.ts": "[mock content of <repo>/packages/summon/package/src/templates/index.ts.ejs]",
1163
- "example/README.md": "[mock content of <repo>/packages/summon/package/src/templates/README.md.ejs]"
1164
- },
1165
- "executeCommand": "summon package --name @canonical/example --type library --description --yes"
1166
- }
1167
- "
1168
- `;
1169
-
1170
- exports[`golden: runSetupTask — setups > completions (bash) — dry-run 1`] = `
1171
- "Dry run — the following operations would be performed:
1172
-
1173
- ├─ Info Setting up completions for bash...
1174
- ├─ Create dir <home>/.local/share/bash-completion/completions
1175
- ├─ Create file <home>/.local/share/bash-completion/completions/pragma
1176
- ├─ Info ✓ Completions installed for bash.
1177
- └─ Info Run \`source ~/.bashrc\` or start a new shell to activate.
1178
-
1179
- No changes were made."
1180
- `;
1181
-
1182
- exports[`golden: runSetupTask — setups > lsp — dry-run 1`] = `
1183
- "Dry run — the following operations would be performed:
1184
-
1185
- ├─ Info Ensuring the Terrazzo LSP VS Code extension is installed...
1186
- ├─ Execute bunx @canonical/terrazzo-lsp-extension
1187
- └─ Info ✓ Terrazzo LSP extension is installed (up to date).
1188
-
1189
- No changes were made."
1190
- `;
1191
-
1192
- exports[`golden: runSetupTask — setups > lsp — dry-run json 1`] = `
1193
- "[
1194
- {
1195
- "action": "Log",
1196
- "message": "Ensuring the Terrazzo LSP VS Code extension is installed..."
1197
- },
1198
- {
1199
- "action": "Exec"
1200
- },
1201
- {
1202
- "action": "Log",
1203
- "message": "✓ Terrazzo LSP extension is installed (up to date)."
1204
- }
1205
- ]
1206
- "
1207
- `;