exai 1.1.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,9 +25,11 @@ npm install && npm run bundle
25
25
  Get an API key from [openrouter.ai/keys](https://openrouter.ai/keys), then either:
26
26
 
27
27
  ```bash
28
- export OPENROUTER_API_KEY="sk-or-v1-..."
28
+ export EXAI_OPENROUTER_APIKEY="sk-or-v1-..."
29
29
  ```
30
30
 
31
+ `OPENROUTER_API_KEY` is also accepted for backward compatibility.
32
+
31
33
  Or use a config file:
32
34
 
33
35
  ```bash
@@ -52,7 +54,7 @@ One file controls everything. Generate it with `exai init`.
52
54
  "direction": "TB",
53
55
  "spacing": 50,
54
56
 
55
- "context": ["./src"],
57
+ "context": ["."],
56
58
  "exclude": ["dist", "coverage", "*.lock"],
57
59
  "allowTestFiles": false,
58
60
  "maxFileSize": 65536,
@@ -104,13 +106,34 @@ exai init [path]
104
106
 
105
107
  ## DSL Syntax
106
108
 
109
+ Directive-style DSL:
110
+
107
111
  ```
108
- (Start) -> [Process] -> {Decision?}
109
- {Decision?} -> "yes" -> [[Save to DB]] -> (End)
110
- {Decision?} -> "no" -> [Retry] -> (Start)
112
+ @direction TB
113
+ @spacing 60
114
+
115
+ @node user user "End User"
116
+ @node api orchestrator "API Gateway" bg:#ffe3e3 stroke:#c92a2a size:18 font:2
117
+ @node auth service "Auth Service" bg:#e5dbff stroke:#7048e8
118
+ @node db database "Users DB" bg:#d3f9d8 stroke:#2f9e44
119
+
120
+ @edge user api "calls"
121
+ @edge api auth "validates token" color:#495057 width:2
122
+ @edge auth db "reads/writes" dashed color:#2f9e44 arrow:triangle
123
+
124
+ @group core "Core Services" nodes:api,auth,db stroke:#868e96 dashed padding:24
111
125
  ```
112
126
 
113
- `[rect]` `{diamond}` `(ellipse)` `[[database]]` `->` `-->` `-> "label" ->`
127
+ `@node <id> <type-or-kind> "<label>"`
128
+ `@edge <fromId> <toId> ["label"] [dashed] [style...]`
129
+ `@group <id> "<label>" nodes:<id,id,...> [style...]`
130
+
131
+ Common kinds: `user`, `frontend`, `backend`, `service`, `api`, `worker`, `database`, `storage`, `queue`, `cache`, `external`, `orchestrator`, `decision`.
132
+
133
+ Common style tokens:
134
+ - Node: `bg:#hex`, `stroke:#hex`, `size:18`, `font:2|virgil|helvetica|cascadia|excalifont`, `text:#hex`
135
+ - Edge: `color:#hex`, `width:3`, `arrow:arrow|bar|dot|triangle|null`, `start:...`, `dashed|dotted|solid`
136
+ - Group: `stroke:#hex`, `bg:#hex`, `padding:24`, `dashed|solid|dotted`
114
137
 
115
138
  ## License
116
139
 
@@ -48,7 +48,7 @@ export interface CliConfig {
48
48
  * Load and validate a CLI config file.
49
49
  *
50
50
  * - Resolves configPath relative to CWD
51
- * - Resolves `context` paths relative to the config file's directory
51
+ * - Absolute context paths are used as-is; relative paths resolve from the config file's directory
52
52
  * - Throws on missing file or invalid JSON
53
53
  */
54
54
  export declare function loadConfig(configPath: string): CliConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAID,MAAM,WAAW,SAAS;IAExB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,qBAAqB,CAAC;IAGxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0ED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAyExD;AAID;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAyC7B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,WAAW,qBAAqB;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACxC;AAID,MAAM,WAAW,SAAS;IAEtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,qBAAqB,CAAC;IAGxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AA0ED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAyExD;AAID;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAyC7B,CAAC"}
package/dist/ai/config.js CHANGED
@@ -12,7 +12,7 @@
12
12
  * All fields optional. Priority: CLI flags > config file > env vars > hardcoded defaults.
13
13
  */
14
14
  import { readFileSync, existsSync } from 'fs';
15
- import { resolve, dirname } from 'path';
15
+ import { resolve, dirname, isAbsolute } from 'path';
16
16
  // ── Validation helpers ──────────────────────────────────────────────────────
17
17
  const KNOWN_KEYS = new Set([
18
18
  // AI / LLM
@@ -87,7 +87,7 @@ function parseCompressOptions(obj) {
87
87
  * Load and validate a CLI config file.
88
88
  *
89
89
  * - Resolves configPath relative to CWD
90
- * - Resolves `context` paths relative to the config file's directory
90
+ * - Absolute context paths are used as-is; relative paths resolve from the config file's directory
91
91
  * - Throws on missing file or invalid JSON
92
92
  */
93
93
  export function loadConfig(configPath) {
@@ -141,7 +141,7 @@ export function loadConfig(configPath) {
141
141
  // Context gathering
142
142
  if (obj.context !== undefined) {
143
143
  const paths = assertStringArray(obj, 'context');
144
- config.context = paths.map((p) => resolve(configDir, p));
144
+ config.context = paths.map((p) => isAbsolute(p) ? p : resolve(configDir, p));
145
145
  }
146
146
  if (obj.exclude !== undefined)
147
147
  config.exclude = assertStringArray(obj, 'exclude');
@@ -188,7 +188,7 @@ export const CONFIG_TEMPLATE = {
188
188
  direction: 'TB',
189
189
  spacing: 50,
190
190
  // Context gathering
191
- context: ['./src'],
191
+ context: ['.'],
192
192
  exclude: ['dist', 'coverage', '*.lock'],
193
193
  allowTestFiles: false,
194
194
  maxFileSize: 65536,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/ai/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/ai/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAwEvF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAID;;;;;GAKG;AACH,wBAAsB,OAAO,CACzB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA+EjB;AAID;;;GAGG;AACH,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA2CjB"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2FvF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AA+CD;;;;;GAKG;AACH,wBAAsB,OAAO,CACzB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAkFjB;AAID;;;GAGG;AACH,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
@@ -7,37 +7,50 @@
7
7
  import { getCachedResponse, cacheResponse } from './query-cache.js';
8
8
  import { OPENROUTER_API_URL, DEFAULT_MODEL, DEFAULT_TEMPERATURE } from "./contants.js";
9
9
  // ── System Prompts ──────────────────────────────────────────────────────────
10
- const DSL_SYSTEM_PROMPT = `You are an expert at creating flowchart diagrams using exai DSL syntax.
11
-
12
- Convert the user's natural language description into valid DSL format.
13
-
14
- IMPORTANT: If the user provides codebase context, you MUST analyze ONLY that specific codebase and create a diagram based on what you see in the provided code. Do NOT use your general knowledge about other projects.
15
-
16
- DSL Syntax:
17
- - [Label] = Rectangle (process steps, actions)
18
- - {Label} = Diamond (decisions, conditionals)
19
- - (Label) = Ellipse (start/end points)
20
- - [[Label]] = Database
21
- - -> = Arrow connection
22
- - --> = Dashed arrow
23
- - -> "text" -> = Labeled arrow
24
-
25
- Directives:
26
- - @direction TB|BT|LR|RL (flow direction)
27
- - @spacing N (node spacing in pixels)
28
-
29
- Example:
30
- (Start) -> [Process Data] -> {Valid?}
31
- {Valid?} -> "yes" -> [Save to DB] -> (End)
32
- {Valid?} -> "no" -> [Show Error] -> (End)
33
-
34
- CRITICAL RULES:
35
- - Output ONLY the DSL syntax
36
- - Do NOT wrap output in markdown code blocks
37
- - Do NOT include backticks
38
- - Do NOT add explanations or comments
39
- - Output must be raw DSL that can be parsed directly`;
40
- const JSON_SYSTEM_PROMPT = `You are an expert at creating flowchart diagrams using exai JSON format.
10
+ const DSL_PLAN_SYSTEM_PROMPT = `You are an expert software architecture diagram planner for Excalidraw.
11
+
12
+ Convert the user's request into a STRICT JSON graph plan. Do NOT output DSL directly.
13
+
14
+ IMPORTANT CONTEXT RULE:
15
+ - If codebase context is provided, analyze ONLY that codebase.
16
+ - Do NOT use outside assumptions or hallucinated components.
17
+
18
+ Return ONLY valid JSON with this exact schema:
19
+ {
20
+ "nodes": [
21
+ { "id": "string", "type": "rectangle|diamond|ellipse|database", "label": "string" }
22
+ ],
23
+ "edges": [
24
+ { "from": "node_id", "to": "node_id", "label": "optional", "dashed": false }
25
+ ],
26
+ "options": {
27
+ "direction": "TB|BT|LR|RL",
28
+ "spacing": 50
29
+ }
30
+ }
31
+
32
+ ARCHITECTURE MODELING RULES:
33
+ - Identify key components and flows:
34
+ - entry points/users/clients
35
+ - gateways/frontends
36
+ - services/workers
37
+ - databases/stores
38
+ - external systems/APIs
39
+ - Use edge labels for meaningful interactions (e.g. "calls", "reads", "writes", "publishes", "consumes").
40
+ - Prefer layered architecture layout (usually TB) unless user requests another direction.
41
+ - Keep labels concise and concrete (recommended <= 60 chars).
42
+ - Avoid decorative nodes.
43
+ - Prefer rectangle/ellipse/database for architecture diagrams.
44
+ - Use diamond ONLY when explicit decision logic is central to the requested flow.
45
+
46
+ GRAPH QUALITY RULES:
47
+ - Output JSON object only (no markdown, no explanation).
48
+ - Node IDs must be unique and stable-looking (e.g. "api-gateway", "user-service", "orders-db").
49
+ - Every edge must reference valid node IDs.
50
+ - Avoid duplicate edges with same from/to/label.
51
+ - Prefer connected graphs; avoid isolated nodes unless explicitly requested.
52
+ - Prefer 6-25 nodes unless user requests high detail or the system is tiny.`;
53
+ const JSON_SYSTEM_PROMPT = `You are an expert at creating architecture/flowchart diagrams using exai JSON format.
41
54
 
42
55
  Convert the user's natural language description into valid JSON format.
43
56
 
@@ -57,15 +70,21 @@ JSON Structure:
57
70
  }
58
71
  }
59
72
 
60
- Node Types:
61
- - rectangle: Process steps, actions
62
- - diamond: Decisions, conditionals
63
- - ellipse: Start/end points
64
- - database: Data storage
65
-
66
- CRITICAL RULES:
67
- - Output ONLY valid JSON
68
- - Do NOT wrap output in markdown code blocks
73
+ Node Types:
74
+ - rectangle: Process steps, actions
75
+ - diamond: Decisions, conditionals
76
+ - ellipse: Start/end points
77
+ - database: Data storage
78
+
79
+ MODELING RULES:
80
+ - Prefer architecture-relevant components and explicit data/control-flow edges.
81
+ - Prefer rectangle/ellipse/database for architecture diagrams.
82
+ - Use diamond only when explicit decision branching is required.
83
+ - Avoid unsupported assumptions when context is provided.
84
+
85
+ CRITICAL RULES:
86
+ - Output ONLY valid JSON
87
+ - Do NOT wrap output in markdown code blocks
69
88
  - Do NOT include backticks or \`\`\`json
70
89
  - Do NOT add explanations
71
90
  - Output must be raw JSON that can be parsed directly
@@ -78,10 +97,12 @@ CRITICAL RULES:
78
97
  * Returns the raw response string - no cleaning or validation.
79
98
  */
80
99
  export async function callLLM(userPrompt, systemPrompt, options = {}) {
81
- const apiKey = options.apiKey || process.env.OPENROUTER_API_KEY;
100
+ const apiKey = options.apiKey ||
101
+ process.env.EXAI_OPENROUTER_APIKEY ||
102
+ process.env.OPENROUTER_API_KEY;
82
103
  if (!apiKey) {
83
104
  throw new Error('OpenRouter API key is required.\n' +
84
- 'Provide it via options or set OPENROUTER_API_KEY environment variable.\n' +
105
+ 'Provide it via options or set EXAI_OPENROUTER_APIKEY / OPENROUTER_API_KEY environment variable.\n' +
85
106
  'Get your API key from https://openrouter.ai/keys');
86
107
  }
87
108
  const model = options.model || process.env.OPENROUTER_MODEL || DEFAULT_MODEL;
@@ -143,7 +164,6 @@ export async function callLLM(userPrompt, systemPrompt, options = {}) {
143
164
  * Wraps callLLM with format-specific system prompts and output cleaning.
144
165
  */
145
166
  export async function generateFlowchartInput(prompt, format, options = {}) {
146
- const systemPrompt = format === 'dsl' ? DSL_SYSTEM_PROMPT : JSON_SYSTEM_PROMPT;
147
167
  // Build user message with optional context
148
168
  let userMessage = prompt;
149
169
  if (options.context) {
@@ -166,10 +186,33 @@ ${options.context}
166
186
  ====== END CODEBASE ======
167
187
 
168
188
  Now, analyze the codebase above and ${prompt}
169
-
189
+
170
190
  Remember: Base your diagram ONLY on the code provided between the BEGIN/END markers above.`;
171
191
  }
172
- const raw = await callLLM(userMessage, systemPrompt, {
192
+ if (format === 'dsl') {
193
+ const rawPlan = await callLLM(userMessage, DSL_PLAN_SYSTEM_PROMPT, {
194
+ model: options.model,
195
+ apiKey: options.apiKey,
196
+ temperature: options.temperature,
197
+ verbose: options.verbose,
198
+ useCache: options.useCache,
199
+ cacheOptions: options.cacheOptions,
200
+ cacheFormat: 'dsl-plan',
201
+ cacheContext: options.context,
202
+ });
203
+ if (options.verbose)
204
+ console.log(` Rebuilding DSL from normalized plan...`);
205
+ try {
206
+ const plan = parseDslPlan(rawPlan);
207
+ const normalized = normalizeDslPlan(plan);
208
+ return buildDslFromPlan(normalized);
209
+ }
210
+ catch (error) {
211
+ const message = error instanceof Error ? error.message : String(error);
212
+ throw new Error(`Failed to build DSL from AI plan: ${message}`);
213
+ }
214
+ }
215
+ const raw = await callLLM(userMessage, JSON_SYSTEM_PROMPT, {
173
216
  model: options.model,
174
217
  apiKey: options.apiKey,
175
218
  temperature: options.temperature,
@@ -183,6 +226,175 @@ Remember: Base your diagram ONLY on the code provided between the BEGIN/END mark
183
226
  console.log(` Cleaning and validating output...`);
184
227
  return cleanOutput(raw, format);
185
228
  }
229
+ function parseDslPlan(raw) {
230
+ let cleaned = raw.trim();
231
+ cleaned = cleaned.replace(/```(?:json)?\n?/gi, '');
232
+ cleaned = cleaned.replace(/```\n?/g, '').trim();
233
+ const firstObj = cleaned.indexOf('{');
234
+ const lastObj = cleaned.lastIndexOf('}');
235
+ if (firstObj !== -1 && lastObj > firstObj) {
236
+ cleaned = cleaned.slice(firstObj, lastObj + 1);
237
+ }
238
+ const parsed = JSON.parse(cleaned);
239
+ if (!parsed || typeof parsed !== 'object') {
240
+ throw new Error('Plan output is not a JSON object');
241
+ }
242
+ return parsed;
243
+ }
244
+ function normalizeDirection(value) {
245
+ if (!value)
246
+ return undefined;
247
+ const dir = value.toUpperCase();
248
+ return dir === 'TB' || dir === 'BT' || dir === 'LR' || dir === 'RL' ? dir : undefined;
249
+ }
250
+ function normalizeNodeType(value) {
251
+ if (!value)
252
+ return 'rectangle';
253
+ const type = value.toLowerCase();
254
+ if (type === 'diamond' || type === 'decision' || type === 'condition')
255
+ return 'diamond';
256
+ if (type === 'ellipse' || type === 'oval' || type === 'start' || type === 'end')
257
+ return 'ellipse';
258
+ if (type === 'database' || type === 'db' || type === 'storage' || type === 'cylinder')
259
+ return 'database';
260
+ return 'rectangle';
261
+ }
262
+ function sanitizeNodeLabel(label, fallback) {
263
+ const value = (label || '').trim();
264
+ const cleaned = value
265
+ .replace(/[\[\]\{\}\(\)]/g, '')
266
+ .replace(/\s+/g, ' ')
267
+ .trim();
268
+ return cleaned || fallback;
269
+ }
270
+ function sanitizeEdgeLabel(label) {
271
+ if (!label)
272
+ return undefined;
273
+ const cleaned = label.replace(/\s+/g, ' ').trim();
274
+ return cleaned.length > 0 ? cleaned.slice(0, 120) : undefined;
275
+ }
276
+ function normalizeDslPlan(plan) {
277
+ const nodes = [];
278
+ const nodeById = new Map();
279
+ const rawNodes = Array.isArray(plan.nodes) ? plan.nodes : [];
280
+ let autoNodeId = 1;
281
+ for (const rawNode of rawNodes) {
282
+ if (!rawNode || typeof rawNode !== 'object')
283
+ continue;
284
+ const fallbackLabel = `Step ${autoNodeId}`;
285
+ const id = String(rawNode.id || `n${autoNodeId}`).trim();
286
+ const nodeId = id || `n${autoNodeId}`;
287
+ autoNodeId++;
288
+ if (nodeById.has(nodeId))
289
+ continue;
290
+ const node = {
291
+ id: nodeId,
292
+ type: normalizeNodeType(rawNode.type),
293
+ label: sanitizeNodeLabel(rawNode.label, fallbackLabel),
294
+ };
295
+ nodes.push(node);
296
+ nodeById.set(node.id, node);
297
+ }
298
+ if (nodes.length === 0) {
299
+ nodes.push({ id: 'start', type: 'ellipse', label: 'Start' }, { id: 'end', type: 'ellipse', label: 'End' });
300
+ nodeById.set('start', nodes[0]);
301
+ nodeById.set('end', nodes[1]);
302
+ }
303
+ const edges = [];
304
+ const rawEdges = Array.isArray(plan.edges) ? plan.edges : [];
305
+ for (const rawEdge of rawEdges) {
306
+ if (!rawEdge || typeof rawEdge !== 'object')
307
+ continue;
308
+ const from = String(rawEdge.from || '').trim();
309
+ const to = String(rawEdge.to || '').trim();
310
+ if (!from || !to)
311
+ continue;
312
+ if (!nodeById.has(from) || !nodeById.has(to))
313
+ continue;
314
+ edges.push({
315
+ from,
316
+ to,
317
+ label: sanitizeEdgeLabel(rawEdge.label),
318
+ dashed: rawEdge.dashed === true,
319
+ });
320
+ }
321
+ // If model returned nodes without edges, create a simple chain to ensure valid flow.
322
+ if (edges.length === 0 && nodes.length > 1) {
323
+ for (let i = 0; i < nodes.length - 1; i++) {
324
+ edges.push({
325
+ from: nodes[i].id,
326
+ to: nodes[i + 1].id,
327
+ dashed: false,
328
+ });
329
+ }
330
+ }
331
+ const direction = normalizeDirection(plan.options?.direction);
332
+ const spacingInput = plan.options?.spacing ?? plan.options?.nodeSpacing;
333
+ const spacing = typeof spacingInput === 'number' && Number.isFinite(spacingInput) && spacingInput > 0
334
+ ? Math.round(spacingInput)
335
+ : undefined;
336
+ return { nodes, edges, direction, spacing };
337
+ }
338
+ function normalizeDslRefId(raw, fallbackIndex) {
339
+ const base = raw
340
+ .toLowerCase()
341
+ .replace(/[^a-z0-9_-]+/g, '-')
342
+ .replace(/-+/g, '-')
343
+ .replace(/^-|-$/g, '');
344
+ return base || `n${fallbackIndex}`;
345
+ }
346
+ function quoteDsl(value) {
347
+ return `"${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
348
+ }
349
+ function buildDslFromPlan(plan) {
350
+ const lines = [];
351
+ if (plan.direction)
352
+ lines.push(`@direction ${plan.direction}`);
353
+ if (plan.spacing)
354
+ lines.push(`@spacing ${plan.spacing}`);
355
+ if (lines.length > 0)
356
+ lines.push('');
357
+ const nodeRefByOriginalId = new Map();
358
+ const usedRefs = new Set();
359
+ for (let i = 0; i < plan.nodes.length; i++) {
360
+ const node = plan.nodes[i];
361
+ let ref = normalizeDslRefId(node.id, i + 1);
362
+ if (usedRefs.has(ref)) {
363
+ let suffix = 2;
364
+ while (usedRefs.has(`${ref}-${suffix}`))
365
+ suffix++;
366
+ ref = `${ref}-${suffix}`;
367
+ }
368
+ usedRefs.add(ref);
369
+ nodeRefByOriginalId.set(node.id, ref);
370
+ lines.push(`@node ${ref} ${node.type} ${quoteDsl(node.label)}`);
371
+ }
372
+ if (plan.nodes.length > 0 && plan.edges.length > 0) {
373
+ lines.push('');
374
+ }
375
+ for (const edge of plan.edges) {
376
+ const fromRef = nodeRefByOriginalId.get(edge.from);
377
+ const toRef = nodeRefByOriginalId.get(edge.to);
378
+ if (!fromRef || !toRef)
379
+ continue;
380
+ let edgeLine = `@edge ${fromRef} ${toRef}`;
381
+ if (edge.label) {
382
+ edgeLine += ` ${quoteDsl(edge.label)}`;
383
+ }
384
+ if (edge.dashed) {
385
+ edgeLine += ' dashed';
386
+ }
387
+ lines.push(edgeLine);
388
+ }
389
+ const output = lines.join('\n').trim();
390
+ if (!output) {
391
+ return `@node start ellipse "Start"
392
+ @node end ellipse "End"
393
+
394
+ @edge start end`;
395
+ }
396
+ return output;
397
+ }
186
398
  // ── Output cleaning ─────────────────────────────────────────────────────────
187
399
  /**
188
400
  * Clean AI output - remove markdown wrappers and explanations
@@ -214,7 +426,7 @@ function cleanOutput(output, format) {
214
426
  }
215
427
  }
216
428
  else if (format === 'dsl') {
217
- if (!cleaned.includes('->') && !cleaned.includes('[') && !cleaned.includes('(')) {
429
+ if (!cleaned.includes('@node') && !cleaned.includes('@edge')) {
218
430
  throw new Error('AI output does not appear to be valid DSL. Expected nodes and connections.\n\n' +
219
431
  'This is a bug in the AI model output. Please try again or use a different model.');
220
432
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"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"}