@struktoai/mirage-browser 0.0.7-alpha.3 → 0.0.8-alpha.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.
- package/README.md +3 -2
- package/dist/pyodide-sw.js +48 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -164,7 +164,8 @@ in Mirage can resolve straight to a credential held in one of them.
|
|
|
164
164
|
### Python
|
|
165
165
|
|
|
166
166
|
```bash
|
|
167
|
-
uv add mirage-ai
|
|
167
|
+
uv add mirage-ai # installs the `mirage` library and the `mirage` CLI binary
|
|
168
|
+
uv add 'mirage-ai[openai]' # OpenAI Agents adapter; each agent framework is an extra
|
|
168
169
|
```
|
|
169
170
|
|
|
170
171
|
### TypeScript
|
|
@@ -172,7 +173,7 @@ uv add mirage-ai # installs the `mirage` library and the `mirage` CLI binary
|
|
|
172
173
|
```bash
|
|
173
174
|
npm install @struktoai/mirage-node # Node.js servers and CLIs
|
|
174
175
|
npm install @struktoai/mirage-browser # browser / edge runtimes
|
|
175
|
-
npm install @struktoai/mirage-
|
|
176
|
+
npm install @struktoai/mirage-vercel # Vercel AI adapter; each agent framework has its own package
|
|
176
177
|
```
|
|
177
178
|
|
|
178
179
|
Both runtime packages pull in `@struktoai/mirage-core` automatically.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const PARAM = "mirage-pyodide"
|
|
2
|
+
const FORMAT = "x-mirage-pyodide-format"
|
|
3
|
+
const answers = new Map()
|
|
4
|
+
|
|
5
|
+
function slot(id) {
|
|
6
|
+
let entry = answers.get(id)
|
|
7
|
+
if (entry === undefined) {
|
|
8
|
+
let settle
|
|
9
|
+
const answer = new Promise((resolve) => {
|
|
10
|
+
settle = resolve
|
|
11
|
+
})
|
|
12
|
+
entry = { answer, settle }
|
|
13
|
+
answers.set(id, entry)
|
|
14
|
+
}
|
|
15
|
+
return entry
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
self.addEventListener('install', () => {
|
|
19
|
+
if (self.registration.active === null) self.skipWaiting()
|
|
20
|
+
})
|
|
21
|
+
self.addEventListener('activate', (event) => {
|
|
22
|
+
event.waitUntil(self.clients.claim())
|
|
23
|
+
})
|
|
24
|
+
self.addEventListener('message', (event) => {
|
|
25
|
+
if (event.data === 'claim') event.waitUntil(self.clients.claim())
|
|
26
|
+
})
|
|
27
|
+
self.addEventListener('fetch', (event) => {
|
|
28
|
+
const url = new URL(event.request.url)
|
|
29
|
+
const op = url.searchParams.get(PARAM)
|
|
30
|
+
const id = url.searchParams.get('id') ?? ''
|
|
31
|
+
if (op === 'ping') {
|
|
32
|
+
event.respondWith(new Response(null, { status: 204, headers: { [FORMAT]: '' } }))
|
|
33
|
+
} else if (op === 'answer') {
|
|
34
|
+
event.respondWith(
|
|
35
|
+
event.request.arrayBuffer().then((body) => {
|
|
36
|
+
slot(id).settle({ body, format: event.request.headers.get(FORMAT) ?? '' })
|
|
37
|
+
return new Response(null, { status: 204, headers: { [FORMAT]: '' } })
|
|
38
|
+
}),
|
|
39
|
+
)
|
|
40
|
+
} else if (op === 'wait') {
|
|
41
|
+
event.respondWith(
|
|
42
|
+
slot(id).answer.then(({ body, format }) => {
|
|
43
|
+
answers.delete(id)
|
|
44
|
+
return new Response(body, { headers: { [FORMAT]: format } })
|
|
45
|
+
}),
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@struktoai/mirage-browser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8-alpha.1",
|
|
4
4
|
"description": "A Unified Virtual Filesystem For AI Agents",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bash",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
],
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@neondatabase/serverless": "^1.0.0",
|
|
56
|
-
"@struktoai/mirage-core": "0.0.
|
|
56
|
+
"@struktoai/mirage-core": "0.0.8-alpha.1"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@modelcontextprotocol/client": "^2.3.0",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
"scripts": {
|
|
76
|
-
"build": "node scripts/embed-wasm.mjs && node scripts/clean.mjs && tsc -p tsconfig.build.json",
|
|
76
|
+
"build": "node scripts/embed-wasm.mjs && node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/service-worker.mjs",
|
|
77
77
|
"test": "vitest run",
|
|
78
78
|
"typecheck": "tsc --noEmit"
|
|
79
79
|
}
|