@specverse/engines 5.0.2 → 5.2.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 (116) hide show
  1. package/assets/prompts/core/standard/default/analyse.prompt.yaml +5 -5
  2. package/assets/prompts/core/standard/default/app-demo.prompt.yaml +21 -1
  3. package/assets/prompts/core/standard/default/behavior.prompt.yaml +150 -0
  4. package/assets/prompts/core/standard/default/create.prompt.yaml +3 -3
  5. package/assets/prompts/core/standard/default/materialise.prompt.yaml +804 -774
  6. package/assets/prompts/core/standard/default/realize.prompt.yaml +581 -544
  7. package/assets/prompts/core/standard/v9/analyse.prompt.yaml +5 -5
  8. package/assets/prompts/core/standard/v9/app-demo.prompt.yaml +233 -0
  9. package/assets/prompts/core/standard/v9/behavior.prompt.yaml +33 -9
  10. package/assets/prompts/core/standard/v9/create.prompt.yaml +3 -3
  11. package/assets/prompts/core/standard/v9/materialise.prompt.yaml +804 -774
  12. package/assets/prompts/core/standard/v9/realize.prompt.yaml +581 -544
  13. package/dist/ai/commands/fill.d.ts.map +1 -1
  14. package/dist/ai/commands/fill.js +16 -7
  15. package/dist/ai/commands/fill.js.map +1 -1
  16. package/dist/ai/commands/template.d.ts.map +1 -1
  17. package/dist/ai/commands/template.js +17 -8
  18. package/dist/ai/commands/template.js.map +1 -1
  19. package/dist/bundles/deriveCatalog.d.ts +18 -0
  20. package/dist/bundles/deriveCatalog.d.ts.map +1 -0
  21. package/dist/bundles/deriveCatalog.js +263 -0
  22. package/dist/bundles/deriveCatalog.js.map +1 -0
  23. package/dist/bundles/index.d.ts +15 -0
  24. package/dist/bundles/index.d.ts.map +1 -0
  25. package/dist/bundles/index.js +15 -0
  26. package/dist/bundles/index.js.map +1 -0
  27. package/dist/bundles/types.d.ts +53 -0
  28. package/dist/bundles/types.d.ts.map +1 -0
  29. package/dist/bundles/types.js +22 -0
  30. package/dist/bundles/types.js.map +1 -0
  31. package/dist/bundles/validate.d.ts +55 -0
  32. package/dist/bundles/validate.d.ts.map +1 -0
  33. package/dist/bundles/validate.js +471 -0
  34. package/dist/bundles/validate.js.map +1 -0
  35. package/dist/inference/quint-transpiler.js +2 -2
  36. package/dist/inference/quint-transpiler.js.map +1 -1
  37. package/dist/libs/instance-factories/applications/templates/react/runtime-package-json-generator.js +1 -1
  38. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +227 -0
  39. package/dist/libs/instance-factories/tools/templates/mcp/mcp-server-generator.js +295 -14
  40. package/libs/instance-factories/applications/templates/react/runtime-package-json-generator.ts +1 -1
  41. package/libs/instance-factories/cli/templates/commander/command-generator.ts +227 -0
  42. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +328 -15
  43. package/package.json +9 -5
  44. package/assets/examples/09-api/ai-spec.yaml +0 -194
  45. package/assets/examples/09-api/converted.yaml +0 -95
  46. package/assets/examples/09-api/diagram-architecture.mmd +0 -10
  47. package/assets/examples/09-api/diagram-er.mmd +0 -10
  48. package/assets/examples/09-api/documentation.html +0 -104
  49. package/assets/examples/09-api/documentation.md +0 -95
  50. package/assets/examples/09-api/inferred-spec.yaml +0 -420
  51. package/assets/examples/09-api/openapi.json +0 -61
  52. package/assets/examples/10-api/README.md +0 -216
  53. package/assets/examples/10-api/ai-spec.yaml +0 -194
  54. package/assets/examples/10-api/converted.yaml +0 -96
  55. package/assets/examples/10-api/diagram-architecture.mmd +0 -10
  56. package/assets/examples/10-api/diagram-er.mmd +0 -10
  57. package/assets/examples/10-api/documentation.html +0 -104
  58. package/assets/examples/10-api/documentation.md +0 -95
  59. package/assets/examples/10-api/inferred-spec.yaml +0 -7
  60. package/assets/examples/10-api/metadata.yaml +0 -89
  61. package/assets/examples/10-api/openapi.json +0 -61
  62. package/assets/examples/10-api/package-integration-test.js +0 -177
  63. package/assets/examples/10-api/usage-example.js +0 -323
  64. package/assets/examples/10-api/usage-example.ts +0 -363
  65. package/assets/examples/10-api/workflow-test.js +0 -113
  66. package/assets/examples/validate-examples-with-expected-failures.cjs +0 -328
  67. package/assets/examples/validate-examples.cjs +0 -225
  68. package/assets/prompts/MOVED.md +0 -35
  69. package/assets/prompts/SUMMARY-v8-PROMOTION.md +0 -445
  70. package/assets/prompts/core/CHANGELOG.md +0 -158
  71. package/assets/prompts/core/MIGRATION-v6-to-v7.md +0 -379
  72. package/assets/prompts/core/base-terminal-prompt.md +0 -201
  73. package/assets/prompts/core/examples/example-usage.ts +0 -140
  74. package/assets/prompts/core/schemas/prompt.schema.json +0 -309
  75. package/assets/prompts/core/schemas/prompt.schema.yaml +0 -229
  76. package/assets/prompts/core/standard/archive/v1/analyse.prompt.yaml +0 -259
  77. package/assets/prompts/core/standard/archive/v1/create.prompt.yaml +0 -302
  78. package/assets/prompts/core/standard/archive/v1/materialise.prompt.yaml +0 -328
  79. package/assets/prompts/core/standard/archive/v1/realize.prompt.yaml +0 -606
  80. package/assets/prompts/core/standard/archive/v2/README.md +0 -110
  81. package/assets/prompts/core/standard/archive/v2/analyse.prompt.yaml +0 -151
  82. package/assets/prompts/core/standard/archive/v2/create.prompt.yaml +0 -151
  83. package/assets/prompts/core/standard/archive/v2/materialise.prompt.yaml +0 -132
  84. package/assets/prompts/core/standard/archive/v2/realize.prompt.yaml +0 -147
  85. package/assets/prompts/core/standard/archive/v3/README.md +0 -279
  86. package/assets/prompts/core/standard/archive/v3/analyse.prompt.yaml +0 -309
  87. package/assets/prompts/core/standard/archive/v3/create.prompt.yaml +0 -351
  88. package/assets/prompts/core/standard/archive/v3/materialise.prompt.yaml +0 -247
  89. package/assets/prompts/core/standard/archive/v3/realize.prompt.yaml +0 -344
  90. package/assets/prompts/core/standard/archive/v4/README.md +0 -79
  91. package/assets/prompts/core/standard/archive/v4/analyse.prompt.yaml +0 -204
  92. package/assets/prompts/core/standard/archive/v4/create.prompt.yaml +0 -185
  93. package/assets/prompts/core/standard/archive/v5/README.md +0 -224
  94. package/assets/prompts/core/standard/archive/v5/analyse.prompt.yaml +0 -209
  95. package/assets/prompts/core/standard/archive/v5/create.prompt.yaml +0 -225
  96. package/assets/prompts/core/standard/archive/v5/materialise.prompt.yaml +0 -242
  97. package/assets/prompts/core/standard/archive/v5/realize.prompt.yaml +0 -336
  98. package/assets/prompts/core/standard/archive/v6/README.md +0 -187
  99. package/assets/prompts/core/standard/archive/v6/analyse.prompt.yaml +0 -219
  100. package/assets/prompts/core/standard/archive/v6/create.prompt.yaml +0 -180
  101. package/assets/prompts/core/standard/archive/v6/materialise.prompt.yaml +0 -203
  102. package/assets/prompts/core/standard/archive/v6/realize.prompt.yaml +0 -215
  103. package/assets/prompts/core/standard/archive/v7/analyse.prompt.nick.yaml +0 -144
  104. package/assets/prompts/core/standard/archive/v7/analyse.prompt.old.yaml +0 -146
  105. package/assets/prompts/core/standard/archive/v7/analyse.prompt.yaml +0 -129
  106. package/assets/prompts/core/standard/archive/v7/create.prompt.yaml +0 -146
  107. package/assets/prompts/core/standard/archive/v7/materialise.prompt.yaml +0 -297
  108. package/assets/prompts/core/standard/archive/v7/realize.prompt.yaml +0 -294
  109. package/assets/prompts/core/standard/archive/v8/README.md +0 -400
  110. package/assets/prompts/core/standard/archive/v8/analyse.prompt.yaml +0 -185
  111. package/assets/prompts/core/standard/archive/v8/create.prompt.yaml +0 -203
  112. package/assets/prompts/core/standard/archive/v8/materialise.prompt.yaml +0 -297
  113. package/assets/prompts/core/standard/archive/v8/realize.prompt.yaml +0 -294
  114. package/assets/prompts/templates/api-orchestrator-template.yaml +0 -188
  115. package/assets/prompts/templates/claude-integration-template.md +0 -121
  116. package/assets/prompts/templates/terminal-prompt-template.md +0 -97
@@ -1 +1 @@
1
- {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/ai/commands/fill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAiFvG,wBAAsB,YAAY,CAChC,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,gBAAgB,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,YAAY,CAAC,CAyGvB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/ai/commands/fill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA4FvG,wBAAsB,YAAY,CAChC,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,gBAAgB,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,YAAY,CAAC,CA0GvB;AAED,eAAe,YAAY,CAAC"}
@@ -6,7 +6,15 @@ import { getTemplate } from './template.js';
6
6
  import { existsSync, readdirSync, readFileSync } from 'fs';
7
7
  import { join, resolve, dirname } from 'path';
8
8
  import { execSync } from 'child_process';
9
- import { fileURLToPath } from 'url';
9
+ import { createRequire } from 'node:module';
10
+ const require = createRequire(import.meta.url);
11
+ /** Resolve @specverse/entities/schema/<name>. Same resolver pattern as
12
+ * template.ts + the MCP generator.
13
+ */
14
+ function resolveEntitiesSchemaFile(name) {
15
+ const pkg = require.resolve('@specverse/entities/package.json');
16
+ return join(dirname(pkg), 'schema', name);
17
+ }
10
18
  function getDirectoryStructure(dirPath, maxDepth = 3) {
11
19
  try {
12
20
  // Use ls to get directory structure
@@ -80,12 +88,13 @@ function getKeyFilesContent(dirPath) {
80
88
  export async function fillTemplate(operation, requirements, options = {}) {
81
89
  try {
82
90
  const template = await getTemplate(operation, options);
83
- // Construct schema paths based on package installation (like ai docs does)
84
- const __filename = fileURLToPath(import.meta.url);
85
- const __dirname = dirname(__filename);
86
- const schemaDir = resolve(__dirname, '../../../schema');
87
- const aiSchemaPath = join(schemaDir, 'SPECVERSE-V3.1-SCHEMA-AI.yaml');
88
- const referenceSchemaPath = join(schemaDir, 'MINIMAL-SYNTAX-REFERENCE.specly');
91
+ // Schema paths both files live in @specverse/entities/schema/,
92
+ // populated by entities' build (compose-schema + json-to-yaml-schema +
93
+ // generate-minimal-syntax-reference). Unified with template.ts and
94
+ // the MCP generator on the same filenames (the old V3.1-prefixed name
95
+ // that used to live in specverse-lang is retired).
96
+ const aiSchemaPath = resolveEntitiesSchemaFile('SPECVERSE-SCHEMA-AI.yaml');
97
+ const referenceSchemaPath = resolveEntitiesSchemaFile('MINIMAL-SYNTAX-REFERENCE.specly');
89
98
  // Prepare variables for substitution
90
99
  let variables = {
91
100
  requirements: requirements.requirements,
@@ -1 +1 @@
1
- {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../../src/ai/commands/fill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../../src/ai/commands/fill.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/ai/commands/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGvF,wBAAsB,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyHjH;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/ai/commands/template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAevF,wBAAsB,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwHjH;AAED,eAAe,WAAW,CAAC"}
@@ -3,10 +3,20 @@
3
3
  * Get raw prompt template for specified operation
4
4
  */
5
5
  import { readFile } from 'node:fs/promises';
6
- import { join, dirname, resolve } from 'node:path';
7
- import { fileURLToPath } from 'node:url';
6
+ import { join, dirname } from 'node:path';
7
+ import { createRequire } from 'node:module';
8
8
  import * as yaml from 'js-yaml';
9
9
  import { resolvePromptPath, validatePromptPath } from '../prompt-loader.js';
10
+ const require = createRequire(import.meta.url);
11
+ /** Resolve a file under @specverse/entities/schema/. The schema dir is
12
+ * populated by entities' build (compose-schema + json-to-yaml-schema +
13
+ * generate-minimal-syntax-reference). Same resolution path the MCP
14
+ * generator uses for specverse://schema.
15
+ */
16
+ function resolveEntitiesSchemaFile(name) {
17
+ const pkg = require.resolve('@specverse/entities/package.json');
18
+ return join(dirname(pkg), 'schema', name);
19
+ }
10
20
  export async function getTemplate(operation, options = {}) {
11
21
  try {
12
22
  // Resolve prompt path based on version
@@ -21,12 +31,11 @@ export async function getTemplate(operation, options = {}) {
21
31
  const templatePath = join(promptDir, `${operation}.prompt.yaml`);
22
32
  const templateContent = await readFile(templatePath, 'utf8');
23
33
  const templateData = yaml.load(templateContent);
24
- // Construct schema paths (always available, even for raw templates)
25
- const __filename = fileURLToPath(import.meta.url);
26
- const __dirname = dirname(__filename);
27
- const schemaDir = resolve(__dirname, '../../../schema');
28
- const aiSchemaPath = join(schemaDir, 'SPECVERSE-SCHEMA-AI.yaml');
29
- const referenceExamplePath = join(schemaDir, 'MINIMAL-SYNTAX-REFERENCE.specly');
34
+ // Schema paths for prompt template variables. Both files live in
35
+ // @specverse/entities/schema/ the AI-guidance YAML next to the
36
+ // JSON Schema, the minimal-syntax example next to both.
37
+ const aiSchemaPath = resolveEntitiesSchemaFile('SPECVERSE-SCHEMA-AI.yaml');
38
+ const referenceExamplePath = resolveEntitiesSchemaFile('MINIMAL-SYNTAX-REFERENCE.specly');
30
39
  // Build comprehensive system prompt from all system sections
31
40
  let systemPrompt = '';
32
41
  if (templateData.system?.role) {
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/ai/commands/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/ai/commands/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Derive a bundle's catalog by scanning its content facet directories.
3
+ *
4
+ * Entry point for the pluggable-bundle catalog subsystem. Called from each
5
+ * bundle's top-level `index.ts` (e.g. `entities/src/core/models/index.ts`)
6
+ * to produce a `CatalogEntry[]` that replaces hand-maintained `docs/index.ts`
7
+ * + `tests/index.ts` arrays.
8
+ *
9
+ * Results are cached per bundle directory — safe to call from module-load
10
+ * paths; subsequent calls for the same bundle return the cached array.
11
+ *
12
+ * See: specverse-self/docs/proposals/PLUGGABLE-BUNDLE-MODEL.md
13
+ */
14
+ import { CatalogEntry, DeriveCatalogOptions } from './types.js';
15
+ export declare function deriveCatalog(bundleDir: string, options?: DeriveCatalogOptions): CatalogEntry[];
16
+ /** Clear the cache — primarily for tests that mutate fixture content between runs. */
17
+ export declare function clearCatalogCache(): void;
18
+ //# sourceMappingURL=deriveCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveCatalog.d.ts","sourceRoot":"","sources":["../../src/bundles/deriveCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EACL,YAAY,EACZ,oBAAoB,EAIrB,MAAM,YAAY,CAAC;AAIpB,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,oBAAyB,GACjC,YAAY,EAAE,CAyChB;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Derive a bundle's catalog by scanning its content facet directories.
3
+ *
4
+ * Entry point for the pluggable-bundle catalog subsystem. Called from each
5
+ * bundle's top-level `index.ts` (e.g. `entities/src/core/models/index.ts`)
6
+ * to produce a `CatalogEntry[]` that replaces hand-maintained `docs/index.ts`
7
+ * + `tests/index.ts` arrays.
8
+ *
9
+ * Results are cached per bundle directory — safe to call from module-load
10
+ * paths; subsequent calls for the same bundle return the cached array.
11
+ *
12
+ * See: specverse-self/docs/proposals/PLUGGABLE-BUNDLE-MODEL.md
13
+ */
14
+ import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
15
+ import { basename, dirname, extname, join, relative, resolve } from 'path';
16
+ import { DEFAULT_FACETS, } from './types.js';
17
+ const cache = new Map();
18
+ export function deriveCatalog(bundleDir, options = {}) {
19
+ // Normalise to absolute so cache hits work across relative callers.
20
+ const root = resolve(bundleDir);
21
+ const cacheKey = JSON.stringify({
22
+ root,
23
+ additional: options.additionalReferences,
24
+ facets: options.facets,
25
+ });
26
+ const cached = cache.get(cacheKey);
27
+ if (cached)
28
+ return cached;
29
+ const facets = {
30
+ ...DEFAULT_FACETS,
31
+ ...(options.facets ?? {}),
32
+ };
33
+ const entries = [];
34
+ for (const facet of Object.keys(facets)) {
35
+ const facetDir = join(root, facet);
36
+ if (!existsSync(facetDir) || !statSync(facetDir).isDirectory())
37
+ continue;
38
+ const pattern = facets[facet];
39
+ const regex = globToRegExp(pattern.glob);
40
+ for (const abs of walkFiles(facetDir)) {
41
+ const relFromFacet = relative(facetDir, abs);
42
+ if (!regex.test(relFromFacet))
43
+ continue;
44
+ const entry = buildEntry(abs, root, pattern.category);
45
+ entries.push(entry);
46
+ }
47
+ }
48
+ // Mixed mode: caller-supplied external references appended after derived.
49
+ if (options.additionalReferences) {
50
+ entries.push(...options.additionalReferences);
51
+ }
52
+ cache.set(cacheKey, entries);
53
+ return entries;
54
+ }
55
+ /** Clear the cache — primarily for tests that mutate fixture content between runs. */
56
+ export function clearCatalogCache() {
57
+ cache.clear();
58
+ }
59
+ // ── Title / description extraction ────────────────────────────────────────
60
+ function buildEntry(filePath, bundleRoot, category) {
61
+ const relPath = './' + relative(bundleRoot, filePath).replaceAll('\\', '/');
62
+ const ext = extname(filePath).toLowerCase();
63
+ let title = '';
64
+ let description;
65
+ if (ext === '.specly') {
66
+ // Look for colocated `<basename>.md` as the doc.
67
+ const mdPath = join(dirname(filePath), basename(filePath, '.specly') + '.md');
68
+ if (existsSync(mdPath)) {
69
+ const md = readMdLeading(mdPath);
70
+ title = md.title;
71
+ description = md.description;
72
+ }
73
+ if (!title)
74
+ title = humanize(basename(filePath, '.specly'));
75
+ }
76
+ else if (ext === '.qnt') {
77
+ // Leading `//` comment block.
78
+ const c = readQuintLeading(filePath);
79
+ title = c.title || humanize(basename(filePath, '.qnt'));
80
+ description = c.description;
81
+ }
82
+ else if (ext === '.ts' || ext === '.tsx' || ext === '.js' || ext === '.mjs') {
83
+ // Test file — extract leading JSDoc-style comment.
84
+ const c = readJSDocLeading(filePath);
85
+ title = c.title || humanize(basename(filePath).replace(/\.(test|spec)\.\w+$/, ''));
86
+ description = c.description;
87
+ }
88
+ else {
89
+ title = humanize(basename(filePath, ext));
90
+ }
91
+ const entry = { title, category, path: relPath };
92
+ if (description)
93
+ entry.description = description;
94
+ return entry;
95
+ }
96
+ function readMdLeading(mdPath) {
97
+ let content;
98
+ try {
99
+ content = readFileSync(mdPath, 'utf8');
100
+ }
101
+ catch {
102
+ return { title: '' };
103
+ }
104
+ const lines = content.split('\n');
105
+ let title = '';
106
+ let description;
107
+ let seenH1 = false;
108
+ for (const line of lines) {
109
+ if (!seenH1) {
110
+ const h1 = line.match(/^#\s+(.+)$/);
111
+ if (h1) {
112
+ title = h1[1].trim();
113
+ seenH1 = true;
114
+ continue;
115
+ }
116
+ continue;
117
+ }
118
+ const trimmed = line.trim();
119
+ if (!trimmed)
120
+ continue;
121
+ if (trimmed.startsWith('#'))
122
+ break; // next heading — description ends
123
+ if (trimmed.startsWith('```'))
124
+ break; // code fence — not prose
125
+ if (trimmed.startsWith('>'))
126
+ continue; // blockquote — skip
127
+ description = trimmed.replace(/^\*\*|\*\*$/g, '').replace(/\[([^\]]+)\]\([^)]+\)/g, '$1');
128
+ break;
129
+ }
130
+ return { title, description };
131
+ }
132
+ function readQuintLeading(qntPath) {
133
+ let content;
134
+ try {
135
+ content = readFileSync(qntPath, 'utf8');
136
+ }
137
+ catch {
138
+ return { title: '' };
139
+ }
140
+ const commentLines = [];
141
+ for (const line of content.split('\n')) {
142
+ const t = line.trim();
143
+ if (t.startsWith('//')) {
144
+ commentLines.push(t.replace(/^\/\/\s?/, ''));
145
+ continue;
146
+ }
147
+ if (t === '') {
148
+ if (commentLines.length)
149
+ continue;
150
+ continue;
151
+ }
152
+ break; // first non-comment, non-blank line ends the prolog
153
+ }
154
+ const [titleLine, ...rest] = commentLines.filter(Boolean);
155
+ return {
156
+ title: (titleLine ?? '').trim(),
157
+ description: rest.length ? rest.join(' ').trim() : undefined,
158
+ };
159
+ }
160
+ function readJSDocLeading(filePath) {
161
+ let content;
162
+ try {
163
+ content = readFileSync(filePath, 'utf8');
164
+ }
165
+ catch {
166
+ return { title: '' };
167
+ }
168
+ const match = content.match(/^\s*\/\*\*([\s\S]*?)\*\//);
169
+ if (!match)
170
+ return { title: '' };
171
+ const lines = match[1]
172
+ .split('\n')
173
+ .map((l) => l.replace(/^\s*\*\s?/, '').trim())
174
+ .filter((l) => !l.startsWith('@'));
175
+ const nonEmpty = lines.filter(Boolean);
176
+ const [titleLine, ...rest] = nonEmpty;
177
+ return {
178
+ title: (titleLine ?? '').trim(),
179
+ description: rest.length ? rest.join(' ').trim() : undefined,
180
+ };
181
+ }
182
+ function humanize(slug) {
183
+ return slug
184
+ .replace(/[-_]+/g, ' ')
185
+ .replace(/\b\w/g, (c) => c.toUpperCase());
186
+ }
187
+ // ── Filesystem walking + glob matching ────────────────────────────────────
188
+ function* walkFiles(dir) {
189
+ let entries;
190
+ try {
191
+ entries = readdirSync(dir);
192
+ }
193
+ catch {
194
+ return;
195
+ }
196
+ for (const entry of entries) {
197
+ const full = join(dir, entry);
198
+ let s;
199
+ try {
200
+ s = statSync(full);
201
+ }
202
+ catch {
203
+ continue;
204
+ }
205
+ if (s.isDirectory())
206
+ yield* walkFiles(full);
207
+ else if (s.isFile())
208
+ yield full;
209
+ }
210
+ }
211
+ /**
212
+ * Minimal glob → RegExp for the patterns we support:
213
+ * `**` → any path segments (including none)
214
+ * `*` → non-separator run
215
+ * `{a,b}` → alternation
216
+ * Paths use forward slashes for matching regardless of OS.
217
+ */
218
+ function globToRegExp(glob) {
219
+ let re = '';
220
+ let i = 0;
221
+ while (i < glob.length) {
222
+ const ch = glob[i];
223
+ if (ch === '*' && glob[i + 1] === '*') {
224
+ // `**` or `**/`
225
+ if (glob[i + 2] === '/') {
226
+ re += '(?:.*/)?';
227
+ i += 3;
228
+ }
229
+ else {
230
+ re += '.*';
231
+ i += 2;
232
+ }
233
+ }
234
+ else if (ch === '*') {
235
+ re += '[^/]*';
236
+ i += 1;
237
+ }
238
+ else if (ch === '{') {
239
+ const end = glob.indexOf('}', i);
240
+ if (end === -1) {
241
+ re += '\\{';
242
+ i += 1;
243
+ continue;
244
+ }
245
+ const alts = glob.slice(i + 1, end).split(',').map(escapeRegex);
246
+ re += '(?:' + alts.join('|') + ')';
247
+ i = end + 1;
248
+ }
249
+ else if ('/.?+^$()[]\\'.includes(ch)) {
250
+ re += '\\' + ch;
251
+ i += 1;
252
+ }
253
+ else {
254
+ re += ch;
255
+ i += 1;
256
+ }
257
+ }
258
+ return new RegExp('^' + re + '$');
259
+ }
260
+ function escapeRegex(s) {
261
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
262
+ }
263
+ //# sourceMappingURL=deriveCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deriveCatalog.js","sourceRoot":"","sources":["../../src/bundles/deriveCatalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @specverse/engines/bundles
3
+ *
4
+ * Pluggable-bundle catalog subsystem. Scans a bundle's content facet
5
+ * directories and returns a unified `CatalogEntry[]` summary. Designed to
6
+ * replace hand-maintained catalog files per bundle — content is primary,
7
+ * catalog is derived.
8
+ *
9
+ * See: specverse-self/docs/proposals/PLUGGABLE-BUNDLE-MODEL.md
10
+ */
11
+ export { deriveCatalog, clearCatalogCache } from './deriveCatalog.js';
12
+ export { DEFAULT_FACETS, type CatalogEntry, type CatalogCategory, type DeriveCatalogOptions, type FacetName as CatalogFacetName, type FacetPattern, } from './types.js';
13
+ export { validateBundle, validateBundles } from './validate.js';
14
+ export type { FacetName as ValidateFacetName, FacetIssue, FacetResult, BundleReport, WorkspaceReport, ValidateOptions, } from './validate.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bundles/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,SAAS,IAAI,gBAAgB,EAClC,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EACV,SAAS,IAAI,iBAAiB,EAC9B,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @specverse/engines/bundles
3
+ *
4
+ * Pluggable-bundle catalog subsystem. Scans a bundle's content facet
5
+ * directories and returns a unified `CatalogEntry[]` summary. Designed to
6
+ * replace hand-maintained catalog files per bundle — content is primary,
7
+ * catalog is derived.
8
+ *
9
+ * See: specverse-self/docs/proposals/PLUGGABLE-BUNDLE-MODEL.md
10
+ */
11
+ export { deriveCatalog, clearCatalogCache } from './deriveCatalog.js';
12
+ export { DEFAULT_FACETS, } from './types.js';
13
+ // ── Bundle validation ────────────────────────────────────────────────
14
+ export { validateBundle, validateBundles } from './validate.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bundles/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EACL,cAAc,GAMf,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Types for the pluggable-bundle catalog subsystem.
3
+ *
4
+ * A "bundle" is a self-contained package of schema + implementation + content
5
+ * (examples, tests, behaviour specs). This module's job is producing a
6
+ * `CatalogEntry[]` summary of a bundle's content by scanning its content
7
+ * facet directories (`__examples__/`, `__tests__/`, `__behaviour__/`).
8
+ *
9
+ * See: specverse-self/docs/proposals/PLUGGABLE-BUNDLE-MODEL.md
10
+ */
11
+ /**
12
+ * CatalogEntry and CatalogCategory are defined canonically in
13
+ * `@specverse/types/entity-module` (which also aliases them as
14
+ * `EntityDocReference` and `EntityTestReference` for consumer naming
15
+ * intent). Re-exported here so consumers who import from
16
+ * `@specverse/engines/bundles` have everything they need from one path.
17
+ */
18
+ import type { CatalogCategory, CatalogEntry } from '@specverse/types';
19
+ export type { CatalogCategory, CatalogEntry } from '@specverse/types';
20
+ /** A content facet that the catalog scanner knows how to walk. */
21
+ export type FacetName = '__examples__' | '__tests__' | '__behaviour__';
22
+ /**
23
+ * How a facet is scanned. `glob` is a `fast-glob`-compatible pattern relative
24
+ * to the facet directory; `category` is assigned to every entry the scanner
25
+ * emits for this facet.
26
+ */
27
+ export interface FacetPattern {
28
+ glob: string;
29
+ category: CatalogCategory;
30
+ }
31
+ /** Configuration for `deriveCatalog`. All fields are optional. */
32
+ export interface DeriveCatalogOptions {
33
+ /**
34
+ * Mixed-mode entries: hand-written references the scanner can't discover
35
+ * (e.g. external guides outside the bundle). Appended to the derived set
36
+ * with no de-duplication.
37
+ */
38
+ additionalReferences?: CatalogEntry[];
39
+ /**
40
+ * Override scanning behaviour per facet. Default is the production table
41
+ * exported as `DEFAULT_FACETS`. Use this only when a bundle deviates from
42
+ * the standard layout.
43
+ */
44
+ facets?: Partial<Record<FacetName, FacetPattern>>;
45
+ }
46
+ /**
47
+ * Default facet patterns used when `DeriveCatalogOptions.facets` isn't
48
+ * provided. Tight patterns (extension-specific) so non-content files (e.g. a
49
+ * stray `grammar.yaml` physically nested inside `__behaviour__/`) cannot leak
50
+ * into the catalog regardless of directory depth.
51
+ */
52
+ export declare const DEFAULT_FACETS: Record<FacetName, FacetPattern>;
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/bundles/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEtE,kEAAkE;AAClE,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,eAAe,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,YAAY,EAAE,CAAC;IAEtC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;CACnD;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAI1D,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Types for the pluggable-bundle catalog subsystem.
3
+ *
4
+ * A "bundle" is a self-contained package of schema + implementation + content
5
+ * (examples, tests, behaviour specs). This module's job is producing a
6
+ * `CatalogEntry[]` summary of a bundle's content by scanning its content
7
+ * facet directories (`__examples__/`, `__tests__/`, `__behaviour__/`).
8
+ *
9
+ * See: specverse-self/docs/proposals/PLUGGABLE-BUNDLE-MODEL.md
10
+ */
11
+ /**
12
+ * Default facet patterns used when `DeriveCatalogOptions.facets` isn't
13
+ * provided. Tight patterns (extension-specific) so non-content files (e.g. a
14
+ * stray `grammar.yaml` physically nested inside `__behaviour__/`) cannot leak
15
+ * into the catalog regardless of directory depth.
16
+ */
17
+ export const DEFAULT_FACETS = {
18
+ __examples__: { glob: '**/*.specly', category: 'example' },
19
+ __tests__: { glob: '**/*.test.{ts,tsx,js,mjs}', category: 'test' },
20
+ __behaviour__: { glob: '**/*.qnt', category: 'behaviour' },
21
+ };
22
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/bundles/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0CH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoC;IAC7D,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE;IAC1D,SAAS,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClE,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE;CAC3D,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Validate a bundle's facets and return a structured report.
3
+ *
4
+ * v1 covers four facets: catalog (derived-vs-scan consistency), schema
5
+ * (JSON Schema validity), examples (parse via @specverse/engines/parser),
6
+ * tests (inventory only — execution remains vitest's job). Behaviour,
7
+ * inference, conventions, generators arrive in later iterations.
8
+ *
9
+ * Programmatic API for now. A `spv validate-bundle` CLI wrapper is a
10
+ * separate concern once the underlying validation shape settles.
11
+ *
12
+ * See: specverse-self/docs/proposals/PLUGGABLE-BUNDLE-MODEL.md
13
+ */
14
+ export type FacetName = 'catalog' | 'schema' | 'examples' | 'tests' | 'docs' | 'behaviour';
15
+ export interface FacetIssue {
16
+ severity: 'error' | 'warning';
17
+ message: string;
18
+ location?: string;
19
+ }
20
+ export interface FacetResult {
21
+ facet: FacetName;
22
+ status: 'pass' | 'fail' | 'skip';
23
+ duration: number;
24
+ issues: FacetIssue[];
25
+ metrics?: Record<string, number | string>;
26
+ }
27
+ export interface BundleReport {
28
+ bundle: string;
29
+ path: string;
30
+ facets: FacetResult[];
31
+ totals: {
32
+ pass: number;
33
+ fail: number;
34
+ skip: number;
35
+ };
36
+ duration: number;
37
+ }
38
+ export interface WorkspaceReport {
39
+ bundles: BundleReport[];
40
+ totals: {
41
+ pass: number;
42
+ fail: number;
43
+ skip: number;
44
+ };
45
+ duration: number;
46
+ }
47
+ export interface ValidateOptions {
48
+ /** Override schema path. Defaults to @specverse/entities composed schema. */
49
+ schemaPath?: string;
50
+ }
51
+ /** Validate one bundle. */
52
+ export declare function validateBundle(bundleDir: string, options?: ValidateOptions): Promise<BundleReport>;
53
+ /** Validate several bundles. Reports aggregate. */
54
+ export declare function validateBundles(bundleDirs: string[], options?: ValidateOptions): Promise<WorkspaceReport>;
55
+ //# sourceMappingURL=validate.d.ts.map