@canonical/pragma-cli 0.30.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.
- package/dist/pragma +0 -0
- package/package.json +27 -40
- package/src/bin.ts +292 -11
- package/src/capabilities/block/blockList.verb.ts +150 -0
- package/src/capabilities/block/index.ts +25 -0
- package/src/capabilities/block/pack.ts +155 -0
- package/src/capabilities/block/parity.test.ts +180 -0
- package/src/capabilities/block/tierChain.ts +78 -0
- package/src/capabilities/capabilities/capabilities.render.ts +89 -0
- package/src/capabilities/capabilities/capabilities.test.ts +131 -0
- package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
- package/src/capabilities/capabilities/catalog.ts +144 -0
- package/src/capabilities/capabilities/hints.ts +221 -0
- package/src/capabilities/capabilities/index.ts +13 -0
- package/src/capabilities/capabilities/types.ts +58 -0
- package/src/capabilities/colophon/collectColophon.ts +68 -0
- package/src/capabilities/colophon/colophon.render.test.ts +87 -0
- package/src/capabilities/colophon/colophon.render.ts +38 -0
- package/src/capabilities/colophon/colophon.test.ts +241 -0
- package/src/capabilities/colophon/colophon.verb.ts +41 -0
- package/src/capabilities/colophon/index.ts +6 -0
- package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
- package/src/capabilities/colophon/markdownTerminal.ts +85 -0
- package/src/capabilities/colophon/pragmaColophon.ts +66 -0
- package/src/capabilities/colophon/types.ts +29 -0
- package/src/capabilities/config/collectConfigShow.ts +32 -0
- package/src/capabilities/config/field.render.ts +28 -0
- package/src/capabilities/config/field.test.ts +188 -0
- package/src/capabilities/config/fields.ts +152 -0
- package/src/capabilities/config/index.ts +6 -0
- package/src/capabilities/config/runField.ts +59 -0
- package/src/capabilities/config/runSet.ts +38 -0
- package/src/capabilities/config/set.test.ts +207 -0
- package/src/capabilities/config/set.verb.ts +70 -0
- package/src/capabilities/config/show.render.ts +61 -0
- package/src/capabilities/config/show.verb.ts +45 -0
- package/src/capabilities/config/types.ts +27 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +88 -0
- package/src/capabilities/create/byteEquality.test.ts +222 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +152 -0
- package/src/capabilities/create/create.mcp.test.ts +139 -0
- package/src/capabilities/create/create.render.ts +50 -0
- package/src/capabilities/create/create.test.ts +403 -0
- package/src/capabilities/create/create.verb.ts +435 -0
- package/src/capabilities/create/cwdJail.test.ts +129 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +111 -0
- package/src/capabilities/create/index.ts +25 -0
- package/src/capabilities/create/pathJail.ts +73 -0
- package/src/capabilities/create/pickGenerator.ts +63 -0
- package/src/capabilities/create/templates.embedded.generated.ts +53 -0
- package/src/capabilities/create/types.ts +8 -0
- package/src/capabilities/doctor/checks/checkConfigFile.ts +41 -0
- package/src/capabilities/doctor/checks/checkKeStore.ts +39 -0
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +108 -0
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +61 -0
- package/src/capabilities/doctor/checks/checkNodeVersion.ts +25 -0
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +73 -0
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +22 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +111 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +131 -0
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +60 -0
- package/src/capabilities/doctor/doctor.render.ts +116 -0
- package/src/capabilities/doctor/doctor.test.ts +179 -0
- package/src/capabilities/doctor/doctor.verb.ts +46 -0
- package/src/capabilities/doctor/index.ts +6 -0
- package/src/capabilities/doctor/runChecks.ts +76 -0
- package/src/capabilities/doctor/types.ts +41 -0
- package/src/capabilities/emptyRecovery.test.ts +112 -0
- package/src/capabilities/graph/index.ts +21 -0
- package/src/capabilities/graph/inspect.render.ts +38 -0
- package/src/capabilities/graph/inspect.test.ts +80 -0
- package/src/capabilities/graph/inspect.verb.ts +51 -0
- package/src/capabilities/graph/query.render.ts +77 -0
- package/src/capabilities/graph/query.test.ts +156 -0
- package/src/capabilities/graph/query.verb.ts +58 -0
- package/src/capabilities/graph/runQuery.ts +49 -0
- package/src/capabilities/index.ts +54 -0
- package/src/capabilities/info/collectInfo.ts +76 -0
- package/src/capabilities/info/index.ts +6 -0
- package/src/capabilities/info/info.render.ts +72 -0
- package/src/capabilities/info/info.test.ts +127 -0
- package/src/capabilities/info/info.verb.ts +46 -0
- package/src/capabilities/info/types.ts +42 -0
- package/src/capabilities/lazy.test.ts +89 -0
- package/src/capabilities/meta/complete.verb.ts +52 -0
- package/src/capabilities/meta/index.ts +15 -0
- package/src/capabilities/meta/mcp.verb.ts +35 -0
- package/src/capabilities/modifier/index.ts +15 -0
- package/src/capabilities/modifier/pack.ts +64 -0
- package/src/capabilities/ontology/index.ts +12 -0
- package/src/capabilities/ontology/ontology.test.ts +94 -0
- package/src/capabilities/ontology/queries.ts +197 -0
- package/src/capabilities/ontology/render.ts +87 -0
- package/src/capabilities/ontology/verbs.ts +170 -0
- package/src/capabilities/prompt/index.ts +18 -0
- package/src/capabilities/prompt/prompt.render.ts +70 -0
- package/src/capabilities/prompt/prompt.test.ts +119 -0
- package/src/capabilities/prompt/types.ts +30 -0
- package/src/capabilities/prompt/verbs.ts +93 -0
- package/src/capabilities/resources/index.ts +15 -0
- package/src/capabilities/resources/provider.ts +231 -0
- package/src/capabilities/resources/resources.test.ts +114 -0
- package/src/capabilities/roundtrip.test.ts +107 -0
- package/src/capabilities/setup/index.ts +6 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +108 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +307 -0
- package/src/capabilities/setup/operations/setupLsp.ts +61 -0
- package/src/capabilities/setup/operations/setupMcp.ts +85 -0
- package/src/capabilities/setup/operations/setupSkills.ts +199 -0
- package/src/capabilities/setup/setup.render.ts +49 -0
- package/src/capabilities/setup/setup.test.ts +351 -0
- package/src/capabilities/setup/setup.verb.ts +209 -0
- package/src/capabilities/setup/shell.ts +85 -0
- package/src/capabilities/setup/types.ts +42 -0
- package/src/capabilities/shared/assertExecOk.ts +106 -0
- package/src/capabilities/shared/packageManager.ts +62 -0
- package/src/capabilities/shared/registry.ts +70 -0
- package/src/capabilities/skill/discover.ts +178 -0
- package/src/capabilities/skill/index.ts +12 -0
- package/src/capabilities/skill/render.ts +60 -0
- package/src/capabilities/skill/skill.test.ts +142 -0
- package/src/capabilities/skill/verbs.ts +100 -0
- package/src/capabilities/sources/collectStatus.ts +87 -0
- package/src/capabilities/sources/index.ts +15 -0
- package/src/capabilities/sources/installSkills.ts +124 -0
- package/src/capabilities/sources/runUpdate.ts +407 -0
- package/src/capabilities/sources/sources.test.ts +642 -0
- package/src/capabilities/sources/status.render.ts +56 -0
- package/src/capabilities/sources/status.verb.ts +42 -0
- package/src/capabilities/sources/types.ts +51 -0
- package/src/capabilities/sources/update.render.ts +35 -0
- package/src/capabilities/sources/update.verb.ts +76 -0
- package/src/capabilities/standard/index.ts +18 -0
- package/src/capabilities/standard/pack.ts +128 -0
- package/src/capabilities/standard/parity.test.ts +208 -0
- package/src/capabilities/surface.test.ts +208 -0
- package/src/capabilities/tier/index.ts +19 -0
- package/src/capabilities/tier/lookup.render.ts +34 -0
- package/src/capabilities/tier/lookup.test.ts +68 -0
- package/src/capabilities/tier/lookup.verb.ts +44 -0
- package/src/capabilities/tier/pack.ts +28 -0
- package/src/capabilities/tier/runLookup.ts +59 -0
- package/src/capabilities/token/addConfig.render.ts +27 -0
- package/src/capabilities/token/addConfig.test.ts +62 -0
- package/src/capabilities/token/addConfig.verb.ts +40 -0
- package/src/capabilities/token/index.ts +19 -0
- package/src/capabilities/token/pack.ts +58 -0
- package/src/capabilities/token/runAddConfig.ts +95 -0
- package/src/capabilities/upgrade/index.ts +6 -0
- package/src/capabilities/upgrade/runUpgrade.ts +119 -0
- package/src/capabilities/upgrade/types.ts +21 -0
- package/src/capabilities/upgrade/upgrade.render.ts +55 -0
- package/src/capabilities/upgrade/upgrade.test.ts +372 -0
- package/src/capabilities/upgrade/upgrade.verb.ts +56 -0
- package/src/constants.test.ts +33 -0
- package/src/constants.ts +38 -68
- package/src/index.ts +27 -134
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +340 -0
- package/src/kernel/completion/bashDrive.test.ts +73 -0
- package/src/kernel/completion/complete.test.ts +101 -0
- package/src/kernel/completion/complete.ts +77 -0
- package/src/kernel/completion/emitScripts.test.ts +173 -0
- package/src/kernel/completion/emitScripts.ts +122 -0
- package/src/kernel/completion/entitySource.test.ts +198 -0
- package/src/kernel/completion/entitySource.ts +269 -0
- package/src/kernel/completion/index.ts +42 -0
- package/src/kernel/completion/model.test.ts +405 -0
- package/src/kernel/completion/model.ts +259 -0
- package/src/kernel/completion/parse.test.ts +338 -0
- package/src/kernel/completion/parse.ts +294 -0
- package/src/kernel/completion/rank.test.ts +100 -0
- package/src/kernel/completion/rank.ts +118 -0
- package/src/kernel/completion/resolve.test.ts +204 -0
- package/src/kernel/completion/resolve.ts +133 -0
- package/src/kernel/completion/safety.test.ts +374 -0
- package/src/kernel/completion/templates/bash.ts +249 -0
- package/src/kernel/completion/templates/fish.ts +245 -0
- package/src/kernel/completion/templates/shared.ts +134 -0
- package/src/kernel/completion/templates/zsh.ts +246 -0
- package/src/kernel/completion/types.ts +153 -0
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +11 -0
- package/src/kernel/config/defaults.ts +28 -0
- package/src/kernel/config/evaluateProjectConfig.ts +119 -0
- package/src/kernel/config/findProjectConfig.ts +45 -0
- package/src/kernel/config/firstRun.test.ts +60 -0
- package/src/kernel/config/firstRun.ts +91 -0
- package/src/kernel/config/globalConfig.ts +94 -0
- package/src/kernel/config/index.ts +35 -0
- package/src/kernel/config/paths.ts +39 -0
- package/src/kernel/config/readConfig.test.ts +245 -0
- package/src/kernel/config/readConfig.ts +94 -0
- package/src/kernel/config/schema.ts +56 -0
- package/src/kernel/config/types.ts +106 -0
- package/src/kernel/config/writeConfigField.ts +82 -0
- package/src/kernel/error/PragmaError.test.ts +119 -0
- package/src/kernel/error/PragmaError.ts +182 -0
- package/src/kernel/error/constants.ts +38 -0
- package/src/kernel/error/fromTaskError.test.ts +83 -0
- package/src/kernel/error/fromTaskError.ts +80 -0
- package/src/kernel/error/index.ts +23 -0
- package/src/kernel/error/recovery.test.ts +60 -0
- package/src/kernel/error/recovery.ts +49 -0
- package/src/kernel/error/renderError.ts +101 -0
- package/src/kernel/error/serialize.ts +28 -0
- package/src/kernel/error/types.ts +62 -0
- package/src/kernel/packs/collect.test.ts +138 -0
- package/src/kernel/packs/collect.ts +108 -0
- package/src/kernel/packs/compile.test.ts +229 -0
- package/src/kernel/packs/compile.ts +315 -0
- package/src/kernel/packs/disclosure.test.ts +200 -0
- package/src/kernel/packs/disclosure.ts +98 -0
- package/src/kernel/packs/glob.ts +39 -0
- package/src/kernel/packs/graphql/buildLookupDocument.ts +397 -0
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +217 -0
- package/src/kernel/packs/graphql/nameMap.ts +67 -0
- package/src/kernel/packs/graphqlSource.test.ts +383 -0
- package/src/kernel/packs/iri.ts +78 -0
- package/src/kernel/packs/renderPack.ts +196 -0
- package/src/kernel/packs/resolveEntity.ts +232 -0
- package/src/kernel/packs/runBodies.ts +157 -0
- package/src/kernel/packs/sample.ts +60 -0
- package/src/kernel/packs/schema.ts +328 -0
- package/src/kernel/packs/sparql/applyFilters.ts +83 -0
- package/src/kernel/packs/sparql/applySearch.ts +33 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +180 -0
- package/src/kernel/packs/sparql/escape.ts +22 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +80 -0
- package/src/kernel/packs/sparql/runSelect.ts +84 -0
- package/src/kernel/packs/toolDescription.test.ts +81 -0
- package/src/kernel/packs/types.ts +337 -0
- package/src/kernel/packs/uniqueness.ts +35 -0
- package/src/kernel/project/cli/buildProgram.test.ts +387 -0
- package/src/kernel/project/cli/buildProgram.ts +280 -0
- package/src/kernel/project/cli/dispatch.test.ts +288 -0
- package/src/kernel/project/cli/dispatch.ts +334 -0
- package/src/kernel/project/cli/exitCodes.test.ts +59 -0
- package/src/kernel/project/cli/exitCodes.ts +68 -0
- package/src/kernel/project/cli/globalFlags.test.ts +99 -0
- package/src/kernel/project/cli/globalFlags.ts +149 -0
- package/src/kernel/project/cli/helpFormat.ts +58 -0
- package/src/kernel/project/cli/index.ts +21 -0
- package/src/kernel/project/cli/interactionSeam.test.ts +99 -0
- package/src/kernel/project/cli/rootHelp.ts +218 -0
- package/src/kernel/project/cli/suggest.test.ts +54 -0
- package/src/kernel/project/cli/suggest.ts +67 -0
- package/src/kernel/project/cli/suggestNames.ts +122 -0
- package/src/kernel/project/cli/verbHelp.test.ts +138 -0
- package/src/kernel/project/cli/verbHelp.ts +144 -0
- package/src/kernel/project/mcp/buildServer.ts +70 -0
- package/src/kernel/project/mcp/envelope.ts +44 -0
- package/src/kernel/project/mcp/index.ts +8 -0
- package/src/kernel/project/mcp/instructions.ts +48 -0
- package/src/kernel/project/mcp/parity.test.ts +72 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +96 -0
- package/src/kernel/project/mcp/prompts/provider.ts +74 -0
- package/src/kernel/project/mcp/prompts/source.ts +194 -0
- package/src/kernel/project/mcp/registerVerb.test.ts +238 -0
- package/src/kernel/project/mcp/registerVerb.ts +296 -0
- package/src/kernel/project/mcp/serve.ts +34 -0
- package/src/kernel/project/mcp/toolDescriptions.test.ts +80 -0
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +127 -0
- package/src/kernel/render/compactUri.ts +25 -0
- package/src/kernel/render/contracts.ts +72 -0
- package/src/kernel/render/disclosure.ts +44 -0
- package/src/kernel/render/envelope.ts +50 -0
- package/src/kernel/render/formatters.ts +30 -0
- package/src/kernel/render/index.ts +30 -0
- package/src/kernel/render/prefixes.ts +21 -0
- package/src/kernel/render/renderers.test.ts +171 -0
- package/src/kernel/render/renderers.ts +429 -0
- package/src/kernel/render/writeStdout.test.ts +43 -0
- package/src/kernel/render/writeStdout.ts +49 -0
- package/src/kernel/runtime/boot.test.ts +69 -0
- package/src/kernel/runtime/boot.ts +59 -0
- package/src/kernel/runtime/facade.test.ts +125 -0
- package/src/kernel/runtime/facade.ts +47 -0
- package/src/kernel/runtime/graphpack/build.ts +148 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +229 -0
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +8 -0
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +4 -0
- package/src/kernel/runtime/graphpack/embedded/sample.ttl +39 -0
- package/src/kernel/runtime/graphpack/embedded.ts +70 -0
- package/src/kernel/runtime/graphpack/graphpack.test.ts +153 -0
- package/src/kernel/runtime/graphpack/hash.ts +46 -0
- package/src/kernel/runtime/graphpack/index.ts +21 -0
- package/src/kernel/runtime/graphpack/manifest.ts +55 -0
- package/src/kernel/runtime/graphpack/read.ts +102 -0
- package/src/kernel/runtime/graphpack/types.ts +111 -0
- package/src/kernel/runtime/index.ts +15 -0
- package/src/kernel/runtime/loadSession.ts +56 -0
- package/src/kernel/runtime/lock.ts +90 -0
- package/src/kernel/runtime/paths.ts +37 -0
- package/src/kernel/runtime/probe.test.ts +16 -0
- package/src/kernel/runtime/probe.ts +39 -0
- package/src/kernel/runtime/readEntity.ts +83 -0
- package/src/kernel/runtime/refs/gitOps.ts +88 -0
- package/src/kernel/runtime/refs/parseRef.test.ts +34 -0
- package/src/kernel/runtime/refs/parseRef.ts +103 -0
- package/src/kernel/runtime/refs/resolve.ts +320 -0
- package/src/kernel/runtime/resolveSources.test.ts +154 -0
- package/src/kernel/runtime/resolveSources.ts +66 -0
- package/src/kernel/runtime/store.test.ts +94 -0
- package/src/kernel/runtime/store.ts +90 -0
- package/src/kernel/runtime/storeless.test.ts +86 -0
- package/src/kernel/runtime/types.ts +210 -0
- package/src/kernel/runtime/wasmEmbed.test.ts +142 -0
- package/src/kernel/spec/asVerb.ts +23 -0
- package/src/kernel/spec/emitSurface.test.ts +65 -0
- package/src/kernel/spec/emitSurface.ts +223 -0
- package/src/kernel/spec/index.ts +34 -0
- package/src/kernel/spec/surfaceConformance.test.ts +94 -0
- package/src/kernel/spec/surfaceConformance.ts +135 -0
- package/src/kernel/spec/types.ts +233 -0
- package/src/kernel/spec/validate.test.ts +81 -0
- package/src/kernel/spec/validate.ts +125 -0
- package/src/testing/PARITY_GAPS.test.ts +32 -0
- package/src/testing/PARITY_GAPS.ts +179 -0
- package/src/testing/behavioral/README.md +164 -0
- package/src/testing/behavioral/agentSession.mcp.test.ts +160 -0
- package/src/testing/behavioral/autoLlm.e2e.test.ts +44 -0
- package/src/testing/behavioral/completion.test.ts +132 -0
- package/src/testing/behavioral/disclosure.test.ts +103 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +123 -0
- package/src/testing/behavioral/exitCodes.e2e.test.ts +53 -0
- package/src/testing/behavioral/firstRun.e2e.test.ts +40 -0
- package/src/testing/behavioral/harness.foundation.test.ts +136 -0
- package/src/testing/behavioral/journeys.cli.test.ts +129 -0
- package/src/testing/behavioral/liveReadSurface.ts +80 -0
- package/src/testing/behavioral/mcpServe.e2e.test.ts +21 -0
- package/src/testing/behavioral/mcpSurface.test.ts +139 -0
- package/src/testing/behavioral/parity.test.ts +224 -0
- package/src/testing/behavioral/rootCli.e2e.test.ts +62 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +201 -0
- package/src/testing/eval/cases/assembly.ts +195 -0
- package/src/testing/eval/cases/effectful.ts +245 -0
- package/src/testing/eval/cases/readNouns.ts +232 -0
- package/src/testing/eval/cases/stable.ts +163 -0
- package/src/testing/eval/eval.test.ts +74 -0
- package/src/testing/eval/harness.ts +91 -0
- package/src/testing/eval/report.ts +58 -0
- package/src/testing/fixtures/blockGraph.ts +112 -0
- package/src/testing/fixtures/completionFixture.ts +239 -0
- package/src/testing/fixtures/fixtureCapability.ts +175 -0
- package/src/testing/fixtures/graph/canonical.ts +184 -0
- package/src/testing/fixtures/packs/recipe.ts +78 -0
- package/src/testing/helpers/fixtureGraph.ts +148 -0
- package/src/testing/helpers/golden.ts +45 -0
- package/src/testing/helpers/packRuntime.ts +118 -0
- package/src/testing/helpers/parity.ts +86 -0
- package/src/testing/helpers/projectCli.ts +35 -0
- package/src/testing/helpers/projectMcp.ts +145 -0
- package/src/testing/helpers/runCli.ts +128 -0
- package/src/testing/perf/budgets.test.ts +164 -0
- package/src/testing/perf/budgets.ts +37 -0
- package/src/testing/perf/globalSetup.ts +30 -0
- package/src/testing/perf/measure.ts +97 -0
- package/src/testing/setupXdgIsolation.ts +17 -5
- package/src/types.ts +42 -0
- package/README.md +0 -429
- package/src/bin.test.ts +0 -54
- package/src/compile-validation.runner.ts +0 -137
- package/src/compile-validation.ts +0 -191
- package/src/completions/computeSocketPath.test.ts +0 -26
- package/src/completions/computeSocketPath.ts +0 -16
- package/src/completions/constants.ts +0 -18
- package/src/completions/handleQuery.test.ts +0 -93
- package/src/completions/handleQuery.ts +0 -30
- package/src/completions/index.ts +0 -14
- package/src/completions/queryCompletions.test.ts +0 -100
- package/src/completions/queryCompletions.ts +0 -61
- package/src/completions/querySocket.test.ts +0 -70
- package/src/completions/querySocket.ts +0 -44
- package/src/completions/startCompletionsServer.test.ts +0 -74
- package/src/completions/startCompletionsServer.ts +0 -75
- package/src/completions/startCompletionsServer.unit.test.ts +0 -131
- package/src/completions/waitForSocket.test.ts +0 -27
- package/src/completions/waitForSocket.ts +0 -27
- package/src/config/configExists.ts +0 -14
- package/src/config/defaultConfig.test.ts +0 -33
- package/src/config/defaultConfig.ts +0 -59
- package/src/config/defaults.json +0 -17
- package/src/config/findProjectConfigPath.test.ts +0 -53
- package/src/config/findProjectConfigPath.ts +0 -36
- package/src/config/index.ts +0 -21
- package/src/config/mergeConfigFileUpdate.ts +0 -58
- package/src/config/parseConfigValues.ts +0 -215
- package/src/config/readConfig.test.ts +0 -395
- package/src/config/readConfig.ts +0 -21
- package/src/config/readConfigLayers.test.ts +0 -107
- package/src/config/readConfigLayers.ts +0 -115
- package/src/config/resolveConfigPath.test.ts +0 -20
- package/src/config/resolveConfigPath.ts +0 -11
- package/src/config/resolveGlobalConfigPath.ts +0 -13
- package/src/config/resolveWriteConfigPath.test.ts +0 -53
- package/src/config/resolveWriteConfigPath.ts +0 -31
- package/src/config/types.ts +0 -121
- package/src/config/writeConfig.ts +0 -37
- package/src/domains/block/blockConfig.ts +0 -97
- package/src/domains/block/commands/index.ts +0 -5
- package/src/domains/block/commands/list.test.ts +0 -111
- package/src/domains/block/commands/list.ts +0 -11
- package/src/domains/block/commands/lookup.test.ts +0 -187
- package/src/domains/block/commands/lookup.ts +0 -14
- package/src/domains/block/commands/sample.ts +0 -55
- package/src/domains/block/formatters/index.ts +0 -5
- package/src/domains/block/formatters/list.test.ts +0 -107
- package/src/domains/block/formatters/list.ts +0 -50
- package/src/domains/block/formatters/lookup.test.ts +0 -318
- package/src/domains/block/formatters/lookup.ts +0 -149
- package/src/domains/block/formatters/sample.ts +0 -21
- package/src/domains/block/formatters/types.ts +0 -16
- package/src/domains/block/helpers/index.ts +0 -4
- package/src/domains/block/helpers/resolveAspects.test.ts +0 -64
- package/src/domains/block/helpers/resolveAspects.ts +0 -35
- package/src/domains/block/index.ts +0 -25
- package/src/domains/block/mcp/index.ts +0 -2
- package/src/domains/block/mcp/specs.ts +0 -67
- package/src/domains/block/operations/index.ts +0 -5
- package/src/domains/block/operations/list.test.ts +0 -80
- package/src/domains/block/operations/list.ts +0 -72
- package/src/domains/block/operations/lookup.test.ts +0 -129
- package/src/domains/block/operations/lookup.ts +0 -446
- package/src/domains/block/operations/sample.ts +0 -41
- package/src/domains/block/orchestration/blockEmptyError.test.ts +0 -26
- package/src/domains/block/orchestration/blockEmptyError.ts +0 -19
- package/src/domains/block/orchestration/buildBlockFilters.ts +0 -12
- package/src/domains/block/orchestration/enrichBlocks.ts +0 -41
- package/src/domains/block/orchestration/index.ts +0 -5
- package/src/domains/block/orchestration/resolveBlockList.ts +0 -39
- package/src/domains/block/orchestration/resolveBlockLookup.ts +0 -35
- package/src/domains/block/stories.test.ts +0 -28
- package/src/domains/block/stories.ts +0 -254
- package/src/domains/block/types.ts +0 -30
- package/src/domains/config/commands/channel.test.ts +0 -112
- package/src/domains/config/commands/channel.ts +0 -86
- package/src/domains/config/commands/configScope.ts +0 -46
- package/src/domains/config/commands/framework.test.ts +0 -105
- package/src/domains/config/commands/framework.ts +0 -91
- package/src/domains/config/commands/index.ts +0 -6
- package/src/domains/config/commands/show.test.ts +0 -61
- package/src/domains/config/commands/show.ts +0 -11
- package/src/domains/config/commands/tier.test.ts +0 -95
- package/src/domains/config/commands/tier.ts +0 -84
- package/src/domains/config/commands/trace.test.ts +0 -165
- package/src/domains/config/commands/trace.ts +0 -83
- package/src/domains/config/formatters/channel.test.ts +0 -70
- package/src/domains/config/formatters/channel.ts +0 -37
- package/src/domains/config/formatters/framework.ts +0 -37
- package/src/domains/config/formatters/index.ts +0 -6
- package/src/domains/config/formatters/show.test.ts +0 -153
- package/src/domains/config/formatters/show.ts +0 -89
- package/src/domains/config/formatters/tier.test.ts +0 -86
- package/src/domains/config/formatters/tier.ts +0 -48
- package/src/domains/config/formatters/trace.ts +0 -28
- package/src/domains/config/index.ts +0 -36
- package/src/domains/config/mcp/index.ts +0 -2
- package/src/domains/config/mcp/specs.ts +0 -100
- package/src/domains/config/operations/index.ts +0 -6
- package/src/domains/config/operations/show.test.ts +0 -78
- package/src/domains/config/operations/show.ts +0 -48
- package/src/domains/config/operations/types.ts +0 -20
- package/src/domains/config/operations/validateChannel.test.ts +0 -36
- package/src/domains/config/operations/validateChannel.ts +0 -24
- package/src/domains/config/operations/validateFramework.ts +0 -24
- package/src/domains/config/operations/validateTier.test.ts +0 -56
- package/src/domains/config/operations/validateTier.ts +0 -35
- package/src/domains/config/stories.ts +0 -42
- package/src/domains/config/tasks/index.ts +0 -6
- package/src/domains/config/tasks/setChannel.ts +0 -21
- package/src/domains/config/tasks/setFramework.ts +0 -21
- package/src/domains/config/tasks/setTier.ts +0 -20
- package/src/domains/config/tasks/setTrace.ts +0 -20
- package/src/domains/config/tasks/writeConfigField.ts +0 -41
- package/src/domains/create/commands/component.test.ts +0 -166
- package/src/domains/create/commands/component.ts +0 -123
- package/src/domains/create/commands/index.ts +0 -3
- package/src/domains/create/commands/package.test.ts +0 -35
- package/src/domains/create/commands/package.ts +0 -21
- package/src/domains/create/generators.ts +0 -8
- package/src/domains/create/index.ts +0 -15
- package/src/domains/create/mcp/index.ts +0 -2
- package/src/domains/create/mcp/specs.ts +0 -168
- package/src/domains/doctor/commands/doctor.test.ts +0 -75
- package/src/domains/doctor/commands/doctor.ts +0 -43
- package/src/domains/doctor/commands/index.ts +0 -2
- package/src/domains/doctor/formatters/doctor.test.ts +0 -117
- package/src/domains/doctor/formatters/doctor.ts +0 -84
- package/src/domains/doctor/formatters/index.ts +0 -2
- package/src/domains/doctor/index.ts +0 -9
- package/src/domains/doctor/mcp/index.ts +0 -2
- package/src/domains/doctor/mcp/specs.ts +0 -41
- package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
- package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
- package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -130
- package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
- package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
- package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -58
- package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
- package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
- package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
- package/src/domains/doctor/operations/checks/index.ts +0 -10
- package/src/domains/doctor/operations/checks.test.ts +0 -305
- package/src/domains/doctor/operations/index.ts +0 -3
- package/src/domains/doctor/operations/runChecks.test.ts +0 -176
- package/src/domains/doctor/operations/runChecks.ts +0 -78
- package/src/domains/doctor/operations/types.ts +0 -20
- package/src/domains/graph/commands/index.ts +0 -4
- package/src/domains/graph/commands/inspect.test.ts +0 -94
- package/src/domains/graph/commands/inspect.ts +0 -63
- package/src/domains/graph/commands/query.test.ts +0 -92
- package/src/domains/graph/commands/query.ts +0 -60
- package/src/domains/graph/formatters/index.ts +0 -4
- package/src/domains/graph/formatters/inspect.ts +0 -50
- package/src/domains/graph/formatters/query.ts +0 -37
- package/src/domains/graph/helpers/index.ts +0 -3
- package/src/domains/graph/helpers/resolveUri.test.ts +0 -50
- package/src/domains/graph/helpers/resolveUri.ts +0 -77
- package/src/domains/graph/index.ts +0 -22
- package/src/domains/graph/mcp/index.ts +0 -2
- package/src/domains/graph/mcp/specs.ts +0 -82
- package/src/domains/graph/operations/executeQuery.test.ts +0 -68
- package/src/domains/graph/operations/executeQuery.ts +0 -32
- package/src/domains/graph/operations/index.ts +0 -4
- package/src/domains/graph/operations/inspectUri.test.ts +0 -101
- package/src/domains/graph/operations/inspectUri.ts +0 -64
- package/src/domains/graphql/commands/build.test.ts +0 -196
- package/src/domains/graphql/commands/build.ts +0 -117
- package/src/domains/graphql/commands/check.test.ts +0 -141
- package/src/domains/graphql/commands/check.ts +0 -81
- package/src/domains/graphql/commands/index.ts +0 -5
- package/src/domains/graphql/commands/serve.test.ts +0 -40
- package/src/domains/graphql/commands/serve.ts +0 -131
- package/src/domains/graphql/constants.ts +0 -10
- package/src/domains/graphql/formatters/index.ts +0 -3
- package/src/domains/graphql/formatters/report.ts +0 -78
- package/src/domains/graphql/helpers/gatherSources.test.ts +0 -92
- package/src/domains/graphql/helpers/gatherSources.ts +0 -58
- package/src/domains/graphql/helpers/index.ts +0 -6
- package/src/domains/graphql/helpers/parsePrefixes.test.ts +0 -44
- package/src/domains/graphql/helpers/parsePrefixes.ts +0 -38
- package/src/domains/graphql/helpers/resolveSourceFiles.test.ts +0 -56
- package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -45
- package/src/domains/graphql/helpers/routeGraphql.test.ts +0 -43
- package/src/domains/graphql/helpers/routeGraphql.ts +0 -28
- package/src/domains/graphql/index.ts +0 -24
- package/src/domains/graphql/operations/compileSchema.test.ts +0 -95
- package/src/domains/graphql/operations/compileSchema.ts +0 -107
- package/src/domains/graphql/operations/createSchemaServer.test.ts +0 -50
- package/src/domains/graphql/operations/createSchemaServer.ts +0 -75
- package/src/domains/graphql/operations/index.ts +0 -12
- package/src/domains/graphql/types.ts +0 -29
- package/src/domains/info/commands/index.ts +0 -4
- package/src/domains/info/commands/info.test.ts +0 -88
- package/src/domains/info/commands/info.ts +0 -47
- package/src/domains/info/commands/upgrade.test.ts +0 -183
- package/src/domains/info/commands/upgrade.ts +0 -153
- package/src/domains/info/constants.test.ts +0 -22
- package/src/domains/info/constants.ts +0 -15
- package/src/domains/info/formatters/index.ts +0 -8
- package/src/domains/info/formatters/info.test.ts +0 -207
- package/src/domains/info/formatters/info.ts +0 -131
- package/src/domains/info/formatters/upgrade.test.ts +0 -133
- package/src/domains/info/formatters/upgrade.ts +0 -68
- package/src/domains/info/index.ts +0 -9
- package/src/domains/info/mcp/index.ts +0 -2
- package/src/domains/info/mcp/specs.ts +0 -65
- package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
- package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
- package/src/domains/info/operations/collectInfo.test.ts +0 -122
- package/src/domains/info/operations/collectInfo.ts +0 -94
- package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
- package/src/domains/info/operations/collectStoreSummary.ts +0 -42
- package/src/domains/info/operations/index.ts +0 -5
- package/src/domains/info/types.test-d.ts +0 -35
- package/src/domains/info/types.ts +0 -54
- package/src/domains/llm/capabilities.test.ts +0 -91
- package/src/domains/llm/commands/capabilities.ts +0 -28
- package/src/domains/llm/commands/index.ts +0 -4
- package/src/domains/llm/commands/llm.ts +0 -37
- package/src/domains/llm/data/commandReference.ts +0 -97
- package/src/domains/llm/data/decisionTrees.ts +0 -50
- package/src/domains/llm/data/index.ts +0 -6
- package/src/domains/llm/data/toolCatalog.ts +0 -190
- package/src/domains/llm/formatters/capabilities.ts +0 -50
- package/src/domains/llm/formatters/index.ts +0 -4
- package/src/domains/llm/formatters/orientation.ts +0 -53
- package/src/domains/llm/index.ts +0 -9
- package/src/domains/llm/llmCommand.test.ts +0 -93
- package/src/domains/llm/mcp/index.ts +0 -2
- package/src/domains/llm/mcp/specs.ts +0 -94
- package/src/domains/llm/operations/collectContext.ts +0 -47
- package/src/domains/llm/operations/index.ts +0 -3
- package/src/domains/llm/types.ts +0 -72
- package/src/domains/modifier/commands/index.ts +0 -5
- package/src/domains/modifier/commands/list.test.ts +0 -57
- package/src/domains/modifier/commands/list.ts +0 -9
- package/src/domains/modifier/commands/lookup.test.ts +0 -91
- package/src/domains/modifier/commands/lookup.ts +0 -14
- package/src/domains/modifier/commands/sample.ts +0 -53
- package/src/domains/modifier/formatters/index.ts +0 -8
- package/src/domains/modifier/formatters/list.test.ts +0 -38
- package/src/domains/modifier/formatters/list.ts +0 -22
- package/src/domains/modifier/formatters/lookup.test.ts +0 -33
- package/src/domains/modifier/formatters/lookup.ts +0 -50
- package/src/domains/modifier/formatters/sample.ts +0 -15
- package/src/domains/modifier/index.ts +0 -27
- package/src/domains/modifier/mcp/index.ts +0 -2
- package/src/domains/modifier/mcp/specs.ts +0 -65
- package/src/domains/modifier/modifierConfig.ts +0 -36
- package/src/domains/modifier/operations/index.ts +0 -5
- package/src/domains/modifier/operations/list.test.ts +0 -39
- package/src/domains/modifier/operations/list.ts +0 -41
- package/src/domains/modifier/operations/lookup.test.ts +0 -37
- package/src/domains/modifier/operations/lookup.ts +0 -67
- package/src/domains/modifier/operations/sample.ts +0 -32
- package/src/domains/modifier/orchestration/index.ts +0 -3
- package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
- package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
- package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
- package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
- package/src/domains/modifier/stories.test.ts +0 -20
- package/src/domains/modifier/stories.ts +0 -77
- package/src/domains/modifier/types.ts +0 -5
- package/src/domains/ontology/commands/index.ts +0 -4
- package/src/domains/ontology/commands/list.test.ts +0 -82
- package/src/domains/ontology/commands/list.ts +0 -11
- package/src/domains/ontology/commands/show.test.ts +0 -103
- package/src/domains/ontology/commands/show.ts +0 -14
- package/src/domains/ontology/formatters/index.ts +0 -4
- package/src/domains/ontology/formatters/list.ts +0 -39
- package/src/domains/ontology/formatters/show.ts +0 -105
- package/src/domains/ontology/helpers/findNamespace.ts +0 -23
- package/src/domains/ontology/helpers/index.ts +0 -7
- package/src/domains/ontology/helpers/queryClasses.ts +0 -50
- package/src/domains/ontology/helpers/queryProperties.ts +0 -57
- package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
- package/src/domains/ontology/index.ts +0 -26
- package/src/domains/ontology/mcp/index.ts +0 -2
- package/src/domains/ontology/mcp/specs.ts +0 -16
- package/src/domains/ontology/operations/index.ts +0 -5
- package/src/domains/ontology/operations/listOntologies.test.ts +0 -45
- package/src/domains/ontology/operations/listOntologies.ts +0 -101
- package/src/domains/ontology/operations/showOntology.test.ts +0 -65
- package/src/domains/ontology/operations/showOntology.ts +0 -41
- package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -39
- package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
- package/src/domains/ontology/stories.test.ts +0 -36
- package/src/domains/ontology/stories.ts +0 -108
- package/src/domains/refs/commands/updateRefs.ts +0 -52
- package/src/domains/refs/formatters/updateRefs.ts +0 -27
- package/src/domains/refs/index.ts +0 -27
- package/src/domains/refs/operations/gitOps.test.ts +0 -155
- package/src/domains/refs/operations/gitOps.ts +0 -92
- package/src/domains/refs/operations/index.ts +0 -10
- package/src/domains/refs/operations/parseRef.test.ts +0 -157
- package/src/domains/refs/operations/parseRef.ts +0 -114
- package/src/domains/refs/operations/paths.test.ts +0 -98
- package/src/domains/refs/operations/paths.ts +0 -91
- package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
- package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
- package/src/domains/refs/operations/updateRefs.test.ts +0 -167
- package/src/domains/refs/operations/updateRefs.ts +0 -181
- package/src/domains/setup/commands/all.ts +0 -58
- package/src/domains/setup/commands/completions.ts +0 -85
- package/src/domains/setup/commands/entrypoints.test.ts +0 -170
- package/src/domains/setup/commands/index.ts +0 -6
- package/src/domains/setup/commands/lsp.ts +0 -49
- package/src/domains/setup/commands/mcp.ts +0 -119
- package/src/domains/setup/commands/skills.test.ts +0 -68
- package/src/domains/setup/commands/skills.ts +0 -110
- package/src/domains/setup/formatters/index.ts +0 -2
- package/src/domains/setup/formatters/skills.test.ts +0 -103
- package/src/domains/setup/formatters/skills.ts +0 -112
- package/src/domains/setup/formatters/types.ts +0 -7
- package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
- package/src/domains/setup/helpers/completionScripts.ts +0 -92
- package/src/domains/setup/helpers/constants.ts +0 -2
- package/src/domains/setup/helpers/detectShell.test.ts +0 -48
- package/src/domains/setup/helpers/detectShell.ts +0 -20
- package/src/domains/setup/helpers/index.ts +0 -12
- package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
- package/src/domains/setup/helpers/runSetupTask.ts +0 -221
- package/src/domains/setup/index.ts +0 -33
- package/src/domains/setup/operations/index.ts +0 -6
- package/src/domains/setup/operations/setupAll.test.ts +0 -48
- package/src/domains/setup/operations/setupAll.ts +0 -41
- package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
- package/src/domains/setup/operations/setupCompletions.ts +0 -54
- package/src/domains/setup/operations/setupLsp.test.ts +0 -29
- package/src/domains/setup/operations/setupLsp.ts +0 -17
- package/src/domains/setup/operations/setupMcp.test.ts +0 -120
- package/src/domains/setup/operations/setupMcp.ts +0 -108
- package/src/domains/setup/operations/setupSkills.test.ts +0 -191
- package/src/domains/setup/operations/setupSkills.ts +0 -160
- package/src/domains/setup/types.ts +0 -18
- package/src/domains/shared/ToolSpec.ts +0 -49
- package/src/domains/shared/bootStore.ts +0 -135
- package/src/domains/shared/buildQuery.ts +0 -18
- package/src/domains/shared/compactUri.test.ts +0 -32
- package/src/domains/shared/compactUri.ts +0 -21
- package/src/domains/shared/context.ts +0 -16
- package/src/domains/shared/contracts.ts +0 -164
- package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
- package/src/domains/shared/createInteractivePromptSession.ts +0 -236
- package/src/domains/shared/emptyErrorRecovery.test.ts +0 -109
- package/src/domains/shared/extractLocalName.test.ts +0 -21
- package/src/domains/shared/extractLocalName.ts +0 -14
- package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
- package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
- package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
- package/src/domains/shared/filters/buildFilters.test.ts +0 -33
- package/src/domains/shared/filters/buildFilters.ts +0 -30
- package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
- package/src/domains/shared/filters/buildTierFilter.ts +0 -69
- package/src/domains/shared/filters/describeFilters.ts +0 -14
- package/src/domains/shared/filters/index.ts +0 -10
- package/src/domains/shared/formatters.ts +0 -82
- package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
- package/src/domains/shared/loaders/bundledLoader.ts +0 -206
- package/src/domains/shared/loaders/gitLoader.ts +0 -31
- package/src/domains/shared/loaders/index.ts +0 -9
- package/src/domains/shared/loaders/localLoader.ts +0 -87
- package/src/domains/shared/loaders/readPackageDir.ts +0 -147
- package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
- package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
- package/src/domains/shared/lookupMany.test.ts +0 -120
- package/src/domains/shared/lookupMany.ts +0 -85
- package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
- package/src/domains/shared/mergeAndParseRefs.ts +0 -44
- package/src/domains/shared/namespaces.ts +0 -18
- package/src/domains/shared/packages.ts +0 -20
- package/src/domains/shared/pickRandom.ts +0 -22
- package/src/domains/shared/prefixes.ts +0 -37
- package/src/domains/shared/renderers.ts +0 -410
- package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
- package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
- package/src/domains/shared/runtime.ts +0 -61
- package/src/domains/shared/sampleFormatters.ts +0 -47
- package/src/domains/shared/semanticPackage.ts +0 -112
- package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
- package/src/domains/shared/stories/compileLookupCommand.ts +0 -100
- package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
- package/src/domains/shared/stories/compileLookupTool.ts +0 -96
- package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
- package/src/domains/shared/stories/compileReadCommand.ts +0 -48
- package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
- package/src/domains/shared/stories/compileReadTool.ts +0 -38
- package/src/domains/shared/stories/condense.test.ts +0 -18
- package/src/domains/shared/stories/condense.ts +0 -15
- package/src/domains/shared/stories/index.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.ts +0 -22
- package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -102
- package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -76
- package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -51
- package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -80
- package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -108
- package/src/domains/shared/stories/pack/collectPackStories.ts +0 -76
- package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -40
- package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -146
- package/src/domains/shared/stories/pack/compilePackStories.ts +0 -253
- package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -43
- package/src/domains/shared/stories/pack/index.ts +0 -28
- package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
- package/src/domains/shared/stories/pack/standardParity.test.ts +0 -308
- package/src/domains/shared/stories/pack/types.ts +0 -104
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -240
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -408
- package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
- package/src/domains/shared/stories/projectCliParameters.ts +0 -57
- package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
- package/src/domains/shared/stories/projectToolParams.ts +0 -32
- package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
- package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
- package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
- package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
- package/src/domains/shared/stories/types.ts +0 -171
- package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
- package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
- package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
- package/src/domains/shared/suggestions/expandGlob.ts +0 -52
- package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
- package/src/domains/shared/suggestions/index.ts +0 -7
- package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
- package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
- package/src/domains/shared/suggestions/suggestNames.ts +0 -130
- package/src/domains/shared/types/block.ts +0 -107
- package/src/domains/shared/types/common.ts +0 -33
- package/src/domains/shared/types/graph.ts +0 -17
- package/src/domains/shared/types/index.ts +0 -50
- package/src/domains/shared/types/modifier.ts +0 -22
- package/src/domains/shared/types/ontology.ts +0 -50
- package/src/domains/shared/types/runtime.ts +0 -24
- package/src/domains/shared/types/sample.ts +0 -17
- package/src/domains/shared/types/standard.ts +0 -64
- package/src/domains/shared/types/tier.ts +0 -15
- package/src/domains/shared/types/token.ts +0 -30
- package/src/domains/skill/commands/index.ts +0 -4
- package/src/domains/skill/commands/list.test.ts +0 -115
- package/src/domains/skill/commands/list.ts +0 -11
- package/src/domains/skill/commands/lookup.test.ts +0 -118
- package/src/domains/skill/commands/lookup.ts +0 -14
- package/src/domains/skill/formatters/index.ts +0 -3
- package/src/domains/skill/formatters/list.test.ts +0 -140
- package/src/domains/skill/formatters/list.ts +0 -119
- package/src/domains/skill/formatters/lookup.test.ts +0 -46
- package/src/domains/skill/formatters/lookup.ts +0 -57
- package/src/domains/skill/formatters/types.ts +0 -8
- package/src/domains/skill/helpers/index.ts +0 -6
- package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
- package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
- package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
- package/src/domains/skill/index.ts +0 -23
- package/src/domains/skill/mcp/index.ts +0 -2
- package/src/domains/skill/mcp/specs.ts +0 -19
- package/src/domains/skill/operations/discover.test.ts +0 -176
- package/src/domains/skill/operations/discover.ts +0 -59
- package/src/domains/skill/operations/index.ts +0 -5
- package/src/domains/skill/operations/list.test.ts +0 -76
- package/src/domains/skill/operations/list.ts +0 -47
- package/src/domains/skill/operations/lookup.test.ts +0 -91
- package/src/domains/skill/operations/lookup.ts +0 -70
- package/src/domains/skill/stories.test.ts +0 -43
- package/src/domains/skill/stories.ts +0 -103
- package/src/domains/skill/types.ts +0 -33
- package/src/domains/standard/commands/categories.test.ts +0 -70
- package/src/domains/standard/commands/categories.ts +0 -48
- package/src/domains/standard/commands/index.ts +0 -6
- package/src/domains/standard/commands/list.test.ts +0 -105
- package/src/domains/standard/commands/list.ts +0 -11
- package/src/domains/standard/commands/lookup.test.ts +0 -135
- package/src/domains/standard/commands/lookup.ts +0 -14
- package/src/domains/standard/commands/sample.ts +0 -57
- package/src/domains/standard/formatters/categories.test.ts +0 -44
- package/src/domains/standard/formatters/categories.ts +0 -38
- package/src/domains/standard/formatters/index.ts +0 -10
- package/src/domains/standard/formatters/list.test.ts +0 -169
- package/src/domains/standard/formatters/list.ts +0 -184
- package/src/domains/standard/formatters/lookup.test.ts +0 -95
- package/src/domains/standard/formatters/lookup.ts +0 -101
- package/src/domains/standard/formatters/sample.ts +0 -15
- package/src/domains/standard/formatters/types.ts +0 -31
- package/src/domains/standard/index.ts +0 -40
- package/src/domains/standard/mcp/index.ts +0 -2
- package/src/domains/standard/mcp/specs.ts +0 -89
- package/src/domains/standard/operations/categories.test.ts +0 -61
- package/src/domains/standard/operations/categories.ts +0 -38
- package/src/domains/standard/operations/index.ts +0 -6
- package/src/domains/standard/operations/list.test.ts +0 -75
- package/src/domains/standard/operations/list.ts +0 -64
- package/src/domains/standard/operations/lookup.test.ts +0 -58
- package/src/domains/standard/operations/lookup.ts +0 -151
- package/src/domains/standard/operations/sample.ts +0 -35
- package/src/domains/standard/orchestration/buildStandardFilters.ts +0 -11
- package/src/domains/standard/orchestration/index.ts +0 -4
- package/src/domains/standard/orchestration/resolveStandardList.ts +0 -45
- package/src/domains/standard/orchestration/resolveStandardLookup.ts +0 -33
- package/src/domains/standard/orchestration/standardEmptyError.test.ts +0 -33
- package/src/domains/standard/orchestration/standardEmptyError.ts +0 -29
- package/src/domains/standard/standardConfig.ts +0 -42
- package/src/domains/standard/stories.test.ts +0 -24
- package/src/domains/standard/stories.ts +0 -151
- package/src/domains/standard/types.ts +0 -15
- package/src/domains/tier/commands/index.ts +0 -3
- package/src/domains/tier/commands/list.test.ts +0 -67
- package/src/domains/tier/commands/list.ts +0 -9
- package/src/domains/tier/formatters/index.ts +0 -3
- package/src/domains/tier/formatters/list.test.ts +0 -33
- package/src/domains/tier/formatters/list.ts +0 -45
- package/src/domains/tier/index.ts +0 -17
- package/src/domains/tier/mcp/index.ts +0 -2
- package/src/domains/tier/mcp/specs.ts +0 -12
- package/src/domains/tier/operations/index.ts +0 -3
- package/src/domains/tier/operations/list.test.ts +0 -32
- package/src/domains/tier/operations/list.ts +0 -33
- package/src/domains/tier/stories.test.ts +0 -22
- package/src/domains/tier/stories.ts +0 -52
- package/src/domains/token/commands/add-config.test.ts +0 -68
- package/src/domains/token/commands/add-config.ts +0 -62
- package/src/domains/token/commands/index.ts +0 -6
- package/src/domains/token/commands/list.test.ts +0 -82
- package/src/domains/token/commands/list.ts +0 -54
- package/src/domains/token/commands/lookup.test.ts +0 -125
- package/src/domains/token/commands/lookup.ts +0 -95
- package/src/domains/token/commands/sample.ts +0 -53
- package/src/domains/token/formatters/index.ts +0 -8
- package/src/domains/token/formatters/list.test.ts +0 -37
- package/src/domains/token/formatters/list.ts +0 -24
- package/src/domains/token/formatters/lookup.test.ts +0 -61
- package/src/domains/token/formatters/lookup.ts +0 -107
- package/src/domains/token/formatters/sample.ts +0 -16
- package/src/domains/token/index.ts +0 -40
- package/src/domains/token/mcp/index.ts +0 -2
- package/src/domains/token/mcp/specs.ts +0 -195
- package/src/domains/token/operations/add-config.test.ts +0 -68
- package/src/domains/token/operations/add-config.ts +0 -61
- package/src/domains/token/operations/index.ts +0 -8
- package/src/domains/token/operations/list.test.ts +0 -50
- package/src/domains/token/operations/list.ts +0 -52
- package/src/domains/token/operations/lookup.test.ts +0 -42
- package/src/domains/token/operations/lookup.ts +0 -75
- package/src/domains/token/operations/sample.ts +0 -32
- package/src/domains/token/orchestration/index.ts +0 -3
- package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
- package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
- package/src/domains/token/tokenConfig.ts +0 -38
- package/src/domains/token/types.ts +0 -6
- package/src/domains/trace/commands/clear.ts +0 -71
- package/src/domains/trace/commands/index.ts +0 -5
- package/src/domains/trace/commands/sessions.ts +0 -32
- package/src/domains/trace/commands/show.ts +0 -145
- package/src/domains/trace/formatters/index.ts +0 -9
- package/src/domains/trace/formatters/sessions.ts +0 -80
- package/src/domains/trace/formatters/show.ts +0 -122
- package/src/domains/trace/index.ts +0 -17
- package/src/domains/trace/operations/index.ts +0 -8
- package/src/domains/trace/operations/listSessions.test.ts +0 -55
- package/src/domains/trace/operations/listSessions.ts +0 -52
- package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
- package/src/domains/trace/operations/readTraceLog.ts +0 -104
- package/src/domains/trace/tracePlugin.test.ts +0 -171
- package/src/domains/trace/tracePlugin.ts +0 -159
- package/src/domains/trace/types.ts +0 -65
- package/src/embedWasm.ts +0 -42
- package/src/error/PragmaError.test.ts +0 -121
- package/src/error/PragmaError.ts +0 -177
- package/src/error/constants.ts +0 -12
- package/src/error/index.ts +0 -4
- package/src/error/types.ts +0 -55
- package/src/mcp/createMcpServer.test.ts +0 -41
- package/src/mcp/createMcpServer.ts +0 -53
- package/src/mcp/error/buildRecovery.test.ts +0 -37
- package/src/mcp/error/buildRecovery.ts +0 -17
- package/src/mcp/error/index.ts +0 -12
- package/src/mcp/error/serializeError.test.ts +0 -121
- package/src/mcp/error/serializeError.ts +0 -31
- package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
- package/src/mcp/error/serializeErrorPayload.ts +0 -34
- package/src/mcp/error/types.ts +0 -59
- package/src/mcp/index.ts +0 -15
- package/src/mcp/registerResources.test.ts +0 -566
- package/src/mcp/registerResources.ts +0 -9
- package/src/mcp/resources/buildGraphIndex.ts +0 -167
- package/src/mcp/resources/buildResourceList.test.ts +0 -97
- package/src/mcp/resources/buildResourceList.ts +0 -176
- package/src/mcp/resources/classifyEntity.test.ts +0 -40
- package/src/mcp/resources/classifyEntity.ts +0 -27
- package/src/mcp/resources/constants.ts +0 -105
- package/src/mcp/resources/displayPredicates.ts +0 -62
- package/src/mcp/resources/pickFirstValue.test.ts +0 -29
- package/src/mcp/resources/pickFirstValue.ts +0 -26
- package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
- package/src/mcp/resources/pickPrimaryType.ts +0 -26
- package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
- package/src/mcp/resources/rankUriCompletions.ts +0 -64
- package/src/mcp/resources/readEntity.ts +0 -169
- package/src/mcp/resources/registerResources.ts +0 -126
- package/src/mcp/resources/types.ts +0 -128
- package/src/mcp/runMcpServer.test.ts +0 -66
- package/src/mcp/runMcpServer.ts +0 -24
- package/src/mcp/tools/index.ts +0 -66
- package/src/mcp/tools/registerFromSpec.ts +0 -97
- package/src/mcp/tools/registerTools.test.ts +0 -1201
- package/src/mcp/types.ts +0 -66
- package/src/mcp/utils/estimateTokens.test.ts +0 -14
- package/src/mcp/utils/estimateTokens.ts +0 -9
- package/src/mcp/utils/index.ts +0 -11
- package/src/mcp/utils/wrapTool.test.ts +0 -109
- package/src/mcp/utils/wrapTool.ts +0 -81
- package/src/package-manager/constants.ts +0 -29
- package/src/package-manager/detectInstallSource.test.ts +0 -23
- package/src/package-manager/detectInstallSource.ts +0 -111
- package/src/package-manager/detectLocalInstall.test.ts +0 -16
- package/src/package-manager/detectLocalInstall.ts +0 -43
- package/src/package-manager/detectPackageManager.test.ts +0 -81
- package/src/package-manager/detectPackageManager.ts +0 -30
- package/src/package-manager/index.ts +0 -6
- package/src/package-manager/types.ts +0 -10
- package/src/pipeline/collectCommands.test.ts +0 -37
- package/src/pipeline/collectCommands.ts +0 -60
- package/src/pipeline/constants.ts +0 -14
- package/src/pipeline/createProgram.test.ts +0 -112
- package/src/pipeline/createProgram.ts +0 -89
- package/src/pipeline/formatTerminal.test.ts +0 -43
- package/src/pipeline/formatTerminal.ts +0 -53
- package/src/pipeline/index.ts +0 -22
- package/src/pipeline/mapExitCode.test.ts +0 -41
- package/src/pipeline/mapExitCode.ts +0 -12
- package/src/pipeline/parseGlobalFlags.test.ts +0 -92
- package/src/pipeline/parseGlobalFlags.ts +0 -46
- package/src/pipeline/renderError.test.ts +0 -151
- package/src/pipeline/renderError.ts +0 -129
- package/src/pipeline/resolveCommandKind.test.ts +0 -68
- package/src/pipeline/resolveCommandKind.ts +0 -78
- package/src/pipeline/runCli.orchestration.test.ts +0 -419
- package/src/pipeline/runCli.test.ts +0 -70
- package/src/pipeline/runCli.ts +0 -268
- package/src/pipeline/types.ts +0 -17
- package/src/testing/cli.ts +0 -43
- package/src/testing/createTestMcpClient.ts +0 -68
- package/src/testing/dsFixtures.ts +0 -506
- package/src/testing/fixtures/canonical-config.json +0 -4
- package/src/testing/fixtures/canonical.ttl +0 -437
- package/src/testing/fixtures/filtered-config.json +0 -4
- package/src/testing/fixtures.ts +0 -34
- package/src/testing/graphqlFixtures.ts +0 -72
- package/src/testing/helpers/assertParity.ts +0 -28
- package/src/testing/helpers/createTestMcpClient.ts +0 -40
- package/src/testing/helpers/createTestRuntime.ts +0 -67
- package/src/testing/index.ts +0 -25
- package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
- package/src/testing/integration/agent-session.test.ts +0 -148
- package/src/testing/integration/boot.test.ts +0 -105
- package/src/testing/integration/cli-user-stories.test.ts +0 -198
- package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
- package/src/testing/integration/edge-cases.test.ts +0 -263
- package/src/testing/integration/executor-execution.test.ts +0 -101
- package/src/testing/integration/executor-golden.test.ts +0 -145
- package/src/testing/integration/mcp-surface.test.ts +0 -580
- package/src/testing/integration/parity.test.ts +0 -547
- package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
- package/src/testing/standardParityFixtures.ts +0 -92
- package/src/testing/store.ts +0 -39
- package/src/testing/storyFixtures.ts +0 -63
- package/src/testing/types.ts +0 -20
- package/src/tui/components/BulletList/BulletList.tsx +0 -46
- package/src/tui/components/BulletList/index.ts +0 -2
- package/src/tui/components/BulletList/types.ts +0 -6
- package/src/tui/components/Card/Card.tsx +0 -73
- package/src/tui/components/Card/index.ts +0 -1
- package/src/tui/components/Card/types.ts +0 -12
- package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
- package/src/tui/components/CodeBlock/index.ts +0 -2
- package/src/tui/components/CodeBlock/types.ts +0 -6
- package/src/tui/components/DataRow/DataRow.tsx +0 -80
- package/src/tui/components/DataRow/index.ts +0 -2
- package/src/tui/components/DataRow/types.ts +0 -14
- package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
- package/src/tui/components/FieldRow/index.ts +0 -2
- package/src/tui/components/FieldRow/types.ts +0 -10
- package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
- package/src/tui/components/HeaderRow/index.ts +0 -2
- package/src/tui/components/HeaderRow/types.ts +0 -8
- package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
- package/src/tui/components/MarkdownText/index.ts +0 -2
- package/src/tui/components/MarkdownText/types.ts +0 -4
- package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
- package/src/tui/components/MiniTable/index.ts +0 -2
- package/src/tui/components/MiniTable/types.ts +0 -6
- package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
- package/src/tui/components/SectionRenderer/index.ts +0 -2
- package/src/tui/components/SectionRenderer/types.ts +0 -15
- package/src/tui/components/TreeView/TreeView.tsx +0 -84
- package/src/tui/components/TreeView/index.ts +0 -2
- package/src/tui/components/TreeView/types.ts +0 -6
- package/src/tui/components/index.ts +0 -19
- package/src/tui/constants.ts +0 -39
- package/src/tui/createListView.ts +0 -23
- package/src/tui/createLookupView.ts +0 -26
- package/src/tui/helpers/computeWidths.ts +0 -53
- package/src/tui/helpers/fitColumns.ts +0 -33
- package/src/tui/helpers/formatMarkdown.ts +0 -19
- package/src/tui/helpers/getTerminalSize.ts +0 -16
- package/src/tui/helpers/index.ts +0 -6
- package/src/tui/helpers/syntaxColor.ts +0 -67
- package/src/tui/helpers/truncateText.ts +0 -12
- package/src/tui/hooks/index.ts +0 -3
- package/src/tui/hooks/types.ts +0 -7
- package/src/tui/hooks/useAutoExit.ts +0 -17
- package/src/tui/hooks/useTerminalSize.ts +0 -19
- package/src/tui/index.ts +0 -15
- package/src/tui/renderInk.tsx +0 -18
- package/src/tui/types.ts +0 -12
- package/src/tui/views/ListView/ListView.tsx +0 -104
- package/src/tui/views/ListView/index.ts +0 -2
- package/src/tui/views/ListView/types.ts +0 -14
- package/src/tui/views/LookupView/LookupView.tsx +0 -244
- package/src/tui/views/LookupView/index.ts +0 -2
- package/src/tui/views/LookupView/types.ts +0 -16
- 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 Installing Terrazzo LSP extension for VS Code...
|
|
1186
|
-
├─ Execute bunx @canonical/terrazzo-lsp-extension
|
|
1187
|
-
└─ Info ✓ Terrazzo LSP extension installed.
|
|
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": "Installing Terrazzo LSP extension for VS Code..."
|
|
1197
|
-
},
|
|
1198
|
-
{
|
|
1199
|
-
"action": "Exec"
|
|
1200
|
-
},
|
|
1201
|
-
{
|
|
1202
|
-
"action": "Log",
|
|
1203
|
-
"message": "✓ Terrazzo LSP extension installed."
|
|
1204
|
-
}
|
|
1205
|
-
]
|
|
1206
|
-
"
|
|
1207
|
-
`;
|