aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/omi/.gitignore33
-rw-r--r--apps/omi/README.md21
-rw-r--r--apps/omi/package.json16
-rw-r--r--apps/omi/src/index.ts10
-rw-r--r--apps/omi/src/routes/chat.ts75
-rw-r--r--apps/omi/src/routes/index.ts23
-rw-r--r--apps/omi/src/routes/memory.ts82
-rw-r--r--apps/omi/src/types/chat.ts23
-rw-r--r--apps/omi/src/types/env.ts7
-rw-r--r--apps/omi/src/types/index.ts3
-rw-r--r--apps/omi/src/types/omi.ts33
-rw-r--r--apps/omi/src/utils/index.ts1
-rw-r--r--apps/omi/src/utils/supermemory.ts16
-rw-r--r--apps/omi/tsconfig.json14
-rw-r--r--apps/omi/wrangler.jsonc41
-rw-r--r--bun.lock142
16 files changed, 538 insertions, 2 deletions
diff --git a/apps/omi/.gitignore b/apps/omi/.gitignore
new file mode 100644
index 00000000..e319e063
--- /dev/null
+++ b/apps/omi/.gitignore
@@ -0,0 +1,33 @@
+# prod
+dist/
+
+# dev
+.yarn/
+!.yarn/releases
+.vscode/*
+!.vscode/launch.json
+!.vscode/*.code-snippets
+.idea/workspace.xml
+.idea/usage.statistics.xml
+.idea/shelf
+
+# deps
+node_modules/
+.wrangler
+
+# env
+.env
+.env.production
+.dev.vars
+
+# logs
+logs/
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+# misc
+.DS_Store
diff --git a/apps/omi/README.md b/apps/omi/README.md
new file mode 100644
index 00000000..eba2b1e4
--- /dev/null
+++ b/apps/omi/README.md
@@ -0,0 +1,21 @@
+```txt
+npm install
+npm run dev
+```
+
+```txt
+npm run deploy
+```
+
+[For generating/synchronizing types based on your Worker configuration run](https://developers.cloudflare.com/workers/wrangler/commands/#types):
+
+```txt
+npm run cf-typegen
+```
+
+Pass the `CloudflareBindings` as generics when instantiation `Hono`:
+
+```ts
+// src/index.ts
+const app = new Hono<{ Bindings: CloudflareBindings }>()
+```
diff --git a/apps/omi/package.json b/apps/omi/package.json
new file mode 100644
index 00000000..e08c5bab
--- /dev/null
+++ b/apps/omi/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "omi",
+ "type": "module",
+ "scripts": {
+ "dev": "wrangler dev",
+ "deploy": "wrangler deploy --minify",
+ "cf-typegen": "wrangler types --env-interface CloudflareBindings"
+ },
+ "dependencies": {
+ "hono": "^4.11.1",
+ "supermemory": "^latest"
+ },
+ "devDependencies": {
+ "wrangler": "^4.4.0"
+ }
+} \ No newline at end of file
diff --git a/apps/omi/src/index.ts b/apps/omi/src/index.ts
new file mode 100644
index 00000000..8aa2c4b4
--- /dev/null
+++ b/apps/omi/src/index.ts
@@ -0,0 +1,10 @@
+import { Hono } from "hono"
+import type { HonoEnv } from "./types"
+import { registerRoutes } from "./routes"
+
+const app = new Hono<HonoEnv>()
+
+// Register all routes
+registerRoutes(app)
+
+export default app
diff --git a/apps/omi/src/routes/chat.ts b/apps/omi/src/routes/chat.ts
new file mode 100644
index 00000000..2e0ce8c1
--- /dev/null
+++ b/apps/omi/src/routes/chat.ts
@@ -0,0 +1,75 @@
+import type { Context } from "hono"
+import type {
+ ChatRequest,
+ ChatResponse,
+ ErrorResponse,
+ HonoEnv,
+ SearchResult,
+} from "../types"
+import { createSupermemoryClient } from "../utils"
+
+/**
+ * Chat endpoint handler with memory search integration
+ */
+export async function handleChat(c: Context<HonoEnv>) {
+ try {
+ const body = await c.req.json<ChatRequest>()
+ const { message, userId } = body
+
+ if (!message || !userId) {
+ return c.json<ErrorResponse>(
+ {
+ error: "Missing required fields",
+ details: "Both 'message' and 'userId' are required",
+ },
+ 400,
+ )
+ }
+
+ if (!message.trim()) {
+ return c.json<ErrorResponse>({ error: "Message cannot be empty" }, 400)
+ }
+
+ const apiKey = c.env.SUPERMEMORY_API_KEY as string | undefined
+ const client = createSupermemoryClient(apiKey)
+
+ const searchResponse = await client.search.execute({
+ q: message,
+ containerTags: [`omi_user_${userId}`],
+ limit: 5,
+ chunkThreshold: 0.6,
+ includeFullDocs: true,
+ })
+
+ const memories = searchResponse.results || []
+
+ // Build context from memories
+ const memoryContext =
+ memories.length > 0
+ ? `\n\nRelevant memories:\n${memories
+ .map((m) => {
+ if ("memory" in m && m.memory) return `- ${m.memory}`
+ if ("chunk" in m && m.chunk) return `- ${m.chunk}`
+ if ("content" in m && m.content) return `- ${m.content}`
+ return `- ${JSON.stringify(m)}`
+ })
+ .join("\n")}`
+ : ""
+
+ return c.json<ChatResponse>({
+ message,
+ memories: memories.length,
+ context: memoryContext,
+ results: memories as unknown as SearchResult[],
+ })
+ } catch (error) {
+ console.error("Error in chat endpoint:", error)
+ return c.json<ErrorResponse>(
+ {
+ error: "Failed to process chat request",
+ details: error instanceof Error ? error.message : "Unknown error",
+ },
+ 500,
+ )
+ }
+}
diff --git a/apps/omi/src/routes/index.ts b/apps/omi/src/routes/index.ts
new file mode 100644
index 00000000..996dea76
--- /dev/null
+++ b/apps/omi/src/routes/index.ts
@@ -0,0 +1,23 @@
+import type { Hono } from "hono"
+import type { HonoEnv } from "../types"
+import { handleChat } from "./chat"
+import { handleMemoryCreation } from "./memory"
+
+/**
+ * Register all routes for the OMI <> supermemory app
+ */
+export function registerRoutes(app: Hono<HonoEnv>) {
+ // Health check endpoint
+ app.get("/", (c) => {
+ return c.json(
+ { message: "supermemory omi integration app is running" },
+ 200,
+ )
+ })
+
+ // Memory Creation Trigger endpoint
+ app.post("/memory", handleMemoryCreation)
+
+ // Chat endpoint with memory search
+ app.post("/chat", handleChat)
+}
diff --git a/apps/omi/src/routes/memory.ts b/apps/omi/src/routes/memory.ts
new file mode 100644
index 00000000..0a5972ff
--- /dev/null
+++ b/apps/omi/src/routes/memory.ts
@@ -0,0 +1,82 @@
+import type { Context } from "hono"
+import type { ErrorResponse, HonoEnv, OMIMemoryPayload } from "../types"
+import { createSupermemoryClient } from "../utils"
+
+/**
+ * Memory Creation Trigger endpoint handler
+ * Receives complete memory object when OMI conversation finishes
+ */
+export async function handleMemoryCreation(c: Context<HonoEnv>) {
+ try {
+ const uid = c.req.query("uid")
+ const body = await c.req.json()
+ console.log("body", body)
+ if (!uid) {
+ return c.json<ErrorResponse>({ error: "Missing uid parameter" }, 400)
+ }
+
+ const memory = await c.req.json<OMIMemoryPayload>()
+
+ // Extract transcript from segments
+ if (
+ !memory.transcript_segments ||
+ memory.transcript_segments.length === 0
+ ) {
+ return c.json<ErrorResponse>(
+ { error: "No transcript segments found" },
+ 400,
+ )
+ }
+
+ console.log("memory", memory)
+
+ const transcript = memory.transcript_segments
+ .map((seg) => seg.text)
+ .join(" ")
+
+ if (!transcript.trim()) {
+ return c.json<ErrorResponse>({ error: "Empty transcript" }, 400)
+ }
+
+ // Get API key from environment
+ const apiKey = c.env.SUPERMEMORY_API_KEY as string | undefined
+ const client = createSupermemoryClient(apiKey)
+
+ // Create memory in Supermemory
+ const result = await client.memories.add({
+ content: transcript,
+ containerTag: `omi_user_${uid}`,
+ metadata: {
+ source: "omi_device",
+ memory_id: memory.id,
+ created_at: memory.created_at,
+ started_at: memory.started_at,
+ finished_at: memory.finished_at,
+ ...(memory.structured?.title && { title: memory.structured.title }),
+ ...(memory.structured?.category && {
+ category: memory.structured.category,
+ }),
+ ...(memory.structured?.emoji && {
+ emoji: memory.structured.emoji,
+ }),
+ discarded: memory.discarded,
+ },
+ customId: `omi_${memory.id}`,
+ })
+
+ return c.json({
+ success: true,
+ memoryId: result.id,
+ status: result.status,
+ })
+ } catch (error) {
+ console.error("Error creating memory:", error)
+ return c.json<ErrorResponse>(
+ {
+ error: "Failed to create memory",
+ details: error instanceof Error ? error.message : "Unknown error",
+ },
+ 500,
+ )
+ }
+}
diff --git a/apps/omi/src/types/chat.ts b/apps/omi/src/types/chat.ts
new file mode 100644
index 00000000..af84241f
--- /dev/null
+++ b/apps/omi/src/types/chat.ts
@@ -0,0 +1,23 @@
+export interface ChatRequest {
+ message: string
+ userId: string
+}
+
+export interface SearchResult {
+ memory?: string
+ chunk?: string
+ content?: string | null
+ [id: string]: unknown
+}
+
+export interface ChatResponse {
+ message: string
+ memories: number
+ context: string
+ results?: SearchResult[]
+}
+
+export interface ErrorResponse {
+ error: string
+ details?: string
+}
diff --git a/apps/omi/src/types/env.ts b/apps/omi/src/types/env.ts
new file mode 100644
index 00000000..a5e1ca79
--- /dev/null
+++ b/apps/omi/src/types/env.ts
@@ -0,0 +1,7 @@
+export interface CloudflareBindings {
+ SUPERMEMORY_API_KEY?: string
+}
+
+export type HonoEnv = {
+ Bindings: CloudflareBindings
+}
diff --git a/apps/omi/src/types/index.ts b/apps/omi/src/types/index.ts
new file mode 100644
index 00000000..56ed9b08
--- /dev/null
+++ b/apps/omi/src/types/index.ts
@@ -0,0 +1,3 @@
+export * from "./env"
+export * from "./omi"
+export * from "./chat"
diff --git a/apps/omi/src/types/omi.ts b/apps/omi/src/types/omi.ts
new file mode 100644
index 00000000..90c8217c
--- /dev/null
+++ b/apps/omi/src/types/omi.ts
@@ -0,0 +1,33 @@
+// OMI-specific type definitions
+
+export interface OMITranscriptSegment {
+ text: string
+ speaker: string
+ speakerId: number
+ is_user: boolean
+ start: number
+ end: number
+}
+
+export interface OMIStructured {
+ title?: string
+ overview?: string
+ emoji?: string
+ category?: string
+ action_items?: Array<{
+ description: string
+ completed: boolean
+ }>
+ events?: unknown[]
+}
+
+export interface OMIMemoryPayload {
+ id: string
+ created_at: string
+ started_at: string
+ finished_at: string
+ transcript_segments: OMITranscriptSegment[]
+ structured?: OMIStructured
+ apps_response?: unknown[]
+ discarded: boolean
+}
diff --git a/apps/omi/src/utils/index.ts b/apps/omi/src/utils/index.ts
new file mode 100644
index 00000000..5048ee2a
--- /dev/null
+++ b/apps/omi/src/utils/index.ts
@@ -0,0 +1 @@
+export * from "./supermemory"
diff --git a/apps/omi/src/utils/supermemory.ts b/apps/omi/src/utils/supermemory.ts
new file mode 100644
index 00000000..c79763e4
--- /dev/null
+++ b/apps/omi/src/utils/supermemory.ts
@@ -0,0 +1,16 @@
+import Supermemory from "supermemory"
+
+/**
+ * Creates a Supermemory client instance with the provided API key
+ * @param apiKey - The Supermemory API key
+ * @returns Supermemory client instance
+ * @throws Error if API key is not provided
+ */
+export function createSupermemoryClient(
+ apiKey: string | undefined,
+): Supermemory {
+ if (!apiKey) {
+ throw new Error("SUPERMEMORY_API_KEY not configured")
+ }
+ return new Supermemory({ apiKey })
+}
diff --git a/apps/omi/tsconfig.json b/apps/omi/tsconfig.json
new file mode 100644
index 00000000..23345376
--- /dev/null
+++ b/apps/omi/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "strict": true,
+ "skipLibCheck": true,
+ "lib": [
+ "ESNext"
+ ],
+ "jsx": "react-jsx",
+ "jsxImportSource": "hono/jsx"
+ },
+} \ No newline at end of file
diff --git a/apps/omi/wrangler.jsonc b/apps/omi/wrangler.jsonc
new file mode 100644
index 00000000..cc9cb0a7
--- /dev/null
+++ b/apps/omi/wrangler.jsonc
@@ -0,0 +1,41 @@
+{
+ "$schema": "node_modules/wrangler/config-schema.json",
+ "name": "omi-supermemory",
+ "main": "src/index.ts",
+ "compatibility_date": "2025-12-02",
+ "observability": {
+ "enabled": true,
+ "head_sampling_rate": 1
+ }
+ // "compatibility_flags": [
+ // "nodejs_compat"
+ // ],
+ // Environment variables:
+ // Set SUPERMEMORY_API_KEY as a secret using: wrangler secret put SUPERMEMORY_API_KEY
+ // Or use vars for non-sensitive config:
+ // "vars": {
+ // "SUPERMEMORY_API_KEY": "your-api-key-here"
+ // },
+ // "kv_namespaces": [
+ // {
+ // "binding": "MY_KV_NAMESPACE",
+ // "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ // }
+ // ],
+ // "r2_buckets": [
+ // {
+ // "binding": "MY_BUCKET",
+ // "bucket_name": "my-bucket"
+ // }
+ // ],
+ // "d1_databases": [
+ // {
+ // "binding": "MY_DB",
+ // "database_name": "my-database",
+ // "database_id": ""
+ // }
+ // ],
+ // "ai": {
+ // "binding": "AI"
+ // },
+}
diff --git a/bun.lock b/bun.lock
index 11db6a9c..633738a4 100644
--- a/bun.lock
+++ b/bun.lock
@@ -100,6 +100,16 @@
"typescript": "^5",
},
},
+ "apps/omi": {
+ "name": "omi",
+ "dependencies": {
+ "hono": "^4.11.1",
+ "supermemory": "^latest",
+ },
+ "devDependencies": {
+ "wrangler": "^4.4.0",
+ },
+ },
"apps/raycast-extension": {
"name": "supermemory",
"dependencies": {
@@ -236,7 +246,7 @@
},
"packages/memory-graph": {
"name": "@supermemory/memory-graph",
- "version": "0.1.2",
+ "version": "0.1.7",
"dependencies": {
"@emotion/is-prop-valid": "^1.4.0",
"@radix-ui/react-collapsible": "^1.1.12",
@@ -2891,7 +2901,7 @@
"hoist-non-react-statics": ["[email protected]", "", { "dependencies": { "react-is": "^16.7.0" } }, "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="],
- "hono": ["[email protected]", "", {}, "sha512-icXIITfw/07Q88nLSkB9aiUrd8rYzSweK681Kjo/TSggaGbOX4RRyxxm71v+3PC8C/j+4rlxGeoTRxQDkaJkUw=="],
+ "hono": ["[email protected]", "", {}, "sha512-KsFcH0xxHes0J4zaQgWbYwmz3UPOOskdqZmItstUG93+Wk1ePBLkLGwbP9zlmh1BFUiL8Qp+Xfu9P7feJWpGNg=="],
"hono-openapi": ["[email protected]", "", { "dependencies": { "json-schema-walker": "^2.0.0" }, "peerDependencies": { "@hono/arktype-validator": "^2.0.0", "@hono/effect-validator": "^1.2.0", "@hono/typebox-validator": "^0.2.0 || ^0.3.0", "@hono/valibot-validator": "^0.5.1", "@hono/zod-validator": "^0.4.1", "@sinclair/typebox": "^0.34.9", "@valibot/to-json-schema": "^1.0.0-beta.3", "arktype": "^2.0.0", "effect": "^3.11.3", "hono": "^4.6.13", "openapi-types": "^12.1.3", "valibot": "^1.0.0-beta.9", "zod": "^3.23.8", "zod-openapi": "^4.0.0" }, "optionalPeers": ["@hono/arktype-validator", "@hono/effect-validator", "@hono/typebox-validator", "@hono/valibot-validator", "@hono/zod-validator", "@sinclair/typebox", "@valibot/to-json-schema", "arktype", "effect", "hono", "valibot", "zod", "zod-openapi"] }, "sha512-LYr5xdtD49M7hEAduV1PftOMzuT8ZNvkyWfh1DThkLsIr4RkvDb12UxgIiFbwrJB6FLtFXLoOZL9x4IeDk2+VA=="],
@@ -3519,6 +3529,8 @@
"ohash": ["[email protected]", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="],
+ "omi": ["omi@workspace:apps/omi"],
+
"on-exit-leak-free": ["[email protected]", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="],
"on-finished": ["[email protected]", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
@@ -5223,6 +5235,10 @@
"node-notifier/uuid": ["[email protected]", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="],
+ "omi/supermemory": ["[email protected]", "", {}, "sha512-xUTn6ElIIXwizj80ELDFgXjAcBpV9LtNz7kWl+PVQfVzFHM2lOguFHaDx6GoWuWW2GpnE3ikkKPCsKpvHFgqgg=="],
+
+ "omi/wrangler": ["[email protected]", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.1", "@cloudflare/unenv-preset": "2.7.13", "blake3-wasm": "2.1.5", "esbuild": "0.27.0", "miniflare": "4.20251202.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20251202.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20251202.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-/wvnHlRnlHsqaeIgGbmcEJE5NFYdTUWHCKow+U5Tv2XwQXI9vXUqBwCLAGy/BwqyS5nnycRt2kppqCzgHgyb7Q=="],
+
"openai/@types/node": ["@types/[email protected]", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="],
"pac-proxy-agent/agent-base": ["[email protected]", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
@@ -6159,6 +6175,18 @@
"node-notifier/is-wsl/is-docker": ["[email protected]", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="],
+ "omi/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/[email protected]", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-Nu8ahitGFFJztxUml9oD/DLb7Z28C8cd8F46IVQ7y5Btz575pvMY8AqZsXkX7Gds29eCKdMgIHjIvzskHgPSFg=="],
+
+ "omi/wrangler/@cloudflare/unenv-preset": ["@cloudflare/[email protected]", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": "^1.20251202.0" }, "optionalPeers": ["workerd"] }, "sha512-NulO1H8R/DzsJguLC0ndMuk4Ufv0KSlN+E54ay9rn9ZCQo0kpAPwwh3LhgpZ96a3Dr6L9LqW57M4CqC34iLOvw=="],
+
+ "omi/wrangler/esbuild": ["[email protected]", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.0", "@esbuild/android-arm": "0.27.0", "@esbuild/android-arm64": "0.27.0", "@esbuild/android-x64": "0.27.0", "@esbuild/darwin-arm64": "0.27.0", "@esbuild/darwin-x64": "0.27.0", "@esbuild/freebsd-arm64": "0.27.0", "@esbuild/freebsd-x64": "0.27.0", "@esbuild/linux-arm": "0.27.0", "@esbuild/linux-arm64": "0.27.0", "@esbuild/linux-ia32": "0.27.0", "@esbuild/linux-loong64": "0.27.0", "@esbuild/linux-mips64el": "0.27.0", "@esbuild/linux-ppc64": "0.27.0", "@esbuild/linux-riscv64": "0.27.0", "@esbuild/linux-s390x": "0.27.0", "@esbuild/linux-x64": "0.27.0", "@esbuild/netbsd-arm64": "0.27.0", "@esbuild/netbsd-x64": "0.27.0", "@esbuild/openbsd-arm64": "0.27.0", "@esbuild/openbsd-x64": "0.27.0", "@esbuild/openharmony-arm64": "0.27.0", "@esbuild/sunos-x64": "0.27.0", "@esbuild/win32-arm64": "0.27.0", "@esbuild/win32-ia32": "0.27.0", "@esbuild/win32-x64": "0.27.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA=="],
+
+ "omi/wrangler/miniflare": ["[email protected]", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "7.14.0", "workerd": "1.20251202.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-cRp2QNgnt9wpLMoNs4MOzzomyfe9UTS9sPRxIpUvxMl+mweCZ0FHpWWQvCnU7wWlfAP8VGZrHwqSsV5ERA6ahQ=="],
+
+ "omi/wrangler/unenv": ["[email protected]", "", { "dependencies": { "pathe": "^2.0.3" } }, "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw=="],
+
+ "omi/wrangler/workerd": ["[email protected]", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20251202.0", "@cloudflare/workerd-darwin-arm64": "1.20251202.0", "@cloudflare/workerd-linux-64": "1.20251202.0", "@cloudflare/workerd-linux-arm64": "1.20251202.0", "@cloudflare/workerd-windows-64": "1.20251202.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-p08YfrUMHkjCECNdT36r+6DpJIZX4kixbZ4n6GMUcLR5Gh18fakSCsiQrh72iOm4M9QHv/rM7P8YvCrUPWT5sg=="],
+
"openai/@types/node/undici-types": ["[email protected]", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
"public-ip/got/@sindresorhus/is": ["@sindresorhus/[email protected]", "", {}, "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g=="],
@@ -6523,6 +6551,78 @@
"memory-graph-playground/next/postcss/nanoid": ["[email protected]", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+ "omi/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/[email protected]", "", { "os": "aix", "cpu": "ppc64" }, "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A=="],
+
+ "omi/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm" }, "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ=="],
+
+ "omi/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "arm64" }, "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ=="],
+
+ "omi/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/[email protected]", "", { "os": "android", "cpu": "x64" }, "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q=="],
+
+ "omi/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg=="],
+
+ "omi/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g=="],
+
+ "omi/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw=="],
+
+ "omi/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/[email protected]", "", { "os": "freebsd", "cpu": "x64" }, "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ia32" }, "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "ppc64" }, "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "none" }, "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w=="],
+
+ "omi/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw=="],
+
+ "omi/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w=="],
+
+ "omi/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "x64" }, "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA=="],
+
+ "omi/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ=="],
+
+ "omi/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/[email protected]", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A=="],
+
+ "omi/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/[email protected]", "", { "os": "none", "cpu": "arm64" }, "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA=="],
+
+ "omi/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/[email protected]", "", { "os": "sunos", "cpu": "x64" }, "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA=="],
+
+ "omi/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "arm64" }, "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg=="],
+
+ "omi/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ=="],
+
+ "omi/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg=="],
+
+ "omi/wrangler/miniflare/sharp": ["[email protected]", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="],
+
+ "omi/wrangler/miniflare/undici": ["[email protected]", "", {}, "sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ=="],
+
+ "omi/wrangler/miniflare/ws": ["[email protected]", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="],
+
+ "omi/wrangler/miniflare/youch": ["[email protected]", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@poppinss/dumper": "^0.6.4", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.3" } }, "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ=="],
+
+ "omi/wrangler/miniflare/zod": ["[email protected]", "", {}, "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug=="],
+
+ "omi/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-/uvEAWEukTWb1geHhbjGUeZqcSSSyYzp0mvoPUBl+l0ont4NVGao3fgwM0q8wtKvgoKCHSG6zcG23wj9Opj3Nw=="],
+
+ "omi/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-f52xRvcI9cWRd6400EZStRtXiRC5XKEud7K5aFIbbUv0VeINltujFQQ9nHWtsF6g1quIXWkjhh5u01gPAYNNXA=="],
+
+ "omi/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-HYXinF5RBH7oXbsFUMmwKCj+WltpYbf5mRKUBG5v3EuPhUjSIFB84U+58pDyfBJjcynHdy3EtvTWcvh/+lcgow=="],
+
+ "omi/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-++L02Jdoxz7hEA9qDaQjbVU1RzQS+S+eqIi22DkPe2Tgiq2M3UfNpeu+75k5L9DGRIkZPYvwMBMbcmKvQqdIIg=="],
+
+ "omi/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-gzeU6eDydTi7ib+Q9DD/c0hpXtqPucnHk2tfGU03mljPObYxzMkkPGgB5qxpksFvub3y4K0ChjqYxGJB4F+j3g=="],
+
"serve-static/send/debug/ms": ["[email protected]", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
"unplugin/chokidar/readdirp/picomatch": ["[email protected]", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
@@ -6598,5 +6698,43 @@
"@repo/web/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
"@repo/web/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/[email protected]", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/[email protected]", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/[email protected]", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/[email protected]", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/[email protected]", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/[email protected]", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/[email protected]", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="],
+
+ "omi/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/[email protected]", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
}
}