openmagic 0.23.0 → 0.25.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 +150 -208
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/toolbar/index.global.js +71 -47
- package/dist/toolbar/index.global.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,161 +1,122 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# OpenMagic
|
|
4
4
|
|
|
5
|
-
**AI
|
|
5
|
+
**Add an AI coding toolbar to any web app. One command. Zero code changes.**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
[](https://www.npmjs.com/package/openmagic)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
[](https://github.com/Kalmuraee/OpenMagic/stargazers)
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
OpenMagic injects a floating AI toolbar into your running web app via reverse proxy.
|
|
12
|
+
Select any element, describe what you want, review the diff, approve — your code updates and HMR refreshes the page.
|
|
13
|
+
No framework plugin. No IDE extension. No account. Bring your own API key.
|
|
11
14
|
|
|
12
|
-
[Quick Start](#quick-start)
|
|
15
|
+
[Website](https://kalmuraee.github.io/OpenMagic/) · [Quick Start](#quick-start) · [How It Works](#how-it-works) · [Providers](#supported-providers) · [GitHub](https://github.com/Kalmuraee/OpenMagic)
|
|
13
16
|
|
|
14
17
|
</div>
|
|
15
18
|
|
|
16
19
|
---
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
<!-- DEMO GIF -->
|
|
22
|
+

|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
**Works with any framework.** React, Vue, Angular, Svelte, Next.js, Nuxt, Vite, plain HTML — if it runs in a browser, OpenMagic works.
|
|
23
|
-
|
|
24
|
-
### The Developer Experience
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
1. You have an existing web app running on localhost:3000
|
|
28
|
-
2. Run `npx openmagic`
|
|
29
|
-
3. A floating toolbar appears in your app
|
|
30
|
-
4. Select a button → "Make it bigger with a gradient"
|
|
31
|
-
5. AI proposes changes → You approve → Code updates → UI refreshes
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
<!-- TODO: Add demo GIF here -->
|
|
35
|
-
<!--  -->
|
|
24
|
+
---
|
|
36
25
|
|
|
37
26
|
## Quick Start
|
|
38
27
|
|
|
39
|
-
Make sure your dev server is running first (e.g., `npm run dev`), then:
|
|
40
|
-
|
|
41
28
|
```bash
|
|
29
|
+
# 1. Start your dev server as usual
|
|
30
|
+
npm run dev
|
|
31
|
+
|
|
32
|
+
# 2. Launch OpenMagic (auto-detects your dev server)
|
|
42
33
|
npx openmagic@latest
|
|
43
34
|
```
|
|
44
35
|
|
|
45
|
-
|
|
36
|
+
A proxied version of your app opens with the AI toolbar overlaid. That is it.
|
|
46
37
|
|
|
47
|
-
|
|
38
|
+
---
|
|
48
39
|
|
|
49
|
-
|
|
50
|
-
npx openmagic --port 3000
|
|
51
|
-
```
|
|
40
|
+
## Features
|
|
52
41
|
|
|
53
|
-
|
|
42
|
+
| | Feature | Description |
|
|
43
|
+
|---|---------|-------------|
|
|
44
|
+
| **Select** | Element Selection | Click any element to capture its DOM, computed styles, parent layout, siblings, React props, and component name |
|
|
45
|
+
| **Ground** | Smart File Grounding | Reads project files, follows import chains, auto-reads co-located stylesheets and `package.json` deps |
|
|
46
|
+
| **Diff** | Diff Preview | Approve or reject each change. Undo to revert. Fuzzy line matching handles indentation differences |
|
|
47
|
+
| **Retry** | Auto-Retry | If the LLM requests more files, OpenMagic reads them transparently and retries — no manual intervention |
|
|
48
|
+
| **Chat** | Markdown Chat | Streaming responses, copy buttons, session persistence across HMR reloads |
|
|
49
|
+
| **Net** | Network Profiling | Captures page load timing, TTFB, FCP, and flags slow resources |
|
|
50
|
+
| **Img** | Image Attachments | Drag-drop, paste from clipboard, or use the file picker — vision models analyze screenshots |
|
|
51
|
+
| **Keys** | Per-Provider Keys | Store a key for each provider. Switch models without re-entering credentials |
|
|
52
|
+
| **KB** | Keyboard Shortcuts | Toggle, send, close, minimize — all from the keyboard |
|
|
53
|
+
| **Min** | Minimize to Icon | Collapse the toolbar to a small floating button when you do not need it |
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
npx openmagic --port 3000 --root ./frontend --root ./backend
|
|
57
|
-
```
|
|
55
|
+
---
|
|
58
56
|
|
|
59
57
|
## How It Works
|
|
60
58
|
|
|
61
|
-
OpenMagic
|
|
59
|
+
OpenMagic is a single-port reverse proxy. It sits between your browser and your dev server, injecting the toolbar script into HTML responses. Your project is never modified at install time.
|
|
62
60
|
|
|
63
61
|
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
│ ├──────────────┤ │
|
|
79
|
-
│ │ LLM Proxy │ │
|
|
80
|
-
│ │ (your API key)│ │
|
|
81
|
-
│ └──────────────┘ │
|
|
82
|
-
└───────────────────┘
|
|
62
|
+
+-----------------------+
|
|
63
|
+
| Your Browser |
|
|
64
|
+
| localhost:4567 |
|
|
65
|
+
+---+---------------+---+
|
|
66
|
+
| |
|
|
67
|
+
HTTP proxy WebSocket
|
|
68
|
+
| |
|
|
69
|
+
+----------------+ +---+---------------+---+
|
|
70
|
+
| Your Dev Server| | OpenMagic Server |
|
|
71
|
+
| localhost:3000 |<---| |
|
|
72
|
+
+----------------+ | File Read/Write |
|
|
73
|
+
| LLM API Proxy |
|
|
74
|
+
| (your key, localhost) |
|
|
75
|
+
+-----------------------+
|
|
83
76
|
```
|
|
84
77
|
|
|
85
|
-
1. **Proxy**
|
|
86
|
-
2. **Toolbar**
|
|
87
|
-
3. **Server**
|
|
88
|
-
4. **HMR**
|
|
78
|
+
1. **Proxy** -- All requests forward to your dev server. HTML responses get a `<script>` tag injected before `</body>`.
|
|
79
|
+
2. **Toolbar** -- A Shadow DOM Web Component. Fully isolated from your app's styles.
|
|
80
|
+
3. **Server** -- Local Node.js process handling file I/O and proxying LLM calls. API keys never leave your machine.
|
|
81
|
+
4. **HMR** -- When the AI modifies source files, your dev server's hot module replacement picks up changes automatically.
|
|
89
82
|
|
|
90
|
-
|
|
83
|
+
Stop with `Ctrl+C`. No files modified. No dependencies added. No traces.
|
|
91
84
|
|
|
92
|
-
|
|
93
|
-
Ctrl+C
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Everything stops. No files modified. No dependencies added. No traces left in your project.
|
|
97
|
-
|
|
98
|
-
## Features
|
|
99
|
-
|
|
100
|
-
### Element Selection
|
|
101
|
-
Click any element in your app to capture its DOM structure, computed styles, and surrounding HTML. This context is sent to the LLM so it knows exactly what to modify.
|
|
102
|
-
|
|
103
|
-
### Screenshot Capture
|
|
104
|
-
Take a screenshot of the page or a specific element. Vision-capable models (GPT-4o, Claude, Gemini) use this to understand the visual layout.
|
|
105
|
-
|
|
106
|
-
### Network & Console Logs
|
|
107
|
-
OpenMagic automatically captures `fetch`/`XHR` requests and `console.log` output. This context helps the LLM understand API responses, errors, and application state.
|
|
108
|
-
|
|
109
|
-
### Multi-Repo Context
|
|
110
|
-
Working on a fullstack app? Add both your frontend and backend directories:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
npx openmagic --root ./my-frontend --root ./my-api
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
The LLM can read and modify files across both repositories.
|
|
117
|
-
|
|
118
|
-
### Streaming Responses
|
|
119
|
-
LLM responses stream in real-time. You see the AI thinking as it generates code.
|
|
120
|
-
|
|
121
|
-
### Code Modifications
|
|
122
|
-
The AI returns structured edits (search/replace on source files). Changes are applied directly and your dev server's HMR reflects them instantly.
|
|
85
|
+
---
|
|
123
86
|
|
|
124
87
|
## Supported Providers
|
|
125
88
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
|
132
|
-
|
|
133
|
-
| **
|
|
134
|
-
| **
|
|
135
|
-
| **
|
|
136
|
-
| **
|
|
137
|
-
| **
|
|
138
|
-
| **
|
|
139
|
-
| **
|
|
140
|
-
| **
|
|
141
|
-
| **
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
### Using Ollama (Free, Local)
|
|
89
|
+
14 providers, 70+ models. All pre-configured — select a provider, pick a model, paste your key.
|
|
90
|
+
|
|
91
|
+
| Provider | Notable Models | Vision | Thinking / Reasoning |
|
|
92
|
+
|----------|---------------|--------|---------------------|
|
|
93
|
+
| **OpenAI** | GPT-5.4, GPT-5.4 Pro/Mini/Nano, o3, o4-mini, Codex Mini | Yes | reasoning_effort |
|
|
94
|
+
| **Anthropic** | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5 | Yes | Extended thinking (budget_tokens) |
|
|
95
|
+
| **Google Gemini** | Gemini 3.1 Pro, 3 Flash, 2.5 Pro, 2.5 Flash | Yes | thinking_level |
|
|
96
|
+
| **xAI (Grok)** | Grok 4.20, Grok 4.20 Reasoning, Grok 4.1 Fast | Yes | reasoning_effort |
|
|
97
|
+
| **DeepSeek** | DeepSeek V3.2, DeepSeek R1 | -- | R1: reasoning_effort |
|
|
98
|
+
| **Mistral** | Large 3, Small 4, Codestral, Devstral 2, Magistral | Yes | Magistral: reasoning_effort |
|
|
99
|
+
| **MiniMax** | MiniMax models | Varies | -- |
|
|
100
|
+
| **Kimi** | Kimi models | Varies | -- |
|
|
101
|
+
| **Qwen** | Qwen models | Varies | -- |
|
|
102
|
+
| **Zhipu** | Zhipu (GLM) models | Varies | -- |
|
|
103
|
+
| **Doubao** | Doubao models | Varies | -- |
|
|
104
|
+
| **Groq** | Llama 4 Scout, Llama 3.3 70B, Qwen 3 32B | Llama 4 | -- |
|
|
105
|
+
| **Ollama** | Any local model (free, private) | Varies | -- |
|
|
106
|
+
| **OpenRouter** | 200+ models from all providers | Varies | Varies |
|
|
146
107
|
|
|
147
|
-
|
|
108
|
+
---
|
|
148
109
|
|
|
149
|
-
|
|
150
|
-
# Install Ollama
|
|
151
|
-
curl -fsSL https://ollama.com/install.sh | sh
|
|
110
|
+
## Keyboard Shortcuts
|
|
152
111
|
|
|
153
|
-
|
|
154
|
-
|
|
112
|
+
| Shortcut | Action |
|
|
113
|
+
|----------|--------|
|
|
114
|
+
| `Ctrl+Shift+O` | Toggle toolbar open/close |
|
|
115
|
+
| `Ctrl+Enter` | Send message |
|
|
116
|
+
| `Escape` | Close toolbar |
|
|
117
|
+
| Minimize button | Collapse to floating icon |
|
|
155
118
|
|
|
156
|
-
|
|
157
|
-
npx openmagic --port 3000
|
|
158
|
-
```
|
|
119
|
+
---
|
|
159
120
|
|
|
160
121
|
## Configuration
|
|
161
122
|
|
|
@@ -167,133 +128,114 @@ npx openmagic --port 3000
|
|
|
167
128
|
| `-l, --listen <port>` | OpenMagic proxy port | `4567` |
|
|
168
129
|
| `-r, --root <paths...>` | Project root directories | Current directory |
|
|
169
130
|
| `--host <host>` | Dev server host | `127.0.0.1` |
|
|
170
|
-
| `--no-open` |
|
|
131
|
+
| `--no-open` | Do not auto-open browser | `false` |
|
|
132
|
+
|
|
133
|
+
### Multi-Repo Support
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npx openmagic --port 3000 --root ./frontend --root ./backend
|
|
137
|
+
```
|
|
171
138
|
|
|
172
139
|
### Config File
|
|
173
140
|
|
|
174
|
-
Settings
|
|
141
|
+
Settings persist in `~/.openmagic/config.json` (your home directory, never in your project):
|
|
175
142
|
|
|
176
143
|
```json
|
|
177
144
|
{
|
|
178
145
|
"provider": "anthropic",
|
|
179
|
-
"model": "claude-
|
|
180
|
-
"apiKey": "sk-ant-..."
|
|
181
|
-
"roots": ["/path/to/project"]
|
|
146
|
+
"model": "claude-opus-4-6-20260326",
|
|
147
|
+
"apiKey": "sk-ant-..."
|
|
182
148
|
}
|
|
183
149
|
```
|
|
184
150
|
|
|
185
|
-
|
|
151
|
+
### Using Ollama (Free, Local)
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
ollama pull llama3.3
|
|
155
|
+
npx openmagic --port 3000
|
|
156
|
+
# Select "Ollama (Local)" as your provider
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
186
160
|
|
|
187
161
|
## Security
|
|
188
162
|
|
|
189
|
-
- **Localhost only**
|
|
190
|
-
- **Session tokens**
|
|
191
|
-
- **Path sandboxing**
|
|
192
|
-
- **API keys stay local**
|
|
193
|
-
- **Zero project modification**
|
|
194
|
-
- **
|
|
195
|
-
- **Diff preview** — AI-proposed code changes are shown as diffs with Apply/Reject buttons. Nothing is auto-applied.
|
|
163
|
+
- **Localhost only** -- The proxy and WebSocket bind to `127.0.0.1`. Not accessible from the network.
|
|
164
|
+
- **Session tokens** -- Each session generates a random token. The toolbar authenticates before accessing any API.
|
|
165
|
+
- **Path sandboxing** -- File operations are restricted to configured root directories. Symlinks that escape the root are rejected.
|
|
166
|
+
- **API keys stay local** -- Keys live in `~/.openmagic/config.json`. They are proxied through the local server, never exposed to the browser or any third party.
|
|
167
|
+
- **Zero project modification** -- OpenMagic never touches your `package.json`, config files, or source code during installation. The toolbar exists only in the proxy layer.
|
|
168
|
+
- **Diff preview** -- AI-proposed changes are shown as diffs with Approve/Reject buttons. Nothing is auto-applied without your consent.
|
|
196
169
|
|
|
197
|
-
|
|
170
|
+
---
|
|
198
171
|
|
|
199
|
-
|
|
172
|
+
## Known Limitations
|
|
200
173
|
|
|
201
|
-
|
|
202
|
-
|
|
174
|
+
Honesty matters. Here is what you should know:
|
|
175
|
+
|
|
176
|
+
- **Origin change** -- Your app runs on `:3000` but is accessed via `:4567`. This can affect OAuth redirect URIs, `localStorage` isolation, and Service Worker scope. Most dev workflows are unaffected, but apps that depend on `window.location.origin` may need dev config adjustments.
|
|
177
|
+
- **CSP via meta tags** -- OpenMagic strips CSP response headers to allow the toolbar script, but CSP defined in `<meta>` tags cannot be modified at the proxy level and may block the toolbar on strict pages.
|
|
178
|
+
- **Not for production** -- OpenMagic is a development tool. Do not deploy the proxy to production.
|
|
179
|
+
|
|
180
|
+
---
|
|
203
181
|
|
|
204
182
|
## Comparison
|
|
205
183
|
|
|
206
184
|
| Feature | OpenMagic | Stagewise | Frontman | Agentation |
|
|
207
185
|
|---------|-----------|-----------|----------|------------|
|
|
208
|
-
| Install
|
|
186
|
+
| Install | `npx openmagic` | npm + Electron | Framework middleware | npm package |
|
|
209
187
|
| Framework support | Any (reverse proxy) | React, Vue, Angular, Svelte | Next.js, Astro, Vite | React |
|
|
210
|
-
| Code modification | Yes (
|
|
211
|
-
| BYOK
|
|
188
|
+
| Code modification | Yes (diff + approve) | Yes (via IDE) | Yes | No (clipboard) |
|
|
189
|
+
| BYOK | Yes | Paid tiers | Yes | N/A |
|
|
212
190
|
| Prompt limits | None | 10 free/day | None | N/A |
|
|
213
|
-
| Vision
|
|
214
|
-
| Network
|
|
191
|
+
| Vision | Yes | Yes | No | No |
|
|
192
|
+
| Network profiling | Yes | No | Server-side | No |
|
|
215
193
|
| Multi-repo | Yes | No | No | No |
|
|
216
194
|
| IDE required | No | VS Code extension | No | No |
|
|
217
|
-
|
|
|
195
|
+
| License | MIT | Partial | Apache 2.0 | MIT |
|
|
196
|
+
|
|
197
|
+
---
|
|
218
198
|
|
|
219
199
|
## Framework Compatibility
|
|
220
200
|
|
|
221
|
-
OpenMagic works via
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
- Remix
|
|
231
|
-
- Solid
|
|
232
|
-
- Qwik
|
|
233
|
-
- Ember
|
|
234
|
-
- Django / Flask templates
|
|
235
|
-
- Rails views
|
|
236
|
-
- PHP (Laravel, WordPress)
|
|
237
|
-
- Plain HTML + any HTTP server
|
|
201
|
+
OpenMagic works via reverse proxy, so it supports any framework that serves HTML:
|
|
202
|
+
|
|
203
|
+
**JavaScript/TypeScript** -- React, Next.js, Vue, Nuxt, Angular, Svelte, SvelteKit, Astro, Remix, Solid, Qwik, Ember
|
|
204
|
+
|
|
205
|
+
**Server-rendered** -- Django, Flask, Rails, PHP (Laravel, WordPress)
|
|
206
|
+
|
|
207
|
+
**Static** -- Plain HTML with any HTTP server
|
|
208
|
+
|
|
209
|
+
---
|
|
238
210
|
|
|
239
211
|
## Contributing
|
|
240
212
|
|
|
241
213
|
```bash
|
|
242
|
-
# Clone the repo
|
|
243
214
|
git clone https://github.com/Kalmuraee/OpenMagic.git
|
|
244
|
-
cd
|
|
245
|
-
|
|
246
|
-
# Install dependencies
|
|
215
|
+
cd OpenMagic
|
|
247
216
|
npm install
|
|
248
|
-
|
|
249
|
-
# Build (CLI + Toolbar)
|
|
250
217
|
npm run build
|
|
251
|
-
|
|
252
|
-
# Test locally against a dev server running on port 3000
|
|
253
218
|
node dist/cli.js --port 3000
|
|
254
219
|
```
|
|
255
220
|
|
|
256
|
-
|
|
221
|
+
See the repo for project structure and contribution guidelines.
|
|
257
222
|
|
|
258
|
-
|
|
259
|
-
src/
|
|
260
|
-
cli.ts # CLI entry point (commander)
|
|
261
|
-
proxy.ts # Reverse proxy + HTML injection
|
|
262
|
-
server.ts # WebSocket + HTTP server
|
|
263
|
-
filesystem.ts # Safe file read/write
|
|
264
|
-
config.ts # User config management
|
|
265
|
-
security.ts # Session tokens
|
|
266
|
-
detect.ts # Dev server auto-detection
|
|
267
|
-
shared-types.ts # TypeScript interfaces
|
|
268
|
-
llm/
|
|
269
|
-
registry.ts # Pre-configured provider/model list
|
|
270
|
-
proxy.ts # Routes to correct provider adapter
|
|
271
|
-
openai.ts # OpenAI-compatible adapter
|
|
272
|
-
anthropic.ts # Anthropic adapter
|
|
273
|
-
google.ts # Google Gemini adapter
|
|
274
|
-
prompts.ts # System prompts for code modification
|
|
275
|
-
toolbar/
|
|
276
|
-
index.ts # Web Component (Shadow DOM)
|
|
277
|
-
services/
|
|
278
|
-
ws-client.ts # WebSocket client
|
|
279
|
-
dom-inspector.ts # Element inspection
|
|
280
|
-
capture.ts # Screenshot capture
|
|
281
|
-
context-builder.ts # Assembles LLM context
|
|
282
|
-
styles/
|
|
283
|
-
toolbar.css.ts # Scoped styles
|
|
284
|
-
```
|
|
223
|
+
---
|
|
285
224
|
|
|
286
|
-
##
|
|
225
|
+
## Changelog Highlights
|
|
287
226
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
-
|
|
291
|
-
-
|
|
292
|
-
-
|
|
293
|
-
-
|
|
294
|
-
-
|
|
295
|
-
-
|
|
296
|
-
-
|
|
227
|
+
| Version | Milestone |
|
|
228
|
+
|---------|-----------|
|
|
229
|
+
| v0.1 - v0.3 | Core reverse proxy, dev server auto-detection, initial toolbar |
|
|
230
|
+
| v0.4 - v0.7 | Robustness hardening, Chinese model providers, session auth |
|
|
231
|
+
| v0.8 - v0.10 | Complete toolbar rewrite, professional UI, security audit (19 fixes) |
|
|
232
|
+
| v0.11 - v0.14 | Single-port architecture, diff preview, per-provider keys, streaming |
|
|
233
|
+
| v0.15 - v0.17 | Network profiling, image attachments, HMR WebSocket fixes |
|
|
234
|
+
| v0.18 - v0.20 | Full element context (parents, siblings, React props), auto-retry grounding |
|
|
235
|
+
| v0.21 - v0.22 | Fuzzy diff matching, import chain following |
|
|
236
|
+
| v0.23 - v0.24 | Undo, keyboard shortcuts, minimize, markdown rendering, chat polish |
|
|
237
|
+
|
|
238
|
+
---
|
|
297
239
|
|
|
298
240
|
## Author
|
|
299
241
|
|
|
@@ -301,14 +243,14 @@ src/
|
|
|
301
243
|
|
|
302
244
|
## License
|
|
303
245
|
|
|
304
|
-
MIT
|
|
246
|
+
MIT -- Copyright (c) 2025-2026 Khalid Almuraee. See [LICENSE](./LICENSE) for details.
|
|
305
247
|
|
|
306
248
|
---
|
|
307
249
|
|
|
308
250
|
<div align="center">
|
|
309
251
|
|
|
310
|
-
**
|
|
252
|
+
**BYOK. Any framework. Zero lock-in.**
|
|
311
253
|
|
|
312
|
-
[Report a Bug](https://github.com/Kalmuraee/OpenMagic/issues)
|
|
254
|
+
[GitHub](https://github.com/Kalmuraee/OpenMagic) · [Website](https://kalmuraee.github.io/OpenMagic/) · [npm](https://www.npmjs.com/package/openmagic) · [Report a Bug](https://github.com/Kalmuraee/OpenMagic/issues) · [Request a Feature](https://github.com/Kalmuraee/OpenMagic/issues)
|
|
313
255
|
|
|
314
256
|
</div>
|
package/dist/cli.js
CHANGED
|
@@ -1447,7 +1447,7 @@ async function handleLlmChat(params, onChunk, onDone, onError) {
|
|
|
1447
1447
|
}
|
|
1448
1448
|
|
|
1449
1449
|
// src/server.ts
|
|
1450
|
-
var VERSION = "0.
|
|
1450
|
+
var VERSION = "0.25.0";
|
|
1451
1451
|
var __dirname = dirname2(fileURLToPath(import.meta.url));
|
|
1452
1452
|
function attachOpenMagic(httpServer, roots) {
|
|
1453
1453
|
function handleRequest(req, res) {
|
|
@@ -1980,7 +1980,7 @@ process.on("uncaughtException", (err) => {
|
|
|
1980
1980
|
process.exit(1);
|
|
1981
1981
|
});
|
|
1982
1982
|
var childProcesses = [];
|
|
1983
|
-
var VERSION2 = "0.
|
|
1983
|
+
var VERSION2 = "0.25.0";
|
|
1984
1984
|
function ask(question) {
|
|
1985
1985
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
1986
1986
|
return new Promise((resolve3) => {
|