@specverse/engines 5.2.0 → 6.0.1

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 (37) hide show
  1. package/assets/prompts/core/standard/default/analyse.prompt.yaml +12 -3
  2. package/assets/prompts/core/standard/default/behavior.prompt.yaml +37 -30
  3. package/assets/prompts/core/standard/default/create.prompt.yaml +11 -3
  4. package/assets/prompts/core/standard/v9/analyse.prompt.yaml +12 -3
  5. package/assets/prompts/core/standard/v9/behavior.prompt.yaml +37 -30
  6. package/assets/prompts/core/standard/v9/create.prompt.yaml +11 -3
  7. package/dist/ai/behavior-ai-service.d.ts +35 -28
  8. package/dist/ai/behavior-ai-service.d.ts.map +1 -1
  9. package/dist/ai/behavior-ai-service.js +95 -128
  10. package/dist/ai/behavior-ai-service.js.map +1 -1
  11. package/dist/ai/index.d.ts +26 -26
  12. package/dist/ai/index.d.ts.map +1 -1
  13. package/dist/ai/index.js +40 -29
  14. package/dist/ai/index.js.map +1 -1
  15. package/dist/ai/model-resolver.d.ts +15 -0
  16. package/dist/ai/model-resolver.d.ts.map +1 -0
  17. package/dist/ai/model-resolver.js +87 -0
  18. package/dist/ai/model-resolver.js.map +1 -0
  19. package/dist/ai/providers/claude-cli.d.ts +25 -0
  20. package/dist/ai/providers/claude-cli.d.ts.map +1 -0
  21. package/dist/ai/providers/claude-cli.js +187 -0
  22. package/dist/ai/providers/claude-cli.js.map +1 -0
  23. package/dist/ai/providers/index.d.ts +8 -5
  24. package/dist/ai/providers/index.d.ts.map +1 -1
  25. package/dist/ai/providers/index.js +7 -5
  26. package/dist/ai/providers/index.js.map +1 -1
  27. package/dist/ai/providers/stub.d.ts +15 -0
  28. package/dist/ai/providers/stub.d.ts.map +1 -0
  29. package/dist/ai/providers/stub.js +64 -0
  30. package/dist/ai/providers/stub.js.map +1 -0
  31. package/dist/ai/skill-detection.d.ts +5 -0
  32. package/dist/ai/skill-detection.d.ts.map +1 -0
  33. package/dist/ai/skill-detection.js +27 -0
  34. package/dist/ai/skill-detection.js.map +1 -0
  35. package/dist/libs/instance-factories/tools/templates/mcp/mcp-server-generator.js +2 -2
  36. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +2 -2
  37. package/package.json +8 -3
@@ -1,184 +1,143 @@
1
1
  /**
2
- * Behavior AI Service — session-based Claude conversation for generating
3
- * TypeScript function bodies for unmatched behavior steps.
2
+ * Behavior AI Service — generates pure TypeScript function bodies for
3
+ * behavior steps that weren't matched by the realize engine's convention
4
+ * patterns.
4
5
  *
5
- * Architecture (mirrors specverse-app-demo/src/ai/ai-service.ts):
6
- * - First call: spawns Claude with --session-id <uuid> --system-prompt <prompt>
7
- * - Subsequent calls: --resume <uuid> for cached context (98% token savings)
8
- * - All steps for a controller share one session — Claude builds understanding
9
- * of the spec across calls, generating coherent code
10
- * - Loads system prompt from assets/prompts/core/standard/v9/behavior.prompt.yaml
6
+ * Architecture (post AI-SDK replatform, 2026-04):
7
+ * - Delegates to the Vercel AI SDK via the model resolver. Provider choice
8
+ * is driven by SPECVERSE_AI_PROVIDER (claude-cli | anthropic |
9
+ * openai-compatible | stub) with sensible defaults per environment.
10
+ * - Claude-CLI provider preserves the Max-subscription zero-cost path
11
+ * (spawn claude --print --session-id/--resume). API provider uses
12
+ * Anthropic prompt caching for equivalent savings.
13
+ * - When claude-cli is active AND the SpecVerse skill is installed,
14
+ * Claude Code auto-loads the skill — we skip the fullContext block
15
+ * (saves ~2K tokens per session init).
16
+ * - For providers that don't have skill auto-load (anthropic, openai-
17
+ * compatible), we include the fullContext block in the system prompt
18
+ * so the model has the same grounding.
11
19
  *
12
20
  * Used by ai-behaviors-generator at realize time.
13
21
  */
14
- import { spawn, execSync } from 'child_process';
15
- import { randomUUID } from 'crypto';
22
+ import { generateText } from 'ai';
23
+ import yaml from 'js-yaml';
16
24
  import { existsSync, readFileSync } from 'fs';
17
- import { join, dirname } from 'path';
25
+ import { dirname, join } from 'path';
18
26
  import { fileURLToPath } from 'url';
19
- import yaml from 'js-yaml';
20
- /**
21
- * Load behavior prompt from engines/assets/prompts/.
22
- */
27
+ import { resolveModel, resolveProviderId } from './model-resolver.js';
28
+ import { detectInstalledSkill } from './skill-detection.js';
29
+ /** Load the structured behavior prompt from engines/assets/prompts/. */
23
30
  function loadBehaviorPrompt() {
24
31
  try {
25
- // Find the engines package root by walking up from this file
26
32
  const __filename = fileURLToPath(import.meta.url);
27
33
  const __dirname = dirname(__filename);
28
- // dist/ai/behavior-ai-service.js or src/ai/behavior-ai-service.ts
29
- // Walk up to find assets/prompts
34
+ // Walk two or three levels up from dist/ai/ or src/ai/ to find assets/prompts
30
35
  const candidates = [
31
36
  join(__dirname, '..', '..', 'assets', 'prompts', 'core', 'standard', 'v9', 'behavior.prompt.yaml'),
32
37
  join(__dirname, '..', '..', '..', 'assets', 'prompts', 'core', 'standard', 'v9', 'behavior.prompt.yaml'),
33
38
  ];
34
39
  for (const path of candidates) {
35
40
  if (existsSync(path)) {
36
- const content = yaml.load(readFileSync(path, 'utf8'));
37
- const role = content?.system?.role || '';
38
- const context = content?.system?.context || '';
39
- const userTemplate = content?.user?.template || '';
41
+ const doc = yaml.load(readFileSync(path, 'utf8'));
40
42
  return {
41
- system: `${role}\n\n${context}`.trim(),
42
- userTemplate,
43
+ role: (doc?.system?.role ?? '').trim(),
44
+ minimalContext: (doc?.system?.minimalContext ?? '').trim(),
45
+ fullContext: (doc?.system?.fullContext ?? '').trim(),
46
+ userTemplate: (doc?.user?.template ?? '').trim(),
43
47
  };
44
48
  }
45
49
  }
46
50
  }
47
51
  catch {
48
- // Fall through to default
52
+ /* fall through to null — caller provides sensible defaults */
49
53
  }
50
54
  return null;
51
55
  }
52
- const DEFAULT_SYSTEM_PROMPT = `You are a SpecVerse behavior code generator.
53
- Generate TypeScript function bodies for behavior steps that don't match convention patterns.
54
- Use the global \`prisma\` client. Output only the function body, no fences, no explanation.`;
55
- const DEFAULT_USER_TEMPLATE = `Generate a TypeScript function body for: "{{step}}"
56
- Context: {{modelName}}.{{operationName}}, parameters: {{parameterNames}}
57
- Output ONLY the function body code.`;
56
+ const DEFAULT_ROLE = 'You are a SpecVerse behavior code generator. Produce pure TypeScript function bodies.';
57
+ const DEFAULT_MINIMAL_CONTEXT = 'Output ONLY the function body. No imports, no database access, no event publishing. Return a plain value. Throw Error("...") on failure.';
58
58
  /**
59
- * Session-based AI service for generating behavior implementations.
59
+ * Service class kept for API compatibility with ai-behaviors-generator.
60
+ * Internally delegates to the AI SDK via the model resolver.
60
61
  */
61
62
  export class BehaviorAIService {
62
- claudePath;
63
63
  model;
64
+ providerId;
65
+ prompt;
66
+ system;
64
67
  timeout;
65
- sessionId = null;
66
- initialized = false;
67
- currentProcess = null;
68
- systemPrompt;
69
- userTemplate;
70
- constructor(options = {}) {
71
- this.claudePath = options.claudePath || this.detectClaudePath();
72
- this.model = options.model || null;
73
- this.timeout = options.timeout || 60000;
74
- const prompt = loadBehaviorPrompt();
75
- this.systemPrompt = prompt?.system || DEFAULT_SYSTEM_PROMPT;
76
- this.userTemplate = prompt?.userTemplate || DEFAULT_USER_TEMPLATE;
68
+ /** Non-null after generateBehavior() succeeds once. */
69
+ get isAvailable() {
70
+ return this.providerId !== 'stub';
77
71
  }
78
- detectClaudePath() {
79
- const home = process.env.HOME || '';
80
- const candidates = [
81
- join(home, '.claude', 'local', 'claude'),
82
- 'claude',
83
- ];
84
- for (const candidate of candidates) {
85
- if (candidate === 'claude')
86
- return candidate;
87
- if (existsSync(candidate))
88
- return candidate;
89
- }
90
- return 'claude';
72
+ constructor(options = {}) {
73
+ this.model = resolveModel({ model: options.model });
74
+ this.providerId = resolveProviderId();
75
+ this.prompt = loadBehaviorPrompt();
76
+ this.timeout = options.timeout ?? 120_000;
77
+ this.system = this.assembleSystemPrompt();
91
78
  }
92
79
  /**
93
- * Check if Claude CLI is available.
80
+ * Build the system prompt. When the active provider can auto-load the
81
+ * SpecVerse skill (claude-cli + installed skill), we emit role +
82
+ * minimalContext only. Otherwise we include fullContext for grounding.
94
83
  */
95
- get isAvailable() {
96
- try {
97
- execSync(`${this.claudePath} --version`, { stdio: 'ignore', timeout: 5000 });
98
- return true;
99
- }
100
- catch {
101
- return false;
84
+ assembleSystemPrompt() {
85
+ const role = this.prompt?.role || DEFAULT_ROLE;
86
+ const minimal = this.prompt?.minimalContext || DEFAULT_MINIMAL_CONTEXT;
87
+ const full = this.prompt?.fullContext || '';
88
+ const skillAutoLoaded = this.providerId === 'claude-cli' && detectInstalledSkill().found;
89
+ if (skillAutoLoaded) {
90
+ return `${role}\n\n${minimal}`;
102
91
  }
92
+ return full ? `${role}\n\n${minimal}\n\n${full}` : `${role}\n\n${minimal}`;
103
93
  }
104
94
  /**
105
- * Start a new session for a controller. All step generations within the
106
- * controller will share this session, accumulating spec context.
95
+ * Start a new session for a controller. Session semantics are now owned
96
+ * by the provider for claude-cli that's the spawn-with-session-id
97
+ * mechanism; for anthropic API it's the prompt-cache marker. We just
98
+ * record a no-op for callers that expect a session id to log.
107
99
  */
108
100
  startSession(controllerName) {
109
- this.sessionId = randomUUID();
110
- this.initialized = false;
111
- return this.sessionId;
101
+ return `${controllerName}-${Date.now()}`;
112
102
  }
113
- /**
114
- * Generate a function body for a behavior step.
115
- * First call creates the session with system prompt; subsequent calls resume.
116
- */
103
+ /** Generate a function body for a behavior step. */
117
104
  async generateBehavior(ctx) {
118
- if (!this.sessionId) {
119
- this.startSession(ctx.modelName);
120
- }
121
105
  if (!this.isAvailable)
122
106
  return null;
123
107
  const userPrompt = this.buildUserPrompt(ctx);
124
- const args = ['--print'];
125
- if (!this.initialized) {
126
- args.push('--session-id', this.sessionId);
127
- args.push('--system-prompt', this.systemPrompt);
108
+ try {
109
+ const result = await generateText({
110
+ model: this.model,
111
+ system: this.system,
112
+ prompt: userPrompt,
113
+ abortSignal: AbortSignal.timeout(this.timeout),
114
+ // Anthropic prompt caching: mark the system message as cacheable
115
+ // so subsequent calls within a cache window get the 90% discount.
116
+ // Other providers ignore this.
117
+ providerOptions: {
118
+ anthropic: {
119
+ cacheControl: { type: 'ephemeral' },
120
+ },
121
+ },
122
+ });
123
+ return this.extractCode(result.text);
128
124
  }
129
- else {
130
- args.push('--resume', this.sessionId);
125
+ catch {
126
+ return null;
131
127
  }
132
- if (this.model)
133
- args.push('--model', this.model);
134
- args.push('-p', userPrompt);
135
- return new Promise((resolve) => {
136
- const proc = spawn(this.claudePath, args, {
137
- stdio: ['ignore', 'pipe', 'pipe'],
138
- env: { ...process.env },
139
- });
140
- this.currentProcess = proc;
141
- let output = '';
142
- const timer = setTimeout(() => {
143
- proc.kill();
144
- resolve(null);
145
- }, this.timeout);
146
- proc.stdout?.on('data', (data) => { output += data.toString(); });
147
- proc.on('close', (code) => {
148
- clearTimeout(timer);
149
- this.currentProcess = null;
150
- if (code !== 0) {
151
- resolve(null);
152
- return;
153
- }
154
- this.initialized = true;
155
- resolve(this.extractCode(output));
156
- });
157
- proc.on('error', () => {
158
- clearTimeout(timer);
159
- this.currentProcess = null;
160
- resolve(null);
161
- });
162
- });
163
128
  }
164
- /**
165
- * End the current session.
166
- */
129
+ /** End the current session — no-op now that session state lives in the provider. */
167
130
  endSession() {
168
- if (this.currentProcess) {
169
- this.currentProcess.kill();
170
- this.currentProcess = null;
171
- }
172
- this.sessionId = null;
173
- this.initialized = false;
131
+ /* nothing to do — provider manages its own lifecycle */
174
132
  }
175
133
  buildUserPrompt(ctx) {
134
+ const template = this.prompt?.userTemplate || DEFAULT_USER_TEMPLATE;
176
135
  const inputVars = ctx.parameterNames.length > 0 ? ctx.parameterNames.join(', ') : 'none';
177
136
  const inputSignature = ctx.parameterNames.length > 0
178
- ? `{ ${ctx.parameterNames.map(n => `${n}: any`).join('; ')} }`
137
+ ? `{ ${ctx.parameterNames.map((n) => `${n}: any`).join('; ')} }`
179
138
  : 'Record<string, never>';
180
139
  const returnType = ctx.returnType || 'any';
181
- return this.userTemplate
140
+ return template
182
141
  .replace(/\{\{step\}\}/g, ctx.step)
183
142
  .replace(/\{\{modelName\}\}/g, ctx.modelName)
184
143
  .replace(/\{\{operationName\}\}/g, ctx.operationName)
@@ -191,15 +150,23 @@ export class BehaviorAIService {
191
150
  }
192
151
  extractCode(output) {
193
152
  let code = output.trim();
194
- // Strip markdown fences
195
153
  const codeBlock = code.match(/```(?:typescript|ts|javascript|js)?\n([\s\S]*?)```/);
196
154
  if (codeBlock)
197
155
  code = codeBlock[1].trim();
198
- // Strip "function ... { ... }" wrapper if model included it
199
156
  const funcMatch = code.match(/^(?:export\s+)?(?:async\s+)?function\s+\w+\([^)]*\)[^{]*\{([\s\S]*)\}\s*$/);
200
157
  if (funcMatch)
201
158
  code = funcMatch[1].trim();
202
159
  return code || null;
203
160
  }
204
161
  }
162
+ const DEFAULT_USER_TEMPLATE = `Generate a PURE TypeScript function body for this SpecVerse behavior step.
163
+
164
+ Step: "{{step}}"
165
+
166
+ Function: async function {{functionName}}(input: {{inputSignature}}): Promise<{{returnType}}>
167
+
168
+ Available: {{inputVars}}
169
+ Available Prisma models (types only): {{availableModels}}
170
+
171
+ Output ONLY the function body (between { and }). No markdown fences.`;
205
172
  //# sourceMappingURL=behavior-ai-service.js.map
@@ -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,27 +1,37 @@
1
1
  /**
2
- * SpecVerse AI Module
3
- * Main export point for all AI functionality
2
+ * SpecVerse AI Module — public surface.
3
+ *
4
+ * Post AI-SDK replatform (2026-04, engines 6.0):
5
+ * - Provider abstraction is Vercel AI SDK (`ai` + `@ai-sdk/*`).
6
+ * - SpecVerse-specific: model-resolver picks claude-cli | anthropic |
7
+ * openai-compatible | stub based on SPECVERSE_AI_PROVIDER.
8
+ * - Behaviour generation at realize time delegates to generateText()
9
+ * through the resolved model; skill-aware system-prompt assembly.
10
+ *
11
+ * What was removed in 6.0:
12
+ * - LLMProvider, LLMProviderRegistry, ProviderFactory
13
+ * - OpenAIProvider, AnthropicProvider, InteractiveProvider
14
+ * - SpecVerseOrchestrator, InteractiveWorkflow (dead code, no consumers)
15
+ * - ConfigLoader / SpecVerseConfig (consumed only by the orchestrator)
16
+ * - config-loader.ts (no consumers)
17
+ * Consumers on those APIs should migrate to resolveModel() + generateText()
18
+ * from 'ai'. See docs/guides/SPECVERSE-AI.md.
4
19
  */
5
20
  export * from './commands/index.js';
6
21
  export * from './core/ecosystem-prompt-manager.js';
7
22
  export * from './types/index.js';
8
- export * from './config-loader.js';
9
23
  export { SessionManager } from './session/session-manager.js';
10
- export type { SessionInfo, JobRequest, JobStatus, CreateSessionOptions } from './session/types.js';
24
+ export type { SessionInfo, JobRequest, JobStatus, CreateSessionOptions, } from './session/types.js';
11
25
  export { BehaviorAIService } from './behavior-ai-service.js';
12
26
  export type { BehaviorAIServiceOptions, BehaviorGenerateContext } from './behavior-ai-service.js';
13
27
  export { regenerateBehavior } from './behavior-regenerate.js';
14
28
  export type { RegenerateBehaviorOptions, RegenerateBehaviorResult } from './behavior-regenerate.js';
15
- export { LLMProvider, LLMProviderRegistry } from './providers/llm-provider.js';
16
- export type { LLMMessage, LLMCompletionOptions, LLMCompletionResponse, LLMProviderConfig, LLMStreamChunk } from './providers/llm-provider.js';
17
- export { ProviderFactory } from './providers/provider-factory.js';
18
- export { OpenAIProvider } from './providers/openai-provider.js';
19
- export { AnthropicProvider } from './providers/anthropic-provider.js';
20
- export { InteractiveProvider } from './providers/interactive-provider.js';
21
- export { SpecVerseOrchestrator } from './orchestrator/specverse-orchestrator.js';
22
- export { InteractiveWorkflow } from './orchestrator/interactive-workflow.js';
23
- export { ConfigLoader, configLoader } from './config/index.js';
24
- export type { SpecVerseConfig } from './config/index.js';
29
+ export { resolveModel, resolveProviderId, describeActiveProvider } from './model-resolver.js';
30
+ export type { ProviderId, ResolveModelOptions } from './model-resolver.js';
31
+ export { claudeCli, isClaudeCliAvailable, detectClaudePath } from './providers/claude-cli.js';
32
+ export type { ClaudeCliOptions } from './providers/claude-cli.js';
33
+ export { stubModel } from './providers/stub.js';
34
+ export { detectInstalledSkill } from './skill-detection.js';
25
35
  import type { SpecVerseEngine, EngineInfo } from '@specverse/types';
26
36
  export interface AIEngine extends SpecVerseEngine {
27
37
  generatePrompt(spec: any, options?: any): Promise<string>;
@@ -31,17 +41,11 @@ export interface AIEngine extends SpecVerseEngine {
31
41
  generateBehavior(step: string, context: BehaviorGenContext): Promise<string | null>;
32
42
  }
33
43
  export interface BehaviorGenContext {
34
- /** The model name (e.g., "Order") */
35
44
  modelName: string;
36
- /** The operation/action name (e.g., "processOrder") */
37
45
  operationName: string;
38
- /** Function name to generate (e.g., "applyDiscountBasedOnLoyaltyTier") */
39
46
  functionName: string;
40
- /** Parameter names from the action (e.g., ['orderId', 'customerId']) */
41
47
  parameterNames: string[];
42
- /** Available models in the spec for context */
43
48
  availableModels?: string[];
44
- /** The full spec for context */
45
49
  spec?: any;
46
50
  }
47
51
  declare class SpecVerseAIEngine implements AIEngine {
@@ -51,18 +55,14 @@ declare class SpecVerseAIEngine implements AIEngine {
51
55
  private manager;
52
56
  initialize(config?: {
53
57
  catalogPath?: string;
54
- provider?: string;
55
58
  }): Promise<void>;
56
59
  getInfo(): EngineInfo;
57
60
  generatePrompt(spec: any, _options?: any): Promise<string>;
58
61
  suggest(spec: any, _context?: string): Promise<any[]>;
59
62
  /**
60
63
  * Generate a TypeScript function body for an unmatched behavior step.
61
- * Delegates to BehaviorAIService which holds a session-based conversation
62
- * with Claude (mirrors app-demo's runtime AI guard generation).
63
- *
64
- * For best results, callers should reuse the same BehaviorAIService instance
65
- * across multiple steps in a controller — the conversation accumulates context.
64
+ * Delegates to BehaviorAIService which resolves the active provider
65
+ * (claude-cli / anthropic / openai-compatible / stub) based on env.
66
66
  */
67
67
  generateBehavior(step: string, context: BehaviorGenContext): Promise<string | null>;
68
68
  template(operation: string, options?: any): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
package/dist/ai/index.js CHANGED
@@ -1,32 +1,52 @@
1
1
  /**
2
- * SpecVerse AI Module
3
- * Main export point for all AI functionality
2
+ * SpecVerse AI Module — public surface.
3
+ *
4
+ * Post AI-SDK replatform (2026-04, engines 6.0):
5
+ * - Provider abstraction is Vercel AI SDK (`ai` + `@ai-sdk/*`).
6
+ * - SpecVerse-specific: model-resolver picks claude-cli | anthropic |
7
+ * openai-compatible | stub based on SPECVERSE_AI_PROVIDER.
8
+ * - Behaviour generation at realize time delegates to generateText()
9
+ * through the resolved model; skill-aware system-prompt assembly.
10
+ *
11
+ * What was removed in 6.0:
12
+ * - LLMProvider, LLMProviderRegistry, ProviderFactory
13
+ * - OpenAIProvider, AnthropicProvider, InteractiveProvider
14
+ * - SpecVerseOrchestrator, InteractiveWorkflow (dead code, no consumers)
15
+ * - ConfigLoader / SpecVerseConfig (consumed only by the orchestrator)
16
+ * - config-loader.ts (no consumers)
17
+ * Consumers on those APIs should migrate to resolveModel() + generateText()
18
+ * from 'ai'. See docs/guides/SPECVERSE-AI.md.
4
19
  */
20
+ // Commands — prompt-text generators for `spv ai {enhance,fill,suggest,template}`.
5
21
  export * from './commands/index.js';
22
+ // Ecosystem prompt manager — used internally by enhance/suggest to surface
23
+ // library hints.
6
24
  export * from './core/ecosystem-prompt-manager.js';
25
+ // Types.
7
26
  export * from './types/index.js';
8
- export * from './config-loader.js';
27
+ // Sessions tracked job queue for multi-step spec generation.
9
28
  export { SessionManager } from './session/session-manager.js';
10
- // Behavior AI service — session-based Claude conversation for realize-time code generation
29
+ // Behaviour generation — session-aware, provider-agnostic LLM call for
30
+ // unmatched behavior steps. Used by ai-behaviors-generator at realize time.
11
31
  export { BehaviorAIService } from './behavior-ai-service.js';
12
32
  // Regenerate a single owner's AI behaviors file on demand.
13
33
  // Used by `specverse ai regenerate <Owner.fn>`.
14
34
  export { regenerateBehavior } from './behavior-regenerate.js';
15
- // ProvidersLLM execution layer
16
- export { LLMProvider, LLMProviderRegistry } from './providers/llm-provider.js';
17
- export { ProviderFactory } from './providers/provider-factory.js';
18
- export { OpenAIProvider } from './providers/openai-provider.js';
19
- export { AnthropicProvider } from './providers/anthropic-provider.js';
20
- export { InteractiveProvider } from './providers/interactive-provider.js';
21
- // Orchestratormulti-step workflow engine
22
- export { SpecVerseOrchestrator } from './orchestrator/specverse-orchestrator.js';
23
- export { InteractiveWorkflow } from './orchestrator/interactive-workflow.js';
24
- // Config provider and workflow configuration
25
- export { ConfigLoader, configLoader } from './config/index.js';
35
+ // Model resolver pick a LanguageModelV3 from SPECVERSE_AI_PROVIDER env.
36
+ export { resolveModel, resolveProviderId, describeActiveProvider } from './model-resolver.js';
37
+ // Custom providers thin wrappers around claude CLI and no-op stub. Most
38
+ // consumers should use resolveModel() rather than calling these directly.
39
+ export { claudeCli, isClaudeCliAvailable, detectClaudePath } from './providers/claude-cli.js';
40
+ export { stubModel } from './providers/stub.js';
41
+ // Skill detection true if the SpecVerse skill is installed in a location
42
+ // Claude Code will auto-load. Used by behavior-ai-service to decide whether
43
+ // to skip the fullContext block in the system prompt.
44
+ export { detectInstalledSkill } from './skill-detection.js';
45
+ import { BehaviorAIService } from './behavior-ai-service.js';
26
46
  class SpecVerseAIEngine {
27
47
  name = 'ai';
28
- version = '3.5.2';
29
- capabilities = ['ai-prompts', 'ai-suggestions', 'ai-templates', 'ai-orchestration', 'ai-execution'];
48
+ version = '6.0.0';
49
+ capabilities = ['ai-prompts', 'ai-suggestions', 'ai-templates', 'ai-behaviour'];
30
50
  manager = null;
31
51
  async initialize(config) {
32
52
  try {
@@ -52,7 +72,6 @@ class SpecVerseAIEngine {
52
72
  if (component.description)
53
73
  lines.push(`\n${component.description}`);
54
74
  lines.push('');
55
- // Models
56
75
  const models = component.models || [];
57
76
  if (models.length > 0) {
58
77
  lines.push(`### Models (${models.length})`);
@@ -81,7 +100,6 @@ class SpecVerseAIEngine {
81
100
  lines.push('');
82
101
  }
83
102
  }
84
- // Controllers
85
103
  const controllers = component.controllers || [];
86
104
  if (controllers.length > 0) {
87
105
  lines.push(`### Controllers (${controllers.length})`);
@@ -90,7 +108,6 @@ class SpecVerseAIEngine {
90
108
  }
91
109
  lines.push('');
92
110
  }
93
- // Services
94
111
  const services = component.services || [];
95
112
  if (services.length > 0) {
96
113
  lines.push(`### Services (${services.length})`);
@@ -104,7 +121,6 @@ class SpecVerseAIEngine {
104
121
  }
105
122
  lines.push('');
106
123
  }
107
- // Events
108
124
  const events = component.events || [];
109
125
  if (events.length > 0) {
110
126
  lines.push(`### Events (${events.length})`);
@@ -117,7 +133,7 @@ class SpecVerseAIEngine {
117
133
  lines.push('## Implementation Guidelines');
118
134
  lines.push('');
119
135
  lines.push('1. Create database models matching the attribute and relationship specifications');
120
- lines.push('2. Implement CRUD controllers for each controller listed');
136
+ lines.push('2. Implement CURVED controllers for each controller listed');
121
137
  lines.push('3. Add service methods as specified, with proper error handling');
122
138
  lines.push('4. Wire event handlers for cross-model communication');
123
139
  lines.push('5. Follow the relationship types: belongsTo (FK on this model), hasMany (FK on related model), hasOne, manyToMany');
@@ -130,15 +146,11 @@ class SpecVerseAIEngine {
130
146
  }
131
147
  /**
132
148
  * Generate a TypeScript function body for an unmatched behavior step.
133
- * Delegates to BehaviorAIService which holds a session-based conversation
134
- * with Claude (mirrors app-demo's runtime AI guard generation).
135
- *
136
- * For best results, callers should reuse the same BehaviorAIService instance
137
- * across multiple steps in a controller — the conversation accumulates context.
149
+ * Delegates to BehaviorAIService which resolves the active provider
150
+ * (claude-cli / anthropic / openai-compatible / stub) based on env.
138
151
  */
139
152
  async generateBehavior(step, context) {
140
153
  try {
141
- const { BehaviorAIService } = await import('./behavior-ai-service.js');
142
154
  const service = new BehaviorAIService();
143
155
  if (!service.isAvailable)
144
156
  return null;
@@ -186,7 +198,6 @@ class SpecVerseAIEngine {
186
198
  return lines.join('\n');
187
199
  }
188
200
  catch (error) {
189
- // Template loading failed (prompts not available) — return a useful default
190
201
  return `# Template: ${operation}\n\nPrompt templates are not available. Install prompts with: specverse init\n\nError: ${error instanceof Error ? error.message : String(error)}`;
191
202
  }
192
203
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}