@specverse/engines 6.0.1 → 6.0.4

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 (48) hide show
  1. package/dist/ai/behavior-ai-service.d.ts.map +1 -1
  2. package/dist/ai/behavior-ai-service.js +18 -6
  3. package/dist/ai/behavior-ai-service.js.map +1 -1
  4. package/dist/ai/prompt-loader.d.ts +7 -3
  5. package/dist/ai/prompt-loader.d.ts.map +1 -1
  6. package/dist/ai/prompt-loader.js +67 -69
  7. package/dist/ai/prompt-loader.js.map +1 -1
  8. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +17 -6
  9. package/dist/libs/instance-factories/tools/templates/mcp/mcp-server-generator.js +8 -7
  10. package/libs/instance-factories/cli/templates/commander/command-generator.ts +17 -6
  11. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +10 -9
  12. package/package.json +2 -1
  13. package/assets/examples/manifests/01-simple-default-mappings.yaml +0 -36
  14. package/assets/examples/manifests/02-capability-mappings.yaml +0 -55
  15. package/assets/examples/manifests/03-hybrid-mappings.yaml +0 -109
  16. package/assets/examples/manifests/README.md +0 -245
  17. package/assets/examples/manifests/backend-only.yaml +0 -43
  18. package/assets/examples/manifests/blog-api.md +0 -78
  19. package/assets/examples/manifests/blog-api.specly +0 -79
  20. package/assets/examples/manifests/frontend-only.yaml +0 -24
  21. package/assets/examples/manifests/fullstack-app.yaml +0 -42
  22. package/assets/examples/manifests/fullstack-monorepo.yaml +0 -59
  23. package/assets/examples-decomposed/cloud-native-manifest.example.yaml +0 -8
  24. package/assets/examples-decomposed/cloud-native-manifest.md +0 -379
  25. package/assets/examples-decomposed/cloud-native-manifest.specly +0 -60
  26. package/assets/examples-decomposed/docker-compose-manifest.example.yaml +0 -8
  27. package/assets/examples-decomposed/docker-compose-manifest.md +0 -326
  28. package/assets/examples-decomposed/docker-compose-manifest.specly +0 -40
  29. package/assets/examples-decomposed/kubernetes-deployment-manifest.example.yaml +0 -8
  30. package/assets/examples-decomposed/kubernetes-deployment-manifest.md +0 -237
  31. package/assets/examples-decomposed/kubernetes-deployment-manifest.specly +0 -41
  32. package/assets/examples-inference/inference-engine-demo.example.yaml +0 -8
  33. package/assets/examples-inference/inference-engine-demo.md +0 -574
  34. package/assets/examples-inference/inference-engine-demo.specly +0 -216
  35. package/assets/prompts/core/README.md +0 -319
  36. package/assets/prompts/core/standard/default/analyse.prompt.yaml +0 -505
  37. package/assets/prompts/core/standard/default/app-demo.prompt.yaml +0 -233
  38. package/assets/prompts/core/standard/default/behavior.prompt.yaml +0 -157
  39. package/assets/prompts/core/standard/default/create.prompt.yaml +0 -426
  40. package/assets/prompts/core/standard/default/materialise.prompt.yaml +0 -844
  41. package/assets/prompts/core/standard/default/realize.prompt.yaml +0 -611
  42. package/assets/prompts/core/standard/v9/analyse.prompt.yaml +0 -505
  43. package/assets/prompts/core/standard/v9/app-demo.prompt.yaml +0 -233
  44. package/assets/prompts/core/standard/v9/behavior.prompt.yaml +0 -157
  45. package/assets/prompts/core/standard/v9/create.prompt.yaml +0 -426
  46. package/assets/prompts/core/standard/v9/materialise.prompt.yaml +0 -844
  47. package/assets/prompts/core/standard/v9/realize.prompt.yaml +0 -611
  48. package/assets/templates/default/specs/main.specly +0 -65
@@ -1 +1 @@
1
- {"version":3,"file":"behavior-ai-service.d.ts","sourceRoot":"","sources":["../../src/ai/behavior-ai-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAUH,MAAM,WAAW,wBAAwB;IACvC,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwCD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IAExB,uDAAuD;IACvD,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAEW,OAAO,GAAE,wBAA6B;IAQlD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;;;OAKG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAI5C,oDAAoD;IAC9C,gBAAgB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0B5E,oFAAoF;IACpF,UAAU,IAAI,IAAI;IAIlB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,WAAW;CAQpB"}
1
+ {"version":3,"file":"behavior-ai-service.d.ts","sourceRoot":"","sources":["../../src/ai/behavior-ai-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAaH,MAAM,WAAW,wBAAwB;IACvC,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyDD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IAExB,uDAAuD;IACvD,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAEW,OAAO,GAAE,wBAA6B;IAQlD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;;;OAKG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAI5C,oDAAoD;IAC9C,gBAAgB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0B5E,oFAAoF;IACpF,UAAU,IAAI,IAAI;IAIlB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,WAAW;CAQpB"}
@@ -24,18 +24,30 @@ import yaml from 'js-yaml';
24
24
  import { existsSync, readFileSync } from 'fs';
25
25
  import { dirname, join } from 'path';
26
26
  import { fileURLToPath } from 'url';
27
+ import { createRequire } from 'module';
27
28
  import { resolveModel, resolveProviderId } from './model-resolver.js';
28
29
  import { detectInstalledSkill } from './skill-detection.js';
29
- /** Load the structured behavior prompt from engines/assets/prompts/. */
30
+ const require = createRequire(import.meta.url);
31
+ /**
32
+ * Load the structured behavior prompt from `@specverse/assets/prompts/`,
33
+ * falling back to the legacy `engines/assets/prompts/` location for older
34
+ * engine builds (engines ≤ 6.0.2 bundled prompts directly).
35
+ */
30
36
  function loadBehaviorPrompt() {
31
37
  try {
38
+ const candidates = [];
39
+ // 1. Try @specverse/assets first.
40
+ try {
41
+ const pkg = require.resolve('@specverse/assets/package.json');
42
+ candidates.push(join(dirname(pkg), 'prompts', 'core', 'standard', 'v9', 'behavior.prompt.yaml'));
43
+ }
44
+ catch {
45
+ /* not installed — fall through */
46
+ }
47
+ // 2. Legacy engines-bundled fallback.
32
48
  const __filename = fileURLToPath(import.meta.url);
33
49
  const __dirname = dirname(__filename);
34
- // Walk two or three levels up from dist/ai/ or src/ai/ to find assets/prompts
35
- const candidates = [
36
- join(__dirname, '..', '..', 'assets', 'prompts', 'core', 'standard', 'v9', 'behavior.prompt.yaml'),
37
- join(__dirname, '..', '..', '..', 'assets', 'prompts', 'core', 'standard', 'v9', 'behavior.prompt.yaml'),
38
- ];
50
+ candidates.push(join(__dirname, '..', '..', 'assets', 'prompts', 'core', 'standard', 'v9', 'behavior.prompt.yaml'), join(__dirname, '..', '..', '..', 'assets', 'prompts', 'core', 'standard', 'v9', 'behavior.prompt.yaml'));
39
51
  for (const path of candidates) {
40
52
  if (existsSync(path)) {
41
53
  const doc = yaml.load(readFileSync(path, 'utf8'));
@@ -1 +1 @@
1
- {"version":3,"file":"behavior-ai-service.js","sourceRoot":"","sources":["../../src/ai/behavior-ai-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"behavior-ai-service.js","sourceRoot":"","sources":["../../src/ai/behavior-ai-service.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  /**
2
2
  * Prompt Path Resolution for AI Commands
3
- * Supports versioned prompts (v1, v2, v3, ...) and custom paths
3
+ *
4
+ * Prompts now live in @specverse/assets (a content-only leaf package); we
5
+ * resolve there first. Falls back to the legacy __dirname-walk for
6
+ * backwards compatibility with old engine builds that still bundled
7
+ * prompts in engines/assets/prompts/ (engines ≤ 6.0.2).
4
8
  */
5
9
  /**
6
10
  * Resolve prompt version to actual file system path
7
11
  */
8
- export declare function resolvePromptPath(pver: string, basePath?: string): string;
12
+ export declare function resolvePromptPath(pver: string, _basePath?: string): string;
9
13
  /**
10
14
  * Validate that a prompt path exists and contains required prompt files
11
15
  */
@@ -16,7 +20,7 @@ export declare function validatePromptPath(promptPath: string, operation?: strin
16
20
  /**
17
21
  * Get available prompt versions
18
22
  */
19
- export declare function getAvailablePromptVersions(basePath?: string): {
23
+ export declare function getAvailablePromptVersions(_basePath?: string): {
20
24
  version: string;
21
25
  path: string;
22
26
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-loader.d.ts","sourceRoot":"","sources":["../../src/ai/prompt-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAwDzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA0B/G;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CA6D/G"}
1
+ {"version":3,"file":"prompt-loader.d.ts","sourceRoot":"","sources":["../../src/ai/prompt-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA4CH;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA+B1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA+BtC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAyCnD"}
@@ -1,46 +1,62 @@
1
1
  /**
2
2
  * Prompt Path Resolution for AI Commands
3
- * Supports versioned prompts (v1, v2, v3, ...) and custom paths
3
+ *
4
+ * Prompts now live in @specverse/assets (a content-only leaf package); we
5
+ * resolve there first. Falls back to the legacy __dirname-walk for
6
+ * backwards compatibility with old engine builds that still bundled
7
+ * prompts in engines/assets/prompts/ (engines ≤ 6.0.2).
4
8
  */
5
9
  import { resolve, dirname, join } from 'path';
6
10
  import { existsSync, readdirSync } from 'fs';
7
11
  import { fileURLToPath } from 'url';
12
+ import { createRequire } from 'module';
13
+ const require = createRequire(import.meta.url);
8
14
  /**
9
- * Resolve prompt version to actual file system path
15
+ * Resolve the prompts base directory `<assets>/prompts/`.
16
+ *
17
+ * Priority:
18
+ * 1. @specverse/assets package (the new home)
19
+ * 2. Legacy engines/assets/prompts/ (back-compat fallback)
10
20
  */
11
- export function resolvePromptPath(pver, basePath) {
12
- // Get the base directory (CLI directory or provided base path)
13
- const __filename = basePath || fileURLToPath(import.meta.url);
21
+ function resolvePromptsBase() {
22
+ // 1. Try @specverse/assets first.
23
+ try {
24
+ const pkg = require.resolve('@specverse/assets/package.json');
25
+ const assetsBase = join(dirname(pkg), 'prompts');
26
+ if (existsSync(join(assetsBase, 'core', 'standard'))) {
27
+ return assetsBase;
28
+ }
29
+ }
30
+ catch {
31
+ /* @specverse/assets not installed — fall through to legacy path */
32
+ }
33
+ // 2. Fall back to engine-bundled prompts (engines ≤ 6.0.2).
34
+ const __filename = fileURLToPath(import.meta.url);
14
35
  const __dirname = dirname(__filename);
15
- // Find prompts directory — check engine package assets first, then project root
16
- const possiblePromptDirs = [
36
+ const legacyDirs = [
17
37
  resolve(__dirname, '../assets/prompts'), // From src/ to assets/ (development)
18
38
  resolve(__dirname, '../../assets/prompts'), // From dist/ to assets/ (built)
19
39
  resolve(__dirname, '../../../assets/prompts'), // From dist/commands/ to assets/
20
- resolve(__dirname, '../../'), // Legacy: project root with prompts/ subdir
21
- resolve(__dirname, '../../../'),
22
- resolve(__dirname, '../../../../'),
23
40
  ];
24
- let promptsBase = null;
25
- for (const dir of possiblePromptDirs) {
26
- // Check for assets/prompts layout (core/standard/vN inside)
41
+ for (const dir of legacyDirs) {
27
42
  if (existsSync(join(dir, 'core', 'standard'))) {
28
- promptsBase = dir;
29
- break;
30
- }
31
- // Check for legacy project root layout (prompts/core/standard/vN)
32
- if (existsSync(join(dir, 'prompts', 'core', 'standard'))) {
33
- promptsBase = join(dir, 'prompts');
34
- break;
43
+ return dir;
35
44
  }
36
45
  }
46
+ return null;
47
+ }
48
+ /**
49
+ * Resolve prompt version to actual file system path
50
+ */
51
+ export function resolvePromptPath(pver, _basePath) {
52
+ const promptsBase = resolvePromptsBase();
37
53
  if (!promptsBase) {
38
- throw new Error('Could not locate prompts directory. Ensure @specverse/engines assets are installed.');
54
+ throw new Error('Could not locate prompts directory. Ensure @specverse/assets is installed (npm install @specverse/assets).');
39
55
  }
40
56
  // Resolve version to path
41
57
  if (pver === 'default' || pver.match(/^v\d+$/)) {
42
58
  let versionPath = join(promptsBase, 'core/standard', pver);
43
- // Handle 'default' - symlink may not survive npm package installation
59
+ // Handle 'default' symlink may not survive npm package installation
44
60
  if (pver === 'default' && !existsSync(versionPath)) {
45
61
  // Fallback to latest version (v9)
46
62
  const latestVersion = 'v9';
@@ -80,7 +96,12 @@ export function validatePromptPath(promptPath, operation) {
80
96
  }
81
97
  else {
82
98
  // Check for all standard prompt files
83
- const requiredFiles = ['analyse.prompt.yaml', 'create.prompt.yaml', 'materialise.prompt.yaml', 'realize.prompt.yaml'];
99
+ const requiredFiles = [
100
+ 'analyse.prompt.yaml',
101
+ 'create.prompt.yaml',
102
+ 'materialise.prompt.yaml',
103
+ 'realize.prompt.yaml',
104
+ ];
84
105
  for (const file of requiredFiles) {
85
106
  const filePath = join(promptPath, file);
86
107
  if (!existsSync(filePath)) {
@@ -93,55 +114,32 @@ export function validatePromptPath(promptPath, operation) {
93
114
  /**
94
115
  * Get available prompt versions
95
116
  */
96
- export function getAvailablePromptVersions(basePath) {
117
+ export function getAvailablePromptVersions(_basePath) {
97
118
  try {
98
- const versions = [];
99
- // Find prompts using the same resolution as resolvePromptPath
100
- const __filename2 = basePath || fileURLToPath(import.meta.url);
101
- const __dirname2 = dirname(__filename2);
102
- const possiblePromptDirs2 = [
103
- resolve(__dirname2, '../assets/prompts'),
104
- resolve(__dirname2, '../../assets/prompts'),
105
- resolve(__dirname2, '../../../assets/prompts'),
106
- resolve(__dirname2, '../../'),
107
- resolve(__dirname2, '../../../'),
108
- resolve(__dirname2, '../../../../'),
109
- ];
110
- let standardPath = null;
111
- for (const dir of possiblePromptDirs2) {
112
- const candidate = join(dir, 'core', 'standard');
113
- if (existsSync(candidate)) {
114
- standardPath = candidate;
115
- break;
116
- }
117
- const legacy = join(dir, 'prompts', 'core', 'standard');
118
- if (existsSync(legacy)) {
119
- standardPath = legacy;
120
- break;
121
- }
122
- }
123
- if (!standardPath)
119
+ const promptsBase = resolvePromptsBase();
120
+ if (!promptsBase)
121
+ return [];
122
+ const standardPath = join(promptsBase, 'core', 'standard');
123
+ if (!existsSync(standardPath))
124
124
  return [];
125
- if (existsSync(standardPath)) {
126
- const entries = readdirSync(standardPath, { withFileTypes: true });
127
- for (const entry of entries) {
128
- if (entry.isDirectory() && entry.name.match(/^v\d+$/)) {
129
- const versionPath = join(standardPath, entry.name);
130
- const versionNum = entry.name.substring(1); // Remove 'v' prefix
131
- // Determine version description based on version number
132
- let description = `Prompts (${entry.name})`;
133
- if (entry.name === 'v2') {
134
- description = 'Optimized Prompts (v2, 75% token reduction)';
135
- }
136
- else if (entry.name === 'v3') {
137
- description = 'Three-Layer Architecture Prompts (v3)';
138
- }
139
- versions.push({
140
- version: entry.name,
141
- path: versionPath,
142
- name: description
143
- });
125
+ const versions = [];
126
+ const entries = readdirSync(standardPath, { withFileTypes: true });
127
+ for (const entry of entries) {
128
+ if (entry.isDirectory() && entry.name.match(/^v\d+$/)) {
129
+ const versionPath = join(standardPath, entry.name);
130
+ // Determine version description based on version number
131
+ let description = `Prompts (${entry.name})`;
132
+ if (entry.name === 'v2') {
133
+ description = 'Optimized Prompts (v2, 75% token reduction)';
134
+ }
135
+ else if (entry.name === 'v3') {
136
+ description = 'Three-Layer Architecture Prompts (v3)';
144
137
  }
138
+ versions.push({
139
+ version: entry.name,
140
+ path: versionPath,
141
+ name: description,
142
+ });
145
143
  }
146
144
  }
147
145
  // Sort versions by version number
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-loader.js","sourceRoot":"","sources":["../../src/ai/prompt-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-loader.js","sourceRoot":"","sources":["../../src/ai/prompt-loader.ts"],"names":[],"mappings":"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"}
@@ -581,12 +581,23 @@ import { fileURLToPath } from 'url';`,
581
581
  try {
582
582
  const { createRequire } = await import('module');
583
583
  const require = createRequire(import.meta.url);
584
- const enginesPkg = require.resolve('@specverse/engines/package.json');
585
- const canonicalSpec = join(
586
- dirname(enginesPkg),
587
- 'assets', 'templates', 'default', 'specs', 'main.specly'
588
- );
589
- if (existsSync(canonicalSpec)) {
584
+ // Try @specverse/assets first (canonical home post 2026-04-25),
585
+ // fall back to @specverse/engines for older installs.
586
+ const candidates = [];
587
+ try {
588
+ const assetsPkg = require.resolve('@specverse/assets/package.json');
589
+ candidates.push(
590
+ join(dirname(assetsPkg), 'templates', 'default', 'specs', 'main.specly')
591
+ );
592
+ } catch {}
593
+ try {
594
+ const enginesPkg = require.resolve('@specverse/engines/package.json');
595
+ candidates.push(
596
+ join(dirname(enginesPkg), 'assets', 'templates', 'default', 'specs', 'main.specly')
597
+ );
598
+ } catch {}
599
+ const canonicalSpec = candidates.find((p) => existsSync(p));
600
+ if (canonicalSpec) {
590
601
  let content = readFileSync(canonicalSpec, 'utf8');
591
602
  for (const [key, val] of Object.entries(vars)) {
592
603
  content = content.split(key).join(val);
@@ -20,7 +20,7 @@ function generateMCPServer(context) {
20
20
  writeFileSync(join(srcDir, "tools.ts"), generateTools(cliCommands));
21
21
  writeFileSync(join(srcDir, "prompts.ts"), generatePrompts());
22
22
  return `MCP server generated in: ${mcpDir}
23
- ${cliCommands.length} tools, 5 resources, 6 prompts (derived from @specverse/engines/assets/prompts)`;
23
+ ${cliCommands.length} tools, 5 resources, 6 prompts (derived from @specverse/assets/prompts)`;
24
24
  }
25
25
  function resolveSelfVersion() {
26
26
  try {
@@ -130,9 +130,10 @@ function generatePackageJson(version, description) {
130
130
  },
131
131
  dependencies: {
132
132
  "@modelcontextprotocol/sdk": "^1.17.4",
133
- "@specverse/engines": "^6.0.0",
133
+ "@specverse/assets": "^1.0.0",
134
+ "@specverse/engines": "^6.0.3",
134
135
  "@specverse/entities": "^5.1.0",
135
- "@specverse/self": "^5.3.0",
136
+ "@specverse/self": "^5.4.0",
136
137
  "js-yaml": "^4.1.0"
137
138
  },
138
139
  devDependencies: {
@@ -511,7 +512,7 @@ function buildCliReferenceMarkdown(tools) {
511
512
  function generatePrompts() {
512
513
  return `/**
513
514
  * Prompt registry \u2014 reads the canonical workflow prompts from
514
- * @specverse/engines/assets/prompts/core/standard/default/ at startup and
515
+ * @specverse/assets/prompts/core/standard/default/ at startup and
515
516
  * serves them as MCP prompts. Each YAML file (create, analyse, materialise,
516
517
  * realize, behavior, app-demo) becomes one invocable prompt.
517
518
  */
@@ -540,8 +541,8 @@ function resolveEntitiesFile(relative: string): string {
540
541
  return join(dirname(pkg), relative);
541
542
  }
542
543
 
543
- function resolveEnginesDir(relative: string): string {
544
- const pkg = require.resolve('@specverse/engines/package.json');
544
+ function resolveAssetsDir(relative: string): string {
545
+ const pkg = require.resolve('@specverse/assets/package.json');
545
546
  return join(dirname(pkg), relative);
546
547
  }
547
548
 
@@ -558,7 +559,7 @@ const USER_FACING = new Set<string>([
558
559
  ]);
559
560
 
560
561
  function loadPrompts(): Prompt[] {
561
- const promptsDir = resolveEnginesDir('assets/prompts/core/standard/default');
562
+ const promptsDir = resolveAssetsDir('prompts/core/standard/default');
562
563
  const entries = readdirSync(promptsDir).filter(f => f.endsWith('.prompt.yaml'));
563
564
  const prompts: Prompt[] = [];
564
565
  for (const entry of entries) {
@@ -636,12 +636,23 @@ import { fileURLToPath } from 'url';`,
636
636
  try {
637
637
  const { createRequire } = await import('module');
638
638
  const require = createRequire(import.meta.url);
639
- const enginesPkg = require.resolve('@specverse/engines/package.json');
640
- const canonicalSpec = join(
641
- dirname(enginesPkg),
642
- 'assets', 'templates', 'default', 'specs', 'main.specly'
643
- );
644
- if (existsSync(canonicalSpec)) {
639
+ // Try @specverse/assets first (canonical home post 2026-04-25),
640
+ // fall back to @specverse/engines for older installs.
641
+ const candidates = [];
642
+ try {
643
+ const assetsPkg = require.resolve('@specverse/assets/package.json');
644
+ candidates.push(
645
+ join(dirname(assetsPkg), 'templates', 'default', 'specs', 'main.specly')
646
+ );
647
+ } catch {}
648
+ try {
649
+ const enginesPkg = require.resolve('@specverse/engines/package.json');
650
+ candidates.push(
651
+ join(dirname(enginesPkg), 'assets', 'templates', 'default', 'specs', 'main.specly')
652
+ );
653
+ } catch {}
654
+ const canonicalSpec = candidates.find((p) => existsSync(p));
655
+ if (canonicalSpec) {
645
656
  let content = readFileSync(canonicalSpec, 'utf8');
646
657
  for (const [key, val] of Object.entries(vars)) {
647
658
  content = content.split(key).join(val);
@@ -48,7 +48,7 @@ export default function generateMCPServer(context: TemplateContext): string {
48
48
  writeFileSync(join(srcDir, 'tools.ts'), generateTools(cliCommands));
49
49
  writeFileSync(join(srcDir, 'prompts.ts'), generatePrompts());
50
50
 
51
- return `MCP server generated in: ${mcpDir}\n ${cliCommands.length} tools, 5 resources, 6 prompts (derived from @specverse/engines/assets/prompts)`;
51
+ return `MCP server generated in: ${mcpDir}\n ${cliCommands.length} tools, 5 resources, 6 prompts (derived from @specverse/assets/prompts)`;
52
52
  }
53
53
 
54
54
  /**
@@ -208,9 +208,10 @@ function generatePackageJson(version: string, description: string): string {
208
208
  },
209
209
  dependencies: {
210
210
  '@modelcontextprotocol/sdk': '^1.17.4',
211
- '@specverse/engines': '^6.0.0',
211
+ '@specverse/assets': '^1.0.0',
212
+ '@specverse/engines': '^6.0.3',
212
213
  '@specverse/entities': '^5.1.0',
213
- '@specverse/self': '^5.3.0',
214
+ '@specverse/self': '^5.4.0',
214
215
  'js-yaml': '^4.1.0',
215
216
  },
216
217
  devDependencies: {
@@ -602,8 +603,8 @@ function buildCliReferenceMarkdown(tools: CLITool[]): string {
602
603
 
603
604
  /**
604
605
  * Emit prompts.ts — loads the canonical workflow prompts from
605
- * @specverse/engines/assets/prompts/core/standard/default/ at module-init
606
- * time. Each YAML prompt becomes one MCP prompt; the declared
606
+ * @specverse/assets/prompts/core/standard/default/ at module-init time.
607
+ * Each YAML prompt becomes one MCP prompt; the declared
607
608
  * {{template variables}} surface as MCP prompt arguments the client fills.
608
609
  * Schema paths ({{aiSchemaPath}}, {{referenceSchemaPath}},
609
610
  * {{referenceExamplePath}}) are auto-filled with package-relative paths so
@@ -612,7 +613,7 @@ function buildCliReferenceMarkdown(tools: CLITool[]): string {
612
613
  function generatePrompts(): string {
613
614
  return `/**
614
615
  * Prompt registry — reads the canonical workflow prompts from
615
- * @specverse/engines/assets/prompts/core/standard/default/ at startup and
616
+ * @specverse/assets/prompts/core/standard/default/ at startup and
616
617
  * serves them as MCP prompts. Each YAML file (create, analyse, materialise,
617
618
  * realize, behavior, app-demo) becomes one invocable prompt.
618
619
  */
@@ -641,8 +642,8 @@ function resolveEntitiesFile(relative: string): string {
641
642
  return join(dirname(pkg), relative);
642
643
  }
643
644
 
644
- function resolveEnginesDir(relative: string): string {
645
- const pkg = require.resolve('@specverse/engines/package.json');
645
+ function resolveAssetsDir(relative: string): string {
646
+ const pkg = require.resolve('@specverse/assets/package.json');
646
647
  return join(dirname(pkg), relative);
647
648
  }
648
649
 
@@ -659,7 +660,7 @@ const USER_FACING = new Set<string>([
659
660
  ]);
660
661
 
661
662
  function loadPrompts(): Prompt[] {
662
- const promptsDir = resolveEnginesDir('assets/prompts/core/standard/default');
663
+ const promptsDir = resolveAssetsDir('prompts/core/standard/default');
663
664
  const entries = readdirSync(promptsDir).filter(f => f.endsWith('.prompt.yaml'));
664
665
  const prompts: Prompt[] = [];
665
666
  for (const entry of entries) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specverse/engines",
3
- "version": "6.0.1",
3
+ "version": "6.0.4",
4
4
  "description": "SpecVerse toolchain — parser, inference, realize, generators, AI, registry, bundles",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -49,6 +49,7 @@
49
49
  "@ai-sdk/anthropic": "^3.0.71",
50
50
  "@ai-sdk/openai-compatible": "^2.0.41",
51
51
  "@ai-sdk/provider": "^3.0.8",
52
+ "@specverse/assets": "^1.0.0",
52
53
  "@specverse/entities": "^5.1.0",
53
54
  "@specverse/runtime": "^5.0.1",
54
55
  "@specverse/types": "^5.1.0",
@@ -1,36 +0,0 @@
1
- # SpecVerse v3.3 Manifest - Simple Default Mappings Example
2
- #
3
- # This manifest demonstrates the simplest v3.3 approach:
4
- # Using defaultMappings to specify instance factories by category.
5
- #
6
- # Resolution: All instances of a category use the same factory.
7
-
8
- specVersion: "3.3.0"
9
- name: "simple-api-manifest"
10
- description: "Basic REST API with Fastify and PostgreSQL using default mappings"
11
- version: "1.0.0"
12
-
13
- # Link to deployment specification
14
- deployment:
15
- deploymentSource: "./blog-api.specly"
16
- deploymentName: "production"
17
-
18
- # Default instance factories by category (lowest priority)
19
- # Fine-grained factories allow flexible composition
20
- defaultMappings:
21
- controller: "FastifyAPI" # Pure Fastify routes (no ORM coupling)
22
- service: "PrismaORM" # Prisma ORM for data access
23
- storage: "PostgreSQL15" # PostgreSQL database instance
24
-
25
- # Capability-based mappings for cross-cutting concerns
26
- capabilityMappings:
27
- - capability: "validation.runtime"
28
- instanceFactory: "ZodValidation"
29
-
30
- # Global configuration applied to all instance factories
31
- configuration:
32
- environment: "production"
33
- region: "us-east-1"
34
- logging:
35
- level: "info"
36
- format: "json"
@@ -1,55 +0,0 @@
1
- # SpecVerse v3.3 Manifest - Capability Mappings Example
2
- #
3
- # This manifest demonstrates capability-based mapping with pattern matching.
4
- # Different capabilities can be mapped to different instance factories.
5
- #
6
- # Resolution: Matches capability patterns with wildcard support.
7
-
8
- specVersion: "3.3.0"
9
- name: "capability-based-manifest"
10
- description: "API with specialized factories for different capability patterns"
11
- version: "1.0.0"
12
-
13
- deployment:
14
- deploymentSource: "./blog-api.specly"
15
- deploymentName: "production"
16
-
17
- # Default factories (used when no capability match found)
18
- defaultMappings:
19
- controller: "FastifyPrismaAPI"
20
- storage: "PostgreSQL15"
21
-
22
- # Capability-based mappings (medium priority)
23
- # Overrides defaults when capability pattern matches
24
- capabilityMappings:
25
- # REST API endpoints use Fastify
26
- - capability: "api.rest"
27
- instanceFactory: "FastifyPrismaAPI"
28
- version: "^1.0.0"
29
-
30
- # WebSocket capabilities use specialized factory
31
- - capability: "api.websocket"
32
- instanceFactory: "FastifyWebSocketAPI"
33
- version: "^1.0.0"
34
-
35
- # Reporting endpoints get specialized configuration
36
- - capability: "api.rest.reports"
37
- instanceFactory: "ReportingAPI"
38
- configuration:
39
- caching: true
40
- timeout: 60000
41
-
42
- # Database storage uses PostgreSQL
43
- - capability: "storage.database"
44
- instanceFactory: "PostgreSQL15"
45
-
46
- # Cache capabilities use Redis
47
- - capability: "storage.cache"
48
- instanceFactory: "Redis7"
49
-
50
- # Validation uses Zod
51
- - capability: "validation.runtime"
52
- instanceFactory: "ZodValidation"
53
-
54
- configuration:
55
- environment: "production"