@canonical/pragma-cli 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/package.json +22 -19
  2. package/dist/pragma.conf.js +35 -5
  3. package/dist/pragma.conf.js.map +1 -1
  4. package/dist/src/capabilities/capabilities/hints.js +1 -1
  5. package/dist/src/capabilities/capabilities/hints.js.map +1 -1
  6. package/dist/src/capabilities/create/create.verb.js +2 -1
  7. package/dist/src/capabilities/create/create.verb.js.map +1 -1
  8. package/dist/src/capabilities/create/createSurface.generated.js +23 -1
  9. package/dist/src/capabilities/create/createSurface.generated.js.map +1 -1
  10. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +11 -6
  11. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -1
  12. package/dist/src/capabilities/doctor/checks/isSupportedNodeVersion.js +38 -0
  13. package/dist/src/capabilities/doctor/checks/isSupportedNodeVersion.js.map +1 -0
  14. package/dist/src/capabilities/setup/operations/setupCompletions.js +6 -2
  15. package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -1
  16. package/dist/src/capabilities/setup/operations/setupConfig.js +4 -2
  17. package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -1
  18. package/dist/src/capabilities/setup/operations/setupGenerator.js +64 -13
  19. package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -1
  20. package/dist/src/capabilities/setup/operations/setupLsp.js +59 -13
  21. package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -1
  22. package/dist/src/capabilities/setup/operations/setupMcp.js +4 -1
  23. package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -1
  24. package/dist/src/capabilities/setup/operations/setupSkills.js +4 -2
  25. package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -1
  26. package/dist/src/capabilities/setup/setup.verb.js +79 -30
  27. package/dist/src/capabilities/setup/setup.verb.js.map +1 -1
  28. package/dist/src/capabilities/setup/targets.js +12 -6
  29. package/dist/src/capabilities/setup/targets.js.map +1 -1
  30. package/dist/src/capabilities/shared/index.js +1 -1
  31. package/dist/src/capabilities/shared/index.js.map +1 -1
  32. package/dist/src/constants.js +7 -1
  33. package/dist/src/constants.js.map +1 -1
  34. package/dist/src/kernel/packs/sparql/buildLookupQuery.js +11 -7
  35. package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -1
  36. package/dist/src/kernel/project/cli/dispatch.js +23 -1
  37. package/dist/src/kernel/project/cli/dispatch.js.map +1 -1
  38. package/dist/src/kernel/project/cli/rootHelp.js +8 -5
  39. package/dist/src/kernel/project/cli/rootHelp.js.map +1 -1
  40. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +2 -3
  41. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -1
  42. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +1 -1
  43. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -1
  44. package/dist/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.js +4 -0
  45. package/dist/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.js.map +1 -0
  46. package/dist/src/kernel/runtime/graphpack/embedded.js +13 -6
  47. package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -1
  48. package/dist/src/kernel/runtime/graphpack/read.js +14 -9
  49. package/dist/src/kernel/runtime/graphpack/read.js.map +1 -1
  50. package/dist/src/kernel/runtime/loadSession.js +3 -1
  51. package/dist/src/kernel/runtime/loadSession.js.map +1 -1
  52. package/dist/src/kernel/runtime/probe.js +1 -1
  53. package/dist/src/kernel/runtime/probe.js.map +1 -1
  54. package/dist/src/kernel/runtime/refs/parseRef.js +17 -1
  55. package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -1
  56. package/dist/src/kernel/runtime/refs/resolve.js +9 -3
  57. package/dist/src/kernel/runtime/refs/resolve.js.map +1 -1
  58. package/package.json +22 -19
  59. package/pragma.conf.ts +36 -5
  60. package/src/capabilities/capabilities/hints.ts +1 -1
  61. package/src/capabilities/config/collectConfigShow.test.ts +1 -0
  62. package/src/capabilities/create/byteEquality.test.ts +28 -1
  63. package/src/capabilities/create/create.test.ts +1 -0
  64. package/src/capabilities/create/create.verb.ts +2 -1
  65. package/src/capabilities/create/createGrammar.test.ts +4 -1
  66. package/src/capabilities/create/createSurface.generated.ts +23 -1
  67. package/src/capabilities/create/crossCli.subprocess.test.ts +10 -3
  68. package/src/capabilities/doctor/checks/checkNodeVersion.test.ts +49 -0
  69. package/src/capabilities/doctor/checks/checkNodeVersion.ts +11 -7
  70. package/src/capabilities/doctor/checks/isSupportedNodeVersion.test.ts +111 -0
  71. package/src/capabilities/doctor/checks/isSupportedNodeVersion.ts +34 -0
  72. package/src/capabilities/doctor/checks/mcpCommand.test.ts +7 -1
  73. package/src/capabilities/lazy.test.ts +26 -2
  74. package/src/capabilities/listLookup.shipped.exec.test.ts +340 -0
  75. package/src/capabilities/resources/resources.test.ts +38 -2
  76. package/src/capabilities/setup/operations/setupCompletions.ts +9 -2
  77. package/src/capabilities/setup/operations/setupConfig.ts +7 -2
  78. package/src/capabilities/setup/operations/setupGenerator.ts +83 -14
  79. package/src/capabilities/setup/operations/setupLsp.ts +95 -22
  80. package/src/capabilities/setup/operations/setupMcp.ts +7 -1
  81. package/src/capabilities/setup/operations/setupSkills.ts +7 -2
  82. package/src/capabilities/setup/setup.test.ts +247 -2
  83. package/src/capabilities/setup/setup.verb.ts +83 -35
  84. package/src/capabilities/setup/targets.ts +18 -8
  85. package/src/capabilities/shared/index.ts +1 -0
  86. package/src/capabilities/surface.test.ts +12 -4
  87. package/src/constants.ts +8 -0
  88. package/src/kernel/config/defaults.test.ts +17 -2
  89. package/src/kernel/config/readConfig.test.ts +1 -1
  90. package/src/kernel/packs/sparql/buildLookupQuery.ts +11 -7
  91. package/src/kernel/project/cli/dispatch.ts +23 -1
  92. package/src/kernel/project/cli/rootHelp.ts +8 -5
  93. package/src/kernel/render/prefixes.test.ts +2 -0
  94. package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +2 -3
  95. package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
  96. package/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.ts +3 -0
  97. package/src/kernel/runtime/graphpack/embedded.ts +14 -6
  98. package/src/kernel/runtime/graphpack/graphpack.test.ts +31 -5
  99. package/src/kernel/runtime/graphpack/read.ts +14 -12
  100. package/src/kernel/runtime/loadSession.ts +3 -1
  101. package/src/kernel/runtime/probe.ts +1 -1
  102. package/src/kernel/runtime/refs/parseRef.test.ts +49 -1
  103. package/src/kernel/runtime/refs/parseRef.ts +25 -1
  104. package/src/kernel/runtime/refs/resolve.ts +9 -3
  105. package/src/kernel/runtime/types.ts +17 -0
  106. package/src/testing/helpers/runCli.test.ts +44 -0
  107. package/src/testing/helpers/runCli.ts +27 -3
@@ -1 +1 @@
1
- {"version":3,"file":"pack.index.generated.js","sourceRoot":"","sources":["../../../../../../src/kernel/runtime/graphpack/embedded/pack.index.generated.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,ot9OAAot9O,CAAC"}
1
+ {"version":3,"file":"pack.index.generated.js","sourceRoot":"","sources":["../../../../../../src/kernel/runtime/graphpack/embedded/pack.index.generated.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,8y8kCAA8y8kC,CAAC"}
@@ -0,0 +1,4 @@
1
+ // AUTO-GENERATED by scripts/bundle.ts — do not edit by hand.
2
+ // Regenerate from the packs pragma.conf.ts declares: `bun run bundle`.
3
+ export const manifestJson = "{\"name\":\"pragma\",\"version\":\"0.36.0\",\"sourceRef\":\"@canonical/design-system@git:ce00818852628857da9c4a67bf8556c7cfda287d, @canonical/anatomy-dsl@npm:0.3.0, @canonical/token-ontology@npm:0.8.1, @canonical/code-standards@git:fcd3ac2dea458775e5b79344b3237a3fcb37add9, @canonical/ds-implementations@self:v0.36.0\",\"contentHash\":\"7ff2bbd5fd059584ad3285c7b1c7d59c734efef8006fb0bba726db03254392e8\",\"prefixes\":{\"rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"rdfs\":\"http://www.w3.org/2000/01/rdf-schema#\",\"owl\":\"http://www.w3.org/2002/07/owl#\",\"xsd\":\"http://www.w3.org/2001/XMLSchema#\",\"skos\":\"http://www.w3.org/2004/02/skos/core#\",\"sh\":\"http://www.w3.org/ns/shacl#\",\"dcterms\":\"http://purl.org/dc/terms/\",\"ds\":\"https://ds.canonical.com/\",\"anatomy\":\"http://anatomy-dsl.example.org/ontology#\",\"graphql\":\"https://pragma.canonical.com/graphql#\",\"w3c-tokens\":\"https://dt.canonical.com/w3c-tokens/\",\"dt\":\"https://dt.canonical.com/\",\"cs\":\"http://pragma.canonical.com/codestandards#\",\"dso\":\"https://ds.canonical.com/ontology#\"},\"createdAt\":\"2026-09-01T20:29:05.995Z\",\"tripleCount\":30346,\"entityCount\":2906}";
4
+ //# sourceMappingURL=pack.manifest.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.manifest.generated.js","sourceRoot":"","sources":["../../../../../../src/kernel/runtime/graphpack/embedded/pack.manifest.generated.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,uEAAuE;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG,wpCAAwpC,CAAC"}
@@ -18,18 +18,20 @@
18
18
  *
19
19
  * The inlined strings are materialized into the ordinary content-addressed pack
20
20
  * cache on first use and then read back through {@link readPack}, so the
21
- * embedded pack and a built pack share one boot path. The story records live in
22
- * their OWN generated module (like the index): dispatch reads them on every
23
- * command, and pulling them out of `pack.generated.ts` would load its ~1.9 MB
24
- * of n-quads with them — a measured +28 ms on every invocation. Inlining as JS strings
21
+ * embedded pack and a built pack share one boot path. The story records, the
22
+ * index and the MANIFEST each live in their own generated module: every one of
23
+ * them is read on a path that does not need the n-quads, and leaving any of
24
+ * them beside `pack.generated.ts` would load its ~2.1 MB with them — a measured
25
+ * +28 ms on every invocation for the stories, and ~370 ms per CLI invocation
26
+ * for the manifest at a 30,340-triple pack. Inlining as JS strings
25
27
  * (rather than file assets) means the pack travels with the emitted modules —
26
28
  * it needs no asset step in any build, and no file lookup at run time.
27
29
  */
28
30
  import { existsSync, mkdirSync, mkdtempSync, renameSync, rmSync, writeFileSync, } from "node:fs";
29
31
  import { join } from "node:path";
30
32
  import { packDir, packsCacheDir } from "../paths.js";
31
- import { dataNq, manifestJson, schemaJson } from "./embedded/pack.generated.js";
32
33
  import { indexJson } from "./embedded/pack.index.generated.js";
34
+ import { manifestJson } from "./embedded/pack.manifest.generated.js";
33
35
  import { storiesJson } from "./embedded/pack.stories.generated.js";
34
36
  import { packIsComplete } from "./manifest.js";
35
37
  import { manifestSchema } from "./schemas.js";
@@ -55,10 +57,15 @@ export function embeddedManifest() {
55
57
  * @returns The pack directory, ready for {@link readPack}.
56
58
  * @note Impure — writes the inlined pack files into the cache.
57
59
  */
58
- export function materializeEmbeddedPack() {
60
+ export async function materializeEmbeddedPack() {
59
61
  const dir = packDir(embeddedManifest().contentHash);
60
62
  if (packIsComplete(dir))
61
63
  return dir;
64
+ // Loaded HERE, not at module scope: this is the only branch that needs the
65
+ // payload, and it is the branch that does NOT run once the pack is cached.
66
+ // A static import would parse ~2.1 MB of inlined n-quads on every boot to
67
+ // reach a return statement six lines above.
68
+ const { dataNq, schemaJson } = await import("./embedded/pack.generated.js");
62
69
  mkdirSync(packsCacheDir(), { recursive: true });
63
70
  const temp = mkdtempSync(join(packsCacheDir(), ".embed-"));
64
71
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/graphpack/embedded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EAEb,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAEpC,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QACnD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;QACjD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC;QACrD,0CAA0C;QAC1C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/graphpack/embedded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EAEb,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAEpC,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAE5E,SAAS,CAAC,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;QACnD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;QACjD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC;QACrD,0CAA0C;QAC1C,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -65,14 +65,24 @@ export async function readPack(dir) {
65
65
  // "populated index but empty store" check (via the now-empty dump,
66
66
  // `packIsComplete` turns false so recovery rebuilds) rather than serving an
67
67
  // empty graph as the pack.
68
- const actualTriples = await countTriples(store);
68
+ // `store.size` is a field oxigraph maintains. The equivalent query —
69
+ // `SELECT (COUNT(*)) WHERE { ?s ?p ?o }`, which is what `build.ts` still runs
70
+ // to WRITE `tripleCount` — is a scan, and it ran on every boot to read a
71
+ // number the store already knew.
72
+ //
73
+ // The two agree: ke queries with `use_default_graph_as_union`, and oxigraph
74
+ // does not deduplicate across that union, so a quad count and the union's
75
+ // solution count are the same number even for a triple repeated across
76
+ // graphs. Verified against 0.5.6 rather than assumed — and the guard is `<`,
77
+ // which tolerates the direction a set-semantic union would drift.
78
+ const actualQuads = store.size;
69
79
  if (manifest.tripleCount !== undefined) {
70
- if (actualTriples < manifest.tripleCount) {
80
+ if (actualQuads < manifest.tripleCount) {
71
81
  store.dispose();
72
- throw packUnavailable(`The pack at ${dir} has a corrupt data cache (expected at least ${manifest.tripleCount} triples, loaded ${actualTriples}).`);
82
+ throw packUnavailable(`The pack at ${dir} has a corrupt data cache (expected at least ${manifest.tripleCount} triples, loaded ${actualQuads}).`);
73
83
  }
74
84
  }
75
- else if (index.entities.length > 0 && actualTriples === 0) {
85
+ else if (index.entities.length > 0 && actualQuads === 0) {
76
86
  store.dispose();
77
87
  throw packUnavailable(`The pack at ${dir} has a corrupt data cache.`);
78
88
  }
@@ -84,9 +94,4 @@ export async function readPack(dir) {
84
94
  index,
85
95
  };
86
96
  }
87
- /** Count the booted store's triples (a cheap aggregate over the union graph). */
88
- async function countTriples(store) {
89
- const result = (await store.query("SELECT (COUNT(*) AS ?n) WHERE { ?s ?p ?o }"));
90
- return Number(result.bindings.at(0)?.n ?? 0);
91
- }
92
97
  //# sourceMappingURL=read.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/graphpack/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/graphpack/read.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,9 @@ export async function loadStoreSession(ctx) {
28
28
  // storeReadiness), so a cold store reads identically on every surface.
29
29
  throw storeUnavailable(decision.reason);
30
30
  }
31
- const dir = decision.kind === "embedded" ? materializeEmbeddedPack() : decision.dir;
31
+ const dir = decision.kind === "embedded"
32
+ ? await materializeEmbeddedPack()
33
+ : decision.dir;
32
34
  return readPack(dir);
33
35
  }
34
36
  //# sourceMappingURL=loadSession.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadSession.js","sourceRoot":"","sources":["../../../../src/kernel/runtime/loadSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACpC,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,GAAG,GACP,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC1E,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"loadSession.js","sourceRoot":"","sources":["../../../../src/kernel/runtime/loadSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACpC,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,GAAG,GACP,QAAQ,CAAC,IAAI,KAAK,UAAU;QAC1B,CAAC,CAAC,MAAM,uBAAuB,EAAE;QACjC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;IACnB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
@@ -20,7 +20,7 @@ export async function runStoreProbe() {
20
20
  import("./graphpack/embedded.js"),
21
21
  import("./graphpack/read.js"),
22
22
  ]);
23
- const session = await readPack(materializeEmbeddedPack());
23
+ const session = await readPack(await materializeEmbeddedPack());
24
24
  try {
25
25
  const result = await session.store.query("SELECT (COUNT(*) AS ?n) WHERE { ?s ?p ?o }");
26
26
  const triples = result.type === "select" ? (result.bindings[0]?.n ?? "0") : "0";
@@ -1 +1 @@
1
- {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../../../src/kernel/runtime/probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,MAAM,CAAC,yBAAyB,CAAC;QACjC,MAAM,CAAC,qBAAqB,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CACtC,4CAAqD,CACtD,CAAC;QACF,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACvC,OAAO;SACR,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../../../src/kernel/runtime/probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,MAAM,CAAC,yBAAyB,CAAC;QACjC,MAAM,CAAC,qBAAqB,CAAC;KAC9B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CACtC,4CAAqD,CACtD,CAAC;QACF,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YACvC,OAAO;SACR,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -42,11 +42,27 @@ export function parsePackDeclaration(entry) {
42
42
  },
43
43
  });
44
44
  }
45
+ // `#<ref>` or `#<ref>:<subdir>`. A git ref cannot contain a colon
46
+ // (git check-ref-format), so the split is unambiguous.
47
+ const fragment = source.slice(hashIdx + 1);
48
+ const colonIdx = fragment.indexOf(":");
49
+ if (colonIdx !== -1 && colonIdx === fragment.length - 1) {
50
+ throw PragmaError.configError(`Invalid source for "${name}": the subdirectory after : is empty.`, {
51
+ recovery: {
52
+ message: "Example: git+https://github.com/org/repo.git#main:packages/thing",
53
+ },
54
+ });
55
+ }
56
+ const ref = colonIdx === -1 ? fragment : fragment.slice(0, colonIdx);
57
+ if (ref.length === 0) {
58
+ throw PragmaError.configError(`Invalid source for "${name}": git URL must include a ref after #.`);
59
+ }
45
60
  return {
46
61
  kind: "git",
47
62
  pkg: name,
48
63
  url: source.slice("git+".length, hashIdx),
49
- ref: source.slice(hashIdx + 1),
64
+ ref,
65
+ ...(colonIdx === -1 ? {} : { subdir: fragment.slice(colonIdx + 1) }),
50
66
  source,
51
67
  };
52
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseRef.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/refs/parseRef.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAmBnD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAsB;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,WAAW,CAAC,WAAW,CAC3B,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,WAAW,CAAC,WAAW,CAC3B,uBAAuB,IAAI,wCAAwC,CACpE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,WAAW,CAAC,WAAW,CAC3B,uBAAuB,IAAI,wCAAwC,EACnE;gBACE,QAAQ,EAAE;oBACR,OAAO,EAAE,mDAAmD;iBAC7D;aACF,CACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;YACzC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;YAC9B,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,CAAC,WAAW,CAC3B,uBAAuB,IAAI,OAAO,MAAM,gEAAgE,CACzG,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,wCAAwC,EAAE,QAAQ,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"parseRef.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/refs/parseRef.ts"],"names":[],"mappings":"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"}
@@ -318,13 +318,19 @@ export async function resolvePackage(ref, options) {
318
318
  },
319
319
  });
320
320
  }
321
+ // The clone lives at `dir`; the PACKAGE may be nested within it. A git
322
+ // source names a repository, so a package inside a monorepo is reached
323
+ // by its subdirectory — without which `readTtlSources` would scan a
324
+ // repository root that has no `definitions/` or `data/` and contribute
325
+ // nothing at all.
326
+ const packageRoot = ref.subdir ? join(dir, ref.subdir) : dir;
321
327
  return {
322
328
  name: ref.pkg,
323
329
  source: ref.source,
324
330
  resolved,
325
- root: dir,
326
- sources: readTtlSources(dir, ref.pkg),
327
- stories: readStorySources(dir, ref.pkg),
331
+ root: packageRoot,
332
+ sources: readTtlSources(packageRoot, ref.pkg),
333
+ stories: readStorySources(packageRoot, ref.pkg),
328
334
  };
329
335
  }
330
336
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/refs/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAmB,SAAS,EAAE,MAAM,eAAe,CAAC;AA+B3D,6DAA6D;AAC7D,MAAM,QAAQ,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAEzC,mFAAmF;AACnF,MAAM,WAAW,GAAG,SAAS,CAAC;AAE9B,sDAAsD;AACtD,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAEhF;;6EAE6E;AAC7E,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAG3B,CAAC;QACF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;oFACoF;AACpF,SAAS,OAAO,CACd,GAAW,EACX,IAAY,EACZ,KAAa,EACb,GAAwC;IAExC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO;IAC7B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,yEAAyE;QACzE,qEAAqE;QACrE,2EAA2E;QAC3E,6DAA6D;QAC7D,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,mEAAmE;QACnE,oEAAoE;QACpE,2EAA2E;QAC3E,0EAA0E;QAC1E,oEAAoE;QACpE,sEAAsE;QACtE,4EAA4E;QAC5E,6EAA6E;QAC7E,sBAAsB;QACtB,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACjC,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;gBACxC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,cAAc,CACrB,OAAe,EACf,KAAa;IAEb,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CACvB,OAAe,EACf,KAAa;IAEb,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,KAAK,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE;YAC7C,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;SACrC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG,6CAA6C,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAgD;IAEhD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;gBAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AASD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAgD;IAEhD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;gBAAE,SAAS;YACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAyC,EACzC,GAAW;IAEX,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;IAC7E,CAAC;IACD,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAEzD,CAAC;gBACF,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG;oBAAE,OAAO,SAAS,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM;QAC9B,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAe,EACf,OAAuB;IAEvB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,WAAW,CAAC,WAAW,CAC3B,YAAY,GAAG,CAAC,GAAG,qBAAqB,GAAG,CAAC,IAAI,GAAG,CACpD,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,GAAG;gBACb,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,IAAI;gBAClB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;gBAC1C,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;aAC7C,CAAC;QACJ,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,WAAW,CAAC,WAAW,CAC3B,YAAY,GAAG,CAAC,GAAG,4CAA4C,CAChE,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YACjC,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO;oBACJ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAkB;wBAClE,OAAO,CAAC;YACZ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yEAAyE;gBACzE,8DAA8D;gBAC9D,MAAM,WAAW,CAAC,WAAW,CAC3B,YAAY,GAAG,CAAC,GAAG,kCAAkC,WAAW,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAC3F,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,GAAG;gBACb,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;gBACrC,OAAO,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;aACxC,CAAC;QACJ,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,IAAI,QAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAChC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wEAAwE;gBACxE,yEAAyE;gBACzE,wEAAwE;gBACxE,qDAAqD;gBACrD,MAAM,WAAW,CAAC,WAAW,CAC3B,mBAAmB,GAAG,CAAC,GAAG,UAAU,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,EAC1F;oBACE,QAAQ,EAAE;wBACR,OAAO,EACL,4FAA4F;qBAC/F;iBACF,CACF,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,GAAG;gBACb,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ;gBACR,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;gBACrC,OAAO,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;aACxC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../../src/kernel/runtime/refs/resolve.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@canonical/pragma-cli",
3
3
  "description": "CLI and MCP server over Canonical's design-system knowledge graph.",
4
- "version": "0.36.0",
4
+ "version": "0.37.0",
5
5
  "type": "module",
6
6
  "module": "src/index.ts",
7
7
  "types": "src/index.ts",
@@ -35,13 +35,15 @@
35
35
  "build:all": "bun run build",
36
36
  "bundle": "bun run scripts/bundle.ts",
37
37
  "gen:reference": "bun run scripts/genReference.ts",
38
- "check": "bun run check:biome && bun run check:ts && bun run check:webarchitect",
38
+ "check": "bun run check:biome && bun run check:ts && bun run check:webarchitect && bun run check:packs",
39
+ "check:packs": "bun run scripts/check-pack-parity.ts",
40
+ "check:packs:test": "bun test scripts/check-pack-parity.test.ts",
39
41
  "check:webarchitect": "webarchitect tool-ts",
40
42
  "check:fix": "bun run check:biome:fix && bun run check:ts",
41
43
  "check:biome": "biome check",
42
44
  "check:biome:fix": "biome check --write",
43
45
  "check:ts": "tsc --noEmit",
44
- "test": "bun run test:vitest && bun run test:perf",
46
+ "test": "bun run check:packs:test && bun run test:vitest",
45
47
  "test:vitest": "vitest run --coverage",
46
48
  "test:perf": "vitest run --config vitest.perf.config.ts",
47
49
  "test:watch": "vitest",
@@ -49,28 +51,29 @@
49
51
  "eval": "bun run src/testing/eval/report.ts"
50
52
  },
51
53
  "dependencies": {
52
- "@canonical/harnesses": "^0.36.0",
53
- "@canonical/ke": "^0.36.0",
54
- "@canonical/ke-graphql": "^0.36.0",
55
- "@canonical/summon-application": "^0.36.0",
56
- "@canonical/summon-component": "^0.36.0",
57
- "@canonical/summon-core": "^0.36.0",
58
- "@canonical/summon-package": "^0.36.0",
59
- "@canonical/task": "^0.36.0",
54
+ "@canonical/harnesses": "^0.37.0",
55
+ "@canonical/ke": "^0.37.0",
56
+ "@canonical/ke-graphql": "^0.37.0",
57
+ "@canonical/summon-application": "^0.37.0",
58
+ "@canonical/summon-component": "^0.37.0",
59
+ "@canonical/summon-core": "^0.37.0",
60
+ "@canonical/summon-package": "^0.37.0",
61
+ "@canonical/task": "^0.37.0",
60
62
  "@modelcontextprotocol/sdk": "^1.12.0",
61
- "chalk": "^5.6.2",
62
- "commander": "^14.0.3",
63
+ "chalk": "^6.0.0",
64
+ "commander": "^15.0.0",
63
65
  "graphql": "17.0.0-rc.0",
64
66
  "oxigraph": "^0.5.0",
65
67
  "zod": "^3.25.0"
66
68
  },
67
69
  "devDependencies": {
68
70
  "@biomejs/biome": "2.4.9",
69
- "@canonical/anatomy-dsl": "^0.2.2",
70
- "@canonical/biome-config": "^0.36.0",
71
- "@canonical/summon": "^0.36.0",
72
- "@canonical/typescript-config": "^0.36.0",
73
- "@canonical/webarchitect": "^0.36.0",
71
+ "@canonical/anatomy-dsl": "^0.3.0",
72
+ "@canonical/biome-config": "^0.37.0",
73
+ "@canonical/summon": "^0.37.0",
74
+ "@canonical/token-ontology": "^0.8.1",
75
+ "@canonical/typescript-config": "^0.37.0",
76
+ "@canonical/webarchitect": "^0.37.0",
74
77
  "@types/bun": "^1.3.10",
75
78
  "@types/node": "^26.0.0",
76
79
  "@vitest/coverage-v8": "^4.0.18",
@@ -80,5 +83,5 @@
80
83
  "engines": {
81
84
  "node": ">=22.18 <23 || >=23.6"
82
85
  },
83
- "gitHead": "78eb47ac10104e914eeacd331795e14b832703d4"
86
+ "gitHead": "ac8383bdb4be1bcd6fa6c4960a1e3d78c0279688"
84
87
  }
package/pragma.conf.ts CHANGED
@@ -871,10 +871,23 @@ const codeStandardsStories: readonly PackDefinition[] = [
871
871
  // because a pack is data — a future release that drops a label should
872
872
  // degrade to the IRI-derived name, not become unaddressable.
873
873
  //
874
- // Deliberately NOT declared on `block`/`token`/`tier`/`concept`: each of
875
- // those lists REQUIRES its `by` property, so an entity without one is a
876
- // row they never publish, and making it addressable (or sampleable) here
877
- // would be the mirror of the defect this repairs.
874
+ // Deliberately NOT declared on `token`/`modifier`/`tier`/`concept`:
875
+ // each of those lists REQUIRES its `by` property, so an entity without
876
+ // one is a row they never publish, and making it addressable (or
877
+ // sampleable) here would be the mirror of the defect this repairs.
878
+ //
879
+ // `block` is NOT in that set, though an earlier version of this comment
880
+ // claimed it was: its list COALESCEs an OPTIONAL `ds:name` with an
881
+ // IRI-derived fallback, so a block without a `ds:name` WOULD be
882
+ // published under a name its lookup cannot resolve. Every shipped block
883
+ // carries `ds:name` today, so the divergence is latent — and pinned:
884
+ // `listLookup.shipped.exec.test.ts` runs the whole corpus through both
885
+ // halves on every test run, and goes red the moment upstream ships an
886
+ // unnamed block. Fix it THEN, by choosing deliberately between requiring
887
+ // the name in the list and declaring a fallback pair whose derivations
888
+ // actually agree (the list keeps the IRI's dots; the shared
889
+ // `nameFallback` derivation converts them to slashes — declaring the
890
+ // fallback alone would trade one mismatch for another).
878
891
  nameFallback: "iri",
879
892
  type: "cs:CodeStandard",
880
893
  description:
@@ -982,7 +995,20 @@ Made by the Canonical Webteam — https://canonical.com.`,
982
995
  name: "@canonical/anatomy-dsl",
983
996
  source: "git+https://github.com/canonical/anatomy-dsl.git#main",
984
997
  },
985
- // Pinned to a TAG, and the only source here that is. The standards are the
998
+ // The design-token semantic model: the authored `dt:` / `w3c-tokens:`
999
+ // ontology in `definitions/` plus the generated strata in `data/`.
1000
+ //
1001
+ // The only source here carrying a SUBDIRECTORY, and it needs one: this
1002
+ // package lives inside a monorepo, at `packages/token-ontology`, while a
1003
+ // git source names a repository. `readTtlSources` scans
1004
+ // `<root>/definitions` and `<root>/data`, which the design-tokens repo
1005
+ // root does not have — so without the subdirectory this would clone
1006
+ // cleanly and contribute nothing.
1007
+ {
1008
+ name: "@canonical/token-ontology",
1009
+ source:
1010
+ "git+https://github.com/canonical/design-tokens.git#main:packages/token-ontology",
1011
+ },
986
1012
  // pack an agent is most likely to quote back at a human as policy, so which
987
1013
  // revision answered a query has to be recoverable — a floating ref makes
988
1014
  // "the CLI told me this was the rule" unfalsifiable. The other three still
@@ -1023,6 +1049,11 @@ Made by the Canonical Webteam — https://canonical.com.`,
1023
1049
  // `cs:` is listed even though nothing rebinds it upstream.
1024
1050
  prefixes: {
1025
1051
  ds: "https://ds.canonical.com/",
1052
+ dt: "https://dt.canonical.com/",
1053
+ // Nested UNDER `dt:`, and both must be bound: `compactUri` takes the
1054
+ // longest match, so binding only the parent would render every term of
1055
+ // this vocabulary as `dt:w3c-tokens/…`.
1056
+ "w3c-tokens": "https://dt.canonical.com/w3c-tokens/",
1026
1057
  cs: "http://pragma.canonical.com/codestandards#",
1027
1058
  },
1028
1059
  channel: "normal",
@@ -213,7 +213,7 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
213
213
  create_application: {
214
214
  category: "write",
215
215
  use_when:
216
- "Scaffolding a new React application with SSR, routing, and optional Relay",
216
+ "Scaffolding a new React application with routing, optional Relay, and either server-side rendering or a client-only SPA",
217
217
  },
218
218
  setup: {
219
219
  category: "write",
@@ -36,6 +36,7 @@ describe("config show payload", () => {
36
36
  ).toEqual([
37
37
  "@canonical/design-system",
38
38
  "@canonical/anatomy-dsl",
39
+ "@canonical/token-ontology",
39
40
  "@canonical/code-standards",
40
41
  "@canonical/ds-implementations",
41
42
  ]);
@@ -15,7 +15,8 @@
15
15
  * `create` verbs take. No new package edge: pragma already depends on
16
16
  * summon-core, and never on the summon bin.
17
17
  *
18
- * Five generators are covered: component × {react, svelte, lit}, package, and
18
+ * Five generators are covered across seven fixtures: component × {react, svelte, lit},
19
+ * package, and
19
20
  * application. A cross-binary subprocess guard lives in byteEquality.subprocess.test.ts.
20
21
  */
21
22
 
@@ -175,6 +176,32 @@ const cases: Case[] = [
175
176
  runInstall: false,
176
177
  },
177
178
  },
179
+ {
180
+ fixture: "application-spa",
181
+ kind: "application",
182
+ framework: "",
183
+ params: {
184
+ appPath: "my-app",
185
+ forms: true,
186
+ intl: false,
187
+ relay: false,
188
+ rendering: "spa",
189
+ runInstall: false,
190
+ },
191
+ },
192
+ {
193
+ fixture: "application-spa-all",
194
+ kind: "application",
195
+ framework: "",
196
+ params: {
197
+ appPath: "my-app",
198
+ forms: true,
199
+ intl: true,
200
+ relay: true,
201
+ rendering: "spa",
202
+ runInstall: false,
203
+ },
204
+ },
178
205
  ];
179
206
 
180
207
  describe("byte-equality goldens — pragma create \u2261 the conformance reference (PROTECTED)", () => {
@@ -688,6 +688,7 @@ describe("projection fidelity — the committed surface IS the live generators (
688
688
  "appPath",
689
689
  "forms",
690
690
  "intl",
691
+ "rendering",
691
692
  "relay",
692
693
  "runInstall",
693
694
  ]);
@@ -523,11 +523,12 @@ export const createVerbs: Record<
523
523
  ),
524
524
  application: createVerb(
525
525
  "application",
526
- "Scaffold a full React application with SSR and routing.",
526
+ "Scaffold a full React application with routing, and either server-side rendering or a client-only SPA.",
527
527
  applicationParams,
528
528
  [
529
529
  { cmd: `${BIN_NAME} create application react my-app` },
530
530
  { cmd: `${BIN_NAME} create application react my-app --relay` },
531
+ { cmd: `${BIN_NAME} create application react my-app --rendering spa` },
531
532
  ],
532
533
  ),
533
534
  };
@@ -655,7 +655,10 @@ describe("the mounted create grammar (subprocess)", () => {
655
655
  "--type": "library",
656
656
  "--description": "A replied library.",
657
657
  },
658
- "application/react": { "--app-path": "replied-app" },
658
+ "application/react": {
659
+ "--app-path": "replied-app",
660
+ "--rendering": "spa",
661
+ },
659
662
  };
660
663
  for (const [commandPath, surface] of Object.entries(CREATE_SURFACE)) {
661
664
  it(`${commandPath}: the refusal's own instruction WORKS — its Missing tokens supplied back (+ --dry-run) preview, exit 0`, () => {
@@ -17,7 +17,7 @@ export const CREATE_SURFACE: Readonly<Record<string, SurfaceCommand>> = {
17
17
  "application",
18
18
  "react"
19
19
  ],
20
- "description": "Scaffold a complete React application with SSR and routing",
20
+ "description": "Scaffold a complete React application with routing, and either server-side rendering or a client-only SPA",
21
21
  "prompts": [
22
22
  {
23
23
  "name": "appPath",
@@ -41,6 +41,23 @@ export const CREATE_SURFACE: Readonly<Record<string, SurfaceCommand>> = {
41
41
  "default": false,
42
42
  "group": "Application"
43
43
  },
44
+ {
45
+ "name": "rendering",
46
+ "type": "select",
47
+ "message": "Rendering — ssr keeps the server layer (SSR servers and sitemap), spa is client-only",
48
+ "default": "ssr",
49
+ "choices": [
50
+ {
51
+ "label": "ssr - server-side rendering (Express + Bun servers, sitemap)",
52
+ "value": "ssr"
53
+ },
54
+ {
55
+ "label": "spa - client-only single-page app (no server layer)",
56
+ "value": "spa"
57
+ }
58
+ ],
59
+ "group": "Application"
60
+ },
44
61
  {
45
62
  "name": "relay",
46
63
  "type": "confirm",
@@ -278,6 +295,11 @@ export const CREATE_CLI_SYNTAX: Readonly<
278
295
  "takesValue": false,
279
296
  "kebabName": "intl"
280
297
  },
298
+ "rendering": {
299
+ "flag": "--rendering",
300
+ "takesValue": true,
301
+ "kebabName": "rendering"
302
+ },
281
303
  "relay": {
282
304
  "flag": "--relay",
283
305
  "takesValue": false,
@@ -258,9 +258,16 @@ describe("cross-CLI conformance matrix (PROTECTED)", () => {
258
258
  // here, which is the point).
259
259
  it("every declared generator binding path is driven by a conformance fixture", () => {
260
260
  expect(
261
- [...CONFORMANCE_FIXTURES]
262
- .map((fixture) => commandPathOf(fixture.generator))
263
- .sort(),
261
+ // Deduplicated: the assertion is that every declared path is COVERED, and
262
+ // one path may carry several fixtures — application/react is driven by
263
+ // both the SSR arm and the SPA arm.
264
+ [
265
+ ...new Set(
266
+ CONFORMANCE_FIXTURES.map((fixture) =>
267
+ commandPathOf(fixture.generator),
268
+ ),
269
+ ),
270
+ ].sort(),
264
271
  ).toEqual(
265
272
  Object.values(CREATE_GENERATORS)
266
273
  .flatMap((binding) => binding.paths as readonly string[])