exai 1.8.0 → 1.9.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 (134) hide show
  1. package/README.md +207 -70
  2. package/dist/ai/cache.d.ts.map +1 -1
  3. package/dist/ai/cache.js +28 -14
  4. package/dist/ai/cache.js.map +1 -1
  5. package/dist/ai/config.d.ts +11 -1
  6. package/dist/ai/config.d.ts.map +1 -1
  7. package/dist/ai/config.js +81 -19
  8. package/dist/ai/config.js.map +1 -1
  9. package/dist/ai/contants.d.ts +16 -2
  10. package/dist/ai/contants.d.ts.map +1 -1
  11. package/dist/ai/contants.js +77 -2
  12. package/dist/ai/contants.js.map +1 -1
  13. package/dist/ai/context-gatherer.d.ts.map +1 -1
  14. package/dist/ai/context-gatherer.js +1 -1
  15. package/dist/ai/context-gatherer.js.map +1 -1
  16. package/dist/ai/folder-filter.d.ts.map +1 -1
  17. package/dist/ai/folder-filter.js +21 -21
  18. package/dist/ai/folder-filter.js.map +1 -1
  19. package/dist/ai/openrouter.d.ts +4 -0
  20. package/dist/ai/openrouter.d.ts.map +1 -1
  21. package/dist/ai/openrouter.js +53 -26
  22. package/dist/ai/openrouter.js.map +1 -1
  23. package/dist/ai/query-cache.d.ts.map +1 -1
  24. package/dist/ai/query-cache.js.map +1 -1
  25. package/dist/ai/tree-generator.d.ts.map +1 -1
  26. package/dist/ai/tree-generator.js +1 -1
  27. package/dist/ai/tree-generator.js.map +1 -1
  28. package/dist/auth/session.d.ts +60 -0
  29. package/dist/auth/session.d.ts.map +1 -0
  30. package/dist/auth/session.js +145 -0
  31. package/dist/auth/session.js.map +1 -0
  32. package/dist/cli.d.ts.map +1 -1
  33. package/dist/cli.js +379 -20
  34. package/dist/cli.js.map +1 -1
  35. package/dist/context/compress.d.ts.map +1 -1
  36. package/dist/context/compress.js +16 -5
  37. package/dist/context/compress.js.map +1 -1
  38. package/dist/context/filter.d.ts.map +1 -1
  39. package/dist/context/filter.js +70 -15
  40. package/dist/context/filter.js.map +1 -1
  41. package/dist/context/gather.d.ts.map +1 -1
  42. package/dist/context/gather.js +1 -1
  43. package/dist/context/gather.js.map +1 -1
  44. package/dist/context/index.d.ts +1 -1
  45. package/dist/context/index.d.ts.map +1 -1
  46. package/dist/context/index.js +1 -1
  47. package/dist/context/index.js.map +1 -1
  48. package/dist/context/reader.d.ts.map +1 -1
  49. package/dist/context/reader.js +24 -8
  50. package/dist/context/reader.js.map +1 -1
  51. package/dist/context/tree.d.ts.map +1 -1
  52. package/dist/context/tree.js +5 -3
  53. package/dist/context/tree.js.map +1 -1
  54. package/dist/diagram/build-file.d.ts +10 -0
  55. package/dist/diagram/build-file.d.ts.map +1 -0
  56. package/dist/diagram/build-file.js +22 -0
  57. package/dist/diagram/build-file.js.map +1 -0
  58. package/dist/diagram/checkpoint.d.ts +55 -0
  59. package/dist/diagram/checkpoint.d.ts.map +1 -0
  60. package/dist/diagram/checkpoint.js +110 -0
  61. package/dist/diagram/checkpoint.js.map +1 -0
  62. package/dist/diagram/elements.d.ts +48 -0
  63. package/dist/diagram/elements.d.ts.map +1 -0
  64. package/dist/diagram/elements.js +351 -0
  65. package/dist/diagram/elements.js.map +1 -0
  66. package/dist/diagram/layout.d.ts +25 -0
  67. package/dist/diagram/layout.d.ts.map +1 -0
  68. package/dist/diagram/layout.js +218 -0
  69. package/dist/diagram/layout.js.map +1 -0
  70. package/dist/diagram/pipeline.d.ts +17 -0
  71. package/dist/diagram/pipeline.d.ts.map +1 -0
  72. package/dist/diagram/pipeline.js +128 -0
  73. package/dist/diagram/pipeline.js.map +1 -0
  74. package/dist/diagram/prompts.d.ts +14 -0
  75. package/dist/diagram/prompts.d.ts.map +1 -0
  76. package/dist/diagram/prompts.js +82 -0
  77. package/dist/diagram/prompts.js.map +1 -0
  78. package/dist/diagram/types.d.ts +183 -0
  79. package/dist/diagram/types.d.ts.map +1 -0
  80. package/dist/diagram/types.js +51 -0
  81. package/dist/diagram/types.js.map +1 -0
  82. package/dist/export/render.d.ts +12 -0
  83. package/dist/export/render.d.ts.map +1 -0
  84. package/dist/export/render.js +70 -0
  85. package/dist/export/render.js.map +1 -0
  86. package/dist/factory/connection-factory.d.ts.map +1 -1
  87. package/dist/factory/connection-factory.js.map +1 -1
  88. package/dist/factory/element-factory.d.ts.map +1 -1
  89. package/dist/factory/element-factory.js.map +1 -1
  90. package/dist/factory/image-factory.d.ts.map +1 -1
  91. package/dist/factory/image-factory.js.map +1 -1
  92. package/dist/factory/index.d.ts.map +1 -1
  93. package/dist/factory/index.js.map +1 -1
  94. package/dist/factory/node-factory.d.ts.map +1 -1
  95. package/dist/factory/node-factory.js.map +1 -1
  96. package/dist/factory/text-factory.d.ts.map +1 -1
  97. package/dist/factory/text-factory.js.map +1 -1
  98. package/dist/generator/excalidraw-generator.d.ts.map +1 -1
  99. package/dist/generator/excalidraw-generator.js +11 -10
  100. package/dist/generator/excalidraw-generator.js.map +1 -1
  101. package/dist/generator/index.d.ts +1 -1
  102. package/dist/generator/index.d.ts.map +1 -1
  103. package/dist/generator/index.js +1 -1
  104. package/dist/generator/index.js.map +1 -1
  105. package/dist/index.d.ts +12 -0
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +17 -0
  108. package/dist/index.js.map +1 -1
  109. package/dist/layout/arrow-router.d.ts.map +1 -1
  110. package/dist/layout/arrow-router.js.map +1 -1
  111. package/dist/layout/elk-layout.d.ts.map +1 -1
  112. package/dist/layout/elk-layout.js +3 -1
  113. package/dist/layout/elk-layout.js.map +1 -1
  114. package/dist/parser/dot-parser.d.ts.map +1 -1
  115. package/dist/parser/dot-parser.js +4 -2
  116. package/dist/parser/dot-parser.js.map +1 -1
  117. package/dist/parser/dsl-parser.d.ts.map +1 -1
  118. package/dist/parser/dsl-parser.js +14 -5
  119. package/dist/parser/dsl-parser.js.map +1 -1
  120. package/dist/reference/data.d.ts +142 -0
  121. package/dist/reference/data.d.ts.map +1 -0
  122. package/dist/reference/data.js +109 -0
  123. package/dist/reference/data.js.map +1 -0
  124. package/dist/reference/render.d.ts +12 -0
  125. package/dist/reference/render.d.ts.map +1 -0
  126. package/dist/reference/render.js +108 -0
  127. package/dist/reference/render.js.map +1 -0
  128. package/dist/share/upload.d.ts +21 -0
  129. package/dist/share/upload.d.ts.map +1 -0
  130. package/dist/share/upload.js +97 -0
  131. package/dist/share/upload.js.map +1 -0
  132. package/dist/types/excalidraw.d.ts.map +1 -1
  133. package/dist/types/excalidraw.js.map +1 -1
  134. package/package.json +2 -1
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # exai
2
2
 
3
- CLI that turns natural language into Excalidraw flowcharts. Point it at your codebase, describe what you want, get a `.excalidraw` file.
3
+ CLI that turns natural language into Excalidraw diagrams. Point it at your codebase, describe what you want, get a `.excalidraw` file. Export to PNG/SVG. Share via excalidraw.com.
4
4
 
5
5
  ```bash
6
- exai ai "visualize the auth flow" -c ./src -o auth.excalidraw
6
+ exai diagram "microservice architecture with auth, users, and database" --theme dark
7
7
  ```
8
8
 
9
9
  ## Install
@@ -17,123 +17,260 @@ Or from source:
17
17
  ```bash
18
18
  git clone https://github.com/KailasMahavarkar/exai.git
19
19
  cd exai
20
- npm install && npm run bundle
20
+ npm install && npm run build
21
21
  ```
22
22
 
23
23
  ## Setup
24
24
 
25
- Get an API key from [openrouter.ai/keys](https://openrouter.ai/keys), then either:
25
+ Store your API key securely (saved in `~/.exai/session.json`, never committed):
26
+
27
+ ```bash
28
+ exai auth set openrouter sk-or-v1-...
29
+ exai auth set groq gsk_... # add multiple providers
30
+ exai auth default openrouter # set default
31
+ ```
32
+
33
+ Or use environment variables:
26
34
 
27
35
  ```bash
28
36
  export EXAI_OPENROUTER_APIKEY="sk-or-v1-..."
29
37
  ```
30
38
 
31
- `OPENROUTER_API_KEY` is also accepted for backward compatibility.
39
+ Or use a local provider (no API key needed):
40
+
41
+ ```bash
42
+ exai diagram "auth flow" --provider ollama
43
+ ```
44
+
45
+ Key priority: `--api-key` flag > env var > `~/.exai/session.json`
46
+
47
+ ## Commands
48
+
49
+ | Command | Description |
50
+ |---------|-------------|
51
+ | `exai diagram` | Generate diagram from AI prompt or JSON |
52
+ | `exai ai` | Generate flowchart from natural language + codebase context |
53
+ | `exai create` | Create flowchart from DSL/JSON/DOT |
54
+ | `exai export` | Convert `.excalidraw` to PNG or SVG |
55
+ | `exai share` | Upload to excalidraw.com (e2e encrypted) |
56
+ | `exai checkpoint` | Manage saved diagram states |
57
+ | `exai reference` | Built-in element & color reference |
58
+ | `exai auth` | Manage API keys (`~/.exai/session.json`) |
59
+ | `exai providers` | List available LLM providers |
60
+ | `exai cache` | Manage LLM response cache |
61
+ | `exai init` | Create starter config file |
62
+ | `exai parse` | Parse and validate input |
32
63
 
33
- Or use a config file:
64
+ ## Diagram Generation
65
+
66
+ Generate `.excalidraw` diagrams from natural language or structured JSON.
67
+
68
+ ### AI Mode
34
69
 
35
70
  ```bash
36
- exai init # creates exai.config.json
37
- # add your apiKey, then:
38
- exai ai "prompt" --config-path ./exai.config.json
71
+ exai diagram "e-commerce checkout: cart, payment, order service, inventory"
72
+ exai diagram "CI/CD pipeline" --direction LR --style clean --theme dark
73
+ exai diagram "auth flow" --provider ollama --model llama3.2
39
74
  ```
40
75
 
41
- ## Config
76
+ ### Deterministic Mode (No AI)
77
+
78
+ ```bash
79
+ exai diagram --json elements.json -o my-diagram.excalidraw
80
+ cat elements.json | exai diagram --stdin
81
+ ```
42
82
 
43
- One file controls everything. Generate it with `exai init`.
83
+ **Simplified element format:**
44
84
 
45
85
  ```json
46
- {
47
- "model": "moonshotai/kimi-k2.5",
48
- "filterModel": "moonshotai/kimi-k2.5",
49
- "apiKey": "sk-or-v1-...",
50
- "temperature": 0,
86
+ [
87
+ { "type": "rectangle", "id": "api", "label": "API Gateway", "backgroundColor": "#a5d8ff" },
88
+ { "type": "ellipse", "id": "user", "label": "User", "backgroundColor": "#e7f5ff" },
89
+ { "type": "rectangle", "id": "auth", "label": "Auth Service", "backgroundColor": "#d0bfff" },
90
+ { "type": "arrow", "from": "user", "to": "api" },
91
+ { "type": "arrow", "from": "api", "to": "auth", "label": "JWT" }
92
+ ]
93
+ ```
51
94
 
52
- "format": "dsl",
53
- "output": "flowchart.excalidraw",
54
- "direction": "TB",
55
- "spacing": 50,
95
+ No coordinates needed — the CLI auto-layouts using topological sort, expands labels into shape + bound text pairs, resolves arrow bindings, and applies style presets.
56
96
 
57
- "context": ["."],
58
- "exclude": ["dist", "coverage", "*.lock"],
59
- "allowTestFiles": false,
60
- "maxFileSize": 65536,
61
- "maxDepth": 6,
62
- "maxTreeItems": 1000,
97
+ ### Rich Labels
63
98
 
64
- "compress": true,
65
- "compressMode": "balanced",
66
- "compressOptions": {
67
- "removeComments": true,
68
- "minifyWhitespace": true,
69
- "extractSignaturesOnly": false,
70
- "maxFileLines": 100,
71
- "preserveImports": true,
72
- "preserveExports": true,
73
- "preserveTypes": true,
74
- "preserveFunctionSignatures": true
75
- },
99
+ ```json
100
+ { "type": "rectangle", "id": "api", "label": { "text": "API Gateway", "fontSize": 24, "fontFamily": 2 } }
101
+ ```
76
102
 
77
- "cache": true,
78
- "cacheTtlDays": 7,
79
- "cacheMaxEntries": 100,
103
+ | fontFamily | Font |
104
+ |------------|------|
105
+ | 1 | Virgil (handwritten) |
106
+ | 2 | Helvetica (sans-serif) |
107
+ | 3 | Cascadia (monospace) |
108
+ | 5 | Excalifont |
80
109
 
81
- "verbose": false
82
- }
110
+ ### Pseudo-elements
111
+
112
+ Control pipeline behavior without appearing in output:
113
+
114
+ ```json
115
+ { "type": "cameraUpdate", "zoom": 0.8 }
116
+ { "type": "delete", "targetId": "unused-node" }
117
+ { "type": "restoreCheckpoint", "name": "v1" }
83
118
  ```
84
119
 
85
- All fields optional. CLI flags override config values.
120
+ ### Flags
86
121
 
87
- ## Commands
122
+ | Flag | Default | Description |
123
+ |------|---------|-------------|
124
+ | `-o, --output` | `diagram.excalidraw` | Output file path |
125
+ | `-d, --direction` | `TB` | `TB` (top-bottom) or `LR` (left-right) |
126
+ | `--style` | `hand-drawn` | `hand-drawn` or `clean` |
127
+ | `--theme` | `light` | `light` or `dark` |
128
+ | `--model` | provider default | LLM model |
129
+ | `--provider` | `openrouter` | LLM provider or custom URL |
130
+ | `--json` | — | JSON file (deterministic mode) |
131
+ | `--stdin` | — | Read JSON from stdin |
132
+ | `--checkpoint` | — | Save diagram state as named checkpoint |
133
+ | `--from-checkpoint` | — | Load checkpoint, merge new elements on top |
134
+ | `--no-cache` | — | Disable response cache |
135
+ | `--verbose` | — | Show per-step timing |
136
+
137
+ ## Providers
138
+
139
+ Use `--provider` to switch between LLM providers. All use the OpenAI chat completions format.
88
140
 
89
141
  ```bash
90
- # AI generation
91
- exai ai "<prompt>" [options]
142
+ exai providers # list all providers
143
+
144
+ exai diagram "auth flow" --provider openrouter # default
145
+ exai diagram "auth flow" --provider openai --model gpt-4o
146
+ exai diagram "auth flow" --provider groq
147
+ exai diagram "auth flow" --provider deepseek
148
+ exai diagram "auth flow" --provider ollama # local, no API key
149
+ exai diagram "auth flow" --provider lmstudio # local, no API key
150
+
151
+ # any OpenAI-compatible endpoint
152
+ exai diagram "auth flow" --provider http://my-server:8080/v1/chat/completions
153
+ ```
92
154
 
93
- # Create from DSL/JSON/DOT
94
- exai create [input] [options]
155
+ | Provider | Default Model | API Key |
156
+ |----------|---------------|---------|
157
+ | `openrouter` | `moonshotai/kimi-k2.5` | Required |
158
+ | `openai` | `gpt-4o-mini` | Required |
159
+ | `groq` | `llama-3.3-70b-versatile` | Required |
160
+ | `deepseek` | `deepseek-chat` | Required |
161
+ | `together` | `meta-llama/Llama-3.3-70B-Instruct-Turbo` | Required |
162
+ | `anthropic` | `claude-sonnet-4-6` | Required |
163
+ | `ollama` | `llama3.2` | Not needed |
164
+ | `lmstudio` | `local-model` | Not needed |
95
165
 
96
- # Parse without generating
97
- exai parse <input>
166
+ ## Export
98
167
 
99
- # Cache management
100
- exai cache stats
101
- exai cache clear
168
+ Convert `.excalidraw` files to PNG or SVG using Puppeteer + `@excalidraw/utils`.
102
169
 
103
- # Generate starter config
104
- exai init [path]
170
+ ```bash
171
+ exai export diagram.excalidraw --format png
172
+ exai export diagram.excalidraw --format svg -o output.svg
173
+ ```
174
+
175
+ ## Share
176
+
177
+ Upload to excalidraw.com with end-to-end encryption (AES-GCM).
178
+
179
+ ```bash
180
+ exai share diagram.excalidraw
181
+ # => https://excalidraw.com/#json=abc123,base64key
182
+ ```
183
+
184
+ ## Checkpoints
185
+
186
+ Save and restore diagram states for iterative building.
187
+
188
+ ```bash
189
+ exai diagram --json base.json --checkpoint my-project
190
+ exai diagram --json additions.json --from-checkpoint my-project -o full.excalidraw
191
+
192
+ exai checkpoint list
193
+ exai checkpoint show my-project
194
+ exai checkpoint remove my-project
195
+ ```
196
+
197
+ ## Reference
198
+
199
+ Built-in cheat sheet for colors, elements, sizing, and tips.
200
+
201
+ ```bash
202
+ exai reference # show all
203
+ exai reference colors # color palettes
204
+ exai reference elements # element format
205
+ exai reference --json # JSON output (pipe to LLM context)
206
+ ```
207
+
208
+ ## AI with Codebase Context
209
+
210
+ The `ai` command gathers and compresses your codebase, then sends it to the LLM for context-aware diagram generation.
211
+
212
+ ```bash
213
+ exai ai "system architecture diagram" -c ./src -c ./infra
214
+ exai ai "data flow" -c ./src --exclude "*.test.*" --provider groq
215
+ exai ai "architecture" -c ./src --redraw # re-render from cache (no API call)
105
216
  ```
106
217
 
107
218
  ## DSL Syntax
108
219
 
109
- Directive-style DSL:
220
+ Directive-style DSL for the `create` command:
110
221
 
111
222
  ```
112
223
  @direction TB
113
224
  @spacing 60
114
225
 
115
226
  @node user user "End User"
116
- @node api orchestrator "API Gateway" bg:#ffe3e3 stroke:#c92a2a size:18 font:2
227
+ @node api orchestrator "API Gateway" bg:#ffe3e3 stroke:#c92a2a
117
228
  @node auth service "Auth Service" bg:#e5dbff stroke:#7048e8
118
229
  @node db database "Users DB" bg:#d3f9d8 stroke:#2f9e44
119
230
 
120
231
  @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
232
+ @edge api auth "validates token" dashed
233
+ @edge auth db "reads/writes"
125
234
  ```
126
235
 
127
- `@node <id> <type-or-kind> "<label>"`
128
- `@edge <fromId> <toId> ["label"] [dashed] [style...]`
129
- `@group <id> "<label>" nodes:<id,id,...> [style...]`
236
+ ## Config
237
+
238
+ One file controls everything. Generate with `exai init`.
239
+
240
+ ```json
241
+ {
242
+ "model": "moonshotai/kimi-k2.5",
243
+ "provider": "openrouter",
244
+ "temperature": 0,
245
+ "format": "dsl",
246
+ "output": "flowchart.excalidraw",
247
+ "direction": "TB",
248
+ "spacing": 50,
249
+ "context": ["."],
250
+ "exclude": ["dist", "coverage", "*.lock"],
251
+ "compress": true,
252
+ "compressMode": "balanced",
253
+ "cache": true,
254
+ "verbose": false,
255
+ "timeoutSecs": 120,
256
+ "excalidraw": {
257
+ "strokeWidth": 2,
258
+ "fillStyle": "hachure",
259
+ "roughness": 1,
260
+ "fontFamily": "hand",
261
+ "fontSize": 20
262
+ },
263
+ "diagram": {
264
+ "direction": "TB",
265
+ "style": "hand-drawn",
266
+ "theme": "light"
267
+ }
268
+ }
269
+ ```
130
270
 
131
- Common kinds: `user`, `frontend`, `backend`, `service`, `api`, `worker`, `database`, `storage`, `queue`, `cache`, `external`, `orchestrator`, `decision`.
271
+ All fields optional. Priority: **CLI flags > env/.env > config file > defaults**.
132
272
 
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`
273
+ See [CHEATSHEET.md](CHEATSHEET.md) for the full reference.
137
274
 
138
275
  ## License
139
276
 
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/ai/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAMnD;AAID,qBAAa,SAAS;IAClB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAU;;IASzB,kFAAkF;IAClF,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAOpC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,QAAQ;IAIhB;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAwBzC;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAY/C;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAkB1B;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;IAgCD,mFAAmF;IACnF,MAAM,IAAI,IAAI;CAcjB;AAID,iFAAiF;AACjF,eAAO,MAAM,KAAK,WAAkB,CAAC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/ai/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsBH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAMnD;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAU;;IASzB,kFAAkF;IAClF,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAOpC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,QAAQ;IAIhB;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IA4BzC;;;;;OAKG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAY/C;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAwB1B;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B;IAkCD,mFAAmF;IACnF,MAAM,IAAI,IAAI;CAwBf;AAID,iFAAiF;AACjF,eAAO,MAAM,KAAK,WAAkB,CAAC"}
package/dist/ai/cache.js CHANGED
@@ -74,7 +74,9 @@ export class ExaiCache {
74
74
  try {
75
75
  unlinkSync(path);
76
76
  }
77
- catch { /* ignore */ }
77
+ catch {
78
+ /* ignore */
79
+ }
78
80
  return null;
79
81
  }
80
82
  if (this.verbose) {
@@ -116,16 +118,19 @@ export class ExaiCache {
116
118
  if (!existsSync(this.dir))
117
119
  return 0;
118
120
  try {
119
- const files = readdirSync(this.dir).filter(f => ns
120
- ? (f.startsWith(`${ns}__`) && f.endsWith('.json'))
121
- : (f.endsWith('.json') || f.endsWith('.cache')));
121
+ const files = readdirSync(this.dir).filter((f) => ns
122
+ ? f.startsWith(`${ns}__`) && f.endsWith('.json')
123
+ : f.endsWith('.json') || f.endsWith('.cache') // include legacy files
124
+ );
122
125
  let count = 0;
123
126
  for (const f of files) {
124
127
  try {
125
128
  unlinkSync(join(this.dir, f));
126
129
  count++;
127
130
  }
128
- catch { /* ignore */ }
131
+ catch {
132
+ /* ignore */
133
+ }
129
134
  }
130
135
  return count;
131
136
  }
@@ -143,10 +148,10 @@ export class ExaiCache {
143
148
  }
144
149
  try {
145
150
  const files = readdirSync(this.dir)
146
- .filter(f => ns
147
- ? (f.startsWith(`${ns}__`) && f.endsWith('.json'))
148
- : (f.endsWith('.json') || f.endsWith('.cache')))
149
- .map(f => join(this.dir, f));
151
+ .filter((f) => ns
152
+ ? f.startsWith(`${ns}__`) && f.endsWith('.json')
153
+ : f.endsWith('.json') || f.endsWith('.cache'))
154
+ .map((f) => join(this.dir, f));
150
155
  let totalSize = 0;
151
156
  let oldestEntry = null;
152
157
  let newestEntry = null;
@@ -160,7 +165,9 @@ export class ExaiCache {
160
165
  if (newestEntry === null || mtime > newestEntry)
161
166
  newestEntry = mtime;
162
167
  }
163
- catch { /* ignore */ }
168
+ catch {
169
+ /* ignore */
170
+ }
164
171
  }
165
172
  return { totalEntries: files.length, totalSize, oldestEntry, newestEntry };
166
173
  }
@@ -174,8 +181,11 @@ export class ExaiCache {
174
181
  return;
175
182
  try {
176
183
  const files = readdirSync(this.dir)
177
- .filter(f => f.endsWith('.json'))
178
- .map(f => ({ path: join(this.dir, f), mtime: statSync(join(this.dir, f)).mtime.getTime() }))
184
+ .filter((f) => f.endsWith('.json'))
185
+ .map((f) => ({
186
+ path: join(this.dir, f),
187
+ mtime: statSync(join(this.dir, f)).mtime.getTime(),
188
+ }))
179
189
  .sort((a, b) => b.mtime - a.mtime);
180
190
  if (files.length <= this.max)
181
191
  return;
@@ -185,10 +195,14 @@ export class ExaiCache {
185
195
  if (this.verbose)
186
196
  console.log(` Pruned: ${path}`);
187
197
  }
188
- catch { /* ignore */ }
198
+ catch {
199
+ /* ignore */
200
+ }
189
201
  }
190
202
  }
191
- catch { /* ignore */ }
203
+ catch {
204
+ /* ignore */
205
+ }
192
206
  }
193
207
  }
194
208
  // ── Module-level singleton ────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/ai/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EACH,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAClD,WAAW,EAAE,QAAQ,EAAE,UAAU,GACpC,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAgB5B,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAG,KAAgB;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,iFAAiF;AAEjF,MAAM,OAAO,SAAS;IACV,GAAG,CAAS;IACZ,KAAK,CAAS;IACd,GAAG,CAAS;IACZ,OAAO,CAAU;IAEzB;QACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;QAC/C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,kFAAkF;IAClF,SAAS,CAAC,MAAmB;QACzB,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACpF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;QAClE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACpE,CAAC;IAEO,SAAS;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAEO,QAAQ,CAAC,EAAU,EAAE,GAAW;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAI,EAAU,EAAE,GAAW;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAmB,CAAC;YACxE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBACjF,IAAI,CAAC;oBAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,MAAM,IAAI,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAI,EAAU,EAAE,GAAW,EAAE,KAAQ;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,KAAK,GAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,EAAW;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3C,EAAE;gBACE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACtD,CAAC;YACF,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACpB,IAAI,CAAC;oBAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,CAAC,CAAC;QACb,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,EAAW;QAMb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACnF,CAAC;QACD,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;iBAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,CACR,EAAE;gBACE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACtD;iBACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,WAAW,GAAkB,IAAI,CAAC;YACtC,IAAI,WAAW,GAAkB,IAAI,CAAC;YAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACzB,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC;oBACpB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBAChC,IAAI,WAAW,KAAK,IAAI,IAAI,KAAK,GAAG,WAAW;wBAAE,WAAW,GAAG,KAAK,CAAC;oBACrE,IAAI,WAAW,KAAK,IAAI,IAAI,KAAK,GAAG,WAAW;wBAAE,WAAW,GAAG,KAAK,CAAC;gBACzE,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACnF,CAAC;IACL,CAAC;IAED,mFAAmF;IACnF,MAAM;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO;QAClC,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;iBAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC3F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAEvC,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG;gBAAE,OAAO;YACrC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAAC,IAAI,IAAI,CAAC,OAAO;wBAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CACJ;AAED,iFAAiF;AAEjF,iFAAiF;AACjF,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/ai/cache.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,14 @@
11
11
  *
12
12
  * All fields optional. Priority: CLI flags > config file > env vars > hardcoded defaults.
13
13
  */
14
+ export interface DiagramConfig {
15
+ /** Layout direction: TB (top-to-bottom) or LR (left-to-right) */
16
+ direction?: 'TB' | 'LR';
17
+ /** Visual style: hand-drawn or clean */
18
+ style?: 'hand-drawn' | 'clean';
19
+ /** Color theme: light or dark */
20
+ theme?: 'light' | 'dark';
21
+ }
14
22
  export interface ExcalidrawStyleConfig {
15
23
  strokeWidth?: 1 | 2 | 4;
16
24
  fillStyle?: 'hachure' | 'cross-hatch' | 'solid' | 'dots' | 'dashed' | 'zigzag' | 'none';
@@ -35,8 +43,9 @@ export interface ConfigCompressOptions {
35
43
  export interface CliConfig {
36
44
  model?: string;
37
45
  filterModel?: string;
38
- apiKey?: string;
39
46
  temperature?: number;
47
+ /** Provider preset name (openrouter, openai, ollama, etc.) or custom base URL */
48
+ provider?: string;
40
49
  format?: string;
41
50
  output?: string;
42
51
  direction?: string;
@@ -58,6 +67,7 @@ export interface CliConfig {
58
67
  /** LLM request timeout in seconds (default: 120) */
59
68
  timeoutSecs?: number;
60
69
  excalidraw?: ExcalidrawStyleConfig;
70
+ diagram?: DiagramConfig;
61
71
  }
62
72
  /**
63
73
  * Load and validate a CLI config file.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,WAAW,qBAAqB;IAClC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxF,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC3C;AAED,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,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACtC;AA8ID;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CA8ExD;AAID;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAyD7B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,wCAAwC;IACxC,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/B,iCAAiC;IACjC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxF,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACzC;AAED,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,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,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,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAGnC,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AA8LD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CA0GxD;AAID;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAwD7B,CAAC"}