theorum 0.1.3 → 0.1.4

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 (187) hide show
  1. package/README.md +30 -9
  2. package/deno.json +57 -0
  3. package/deno.lock +469 -0
  4. package/{esm/mod.d.ts → mod.ts} +57 -15
  5. package/package.json +35 -44
  6. package/src/cli/commands/profile.ts +57 -0
  7. package/src/cli/commands/run.ts +66 -0
  8. package/src/cli/commands/test.ts +195 -0
  9. package/src/cli/index.ts +161 -0
  10. package/src/cli/matrix/fixtures.ts +96 -0
  11. package/src/cli/matrix/synthesizer.ts +240 -0
  12. package/src/guardrails/error.ts +142 -0
  13. package/src/guardrails/injection.ts +254 -0
  14. package/src/guardrails/mod.ts +40 -0
  15. package/src/guardrails/quota.ts +87 -0
  16. package/src/guardrails/sanitize.ts +165 -0
  17. package/src/guardrails/sensitive.ts +96 -0
  18. package/src/host/mint-trace.ts +54 -0
  19. package/{esm/src/host/mod.js → src/host/mod.ts} +11 -3
  20. package/src/host/reply.ts +32 -0
  21. package/src/kernel/engine/assert.ts +29 -0
  22. package/src/kernel/engine/boundary.ts +75 -0
  23. package/src/kernel/engine/delta.ts +440 -0
  24. package/src/kernel/engine/hash.ts +11 -0
  25. package/src/kernel/engine/record.ts +8 -0
  26. package/src/kernel/engine/repair.ts +56 -0
  27. package/src/kernel/engine/runner/gates.ts +338 -0
  28. package/src/kernel/engine/runner/mod.ts +135 -0
  29. package/src/kernel/engine/runner/state.ts +31 -0
  30. package/src/kernel/engine/runner/steps.ts +183 -0
  31. package/src/kernel/engine/runner/stream.ts +83 -0
  32. package/src/kernel/engine/runner/tokens.ts +47 -0
  33. package/src/kernel/engine/runner/tools.ts +266 -0
  34. package/{esm/src/kernel/engine/runner.d.ts → src/kernel/engine/runner.ts} +2 -1
  35. package/src/kernel/engine/tree.ts +18 -0
  36. package/src/kernel/mod.ts +39 -0
  37. package/src/kernel/registry/attachments.ts +195 -0
  38. package/src/kernel/registry/catalog.ts +181 -0
  39. package/src/kernel/registry/ingress.ts +223 -0
  40. package/src/kernel/registry/profiles.ts +165 -0
  41. package/src/kernel/registry/provider-request.ts +31 -0
  42. package/src/kernel/registry/resolve.ts +290 -0
  43. package/src/kernel/registry/schemas.ts +29 -0
  44. package/src/kernel/registry/tools.ts +45 -0
  45. package/{esm/src/kernel/registry/vault.d.ts → src/kernel/registry/vault.ts} +17 -2
  46. package/src/kernel/types.ts +576 -0
  47. package/{esm/src/observability/mod.js → src/observability/mod.ts} +11 -2
  48. package/src/observability/spans.ts +70 -0
  49. package/src/observability/trace-attach.ts +96 -0
  50. package/src/observability/trace-record.ts +254 -0
  51. package/src/observability/trace-usage.ts +36 -0
  52. package/src/observability/trace.ts +143 -0
  53. package/src/presets/google.ts +147 -0
  54. package/src/presets/mod.ts +24 -0
  55. package/src/providers/create-provider.ts +64 -0
  56. package/src/providers/gemini-tape.ts +59 -0
  57. package/src/providers/google-tap.ts +57 -0
  58. package/src/providers/interactions.ts +182 -0
  59. package/src/providers/keys.ts +182 -0
  60. package/{esm/src/providers/mod.js → src/providers/mod.ts} +4 -2
  61. package/{esm/src/providers/openrouter-mod.js → src/providers/openrouter-mod.ts} +7 -3
  62. package/src/providers/openrouter-payload.ts +232 -0
  63. package/src/providers/openrouter.ts +758 -0
  64. package/src/providers/pcm.ts +37 -0
  65. package/src/providers/provider.ts +206 -0
  66. package/src/providers/speech.ts +180 -0
  67. package/src/providers/sse.ts +59 -0
  68. package/esm/_dnt.polyfills.d.ts +0 -110
  69. package/esm/_dnt.polyfills.js +0 -144
  70. package/esm/_dnt.shims.d.ts +0 -5
  71. package/esm/_dnt.shims.js +0 -61
  72. package/esm/mod.js +0 -49
  73. package/esm/package.json +0 -3
  74. package/esm/src/cli/commands/profile.d.ts +0 -2
  75. package/esm/src/cli/commands/profile.js +0 -53
  76. package/esm/src/cli/commands/run.d.ts +0 -10
  77. package/esm/src/cli/commands/run.js +0 -55
  78. package/esm/src/cli/commands/test.d.ts +0 -15
  79. package/esm/src/cli/commands/test.js +0 -140
  80. package/esm/src/cli/index.d.ts +0 -4
  81. package/esm/src/cli/index.js +0 -148
  82. package/esm/src/cli/matrix/fixtures.d.ts +0 -13
  83. package/esm/src/cli/matrix/fixtures.js +0 -77
  84. package/esm/src/cli/matrix/synthesizer.d.ts +0 -29
  85. package/esm/src/cli/matrix/synthesizer.js +0 -187
  86. package/esm/src/guardrails/error.d.ts +0 -33
  87. package/esm/src/guardrails/error.js +0 -114
  88. package/esm/src/guardrails/injection.d.ts +0 -12
  89. package/esm/src/guardrails/injection.js +0 -220
  90. package/esm/src/guardrails/mod.d.ts +0 -14
  91. package/esm/src/guardrails/mod.js +0 -14
  92. package/esm/src/guardrails/sanitize.d.ts +0 -22
  93. package/esm/src/guardrails/sanitize.js +0 -133
  94. package/esm/src/guardrails/sensitive.d.ts +0 -12
  95. package/esm/src/guardrails/sensitive.js +0 -88
  96. package/esm/src/host/mint-trace.d.ts +0 -27
  97. package/esm/src/host/mint-trace.js +0 -33
  98. package/esm/src/host/mod.d.ts +0 -13
  99. package/esm/src/host/reply.d.ts +0 -14
  100. package/esm/src/host/reply.js +0 -27
  101. package/esm/src/kernel/engine/boundary.d.ts +0 -10
  102. package/esm/src/kernel/engine/boundary.js +0 -55
  103. package/esm/src/kernel/engine/delta.d.ts +0 -8
  104. package/esm/src/kernel/engine/delta.js +0 -389
  105. package/esm/src/kernel/engine/hash.d.ts +0 -1
  106. package/esm/src/kernel/engine/hash.js +0 -9
  107. package/esm/src/kernel/engine/record.d.ts +0 -2
  108. package/esm/src/kernel/engine/record.js +0 -7
  109. package/esm/src/kernel/engine/repair.d.ts +0 -7
  110. package/esm/src/kernel/engine/repair.js +0 -38
  111. package/esm/src/kernel/engine/runner/gates.d.ts +0 -4
  112. package/esm/src/kernel/engine/runner/gates.js +0 -206
  113. package/esm/src/kernel/engine/runner/mod.d.ts +0 -14
  114. package/esm/src/kernel/engine/runner/mod.js +0 -103
  115. package/esm/src/kernel/engine/runner/state.d.ts +0 -16
  116. package/esm/src/kernel/engine/runner/state.js +0 -8
  117. package/esm/src/kernel/engine/runner/steps.d.ts +0 -15
  118. package/esm/src/kernel/engine/runner/steps.js +0 -119
  119. package/esm/src/kernel/engine/runner/stream.d.ts +0 -11
  120. package/esm/src/kernel/engine/runner/stream.js +0 -65
  121. package/esm/src/kernel/engine/runner/tokens.d.ts +0 -3
  122. package/esm/src/kernel/engine/runner/tokens.js +0 -38
  123. package/esm/src/kernel/engine/runner/tools.d.ts +0 -13
  124. package/esm/src/kernel/engine/runner/tools.js +0 -197
  125. package/esm/src/kernel/engine/runner.js +0 -6
  126. package/esm/src/kernel/engine/tree.d.ts +0 -2
  127. package/esm/src/kernel/engine/tree.js +0 -17
  128. package/esm/src/kernel/mod.d.ts +0 -18
  129. package/esm/src/kernel/mod.js +0 -16
  130. package/esm/src/kernel/registry/attachments.d.ts +0 -16
  131. package/esm/src/kernel/registry/attachments.js +0 -156
  132. package/esm/src/kernel/registry/catalog.d.ts +0 -31
  133. package/esm/src/kernel/registry/catalog.js +0 -135
  134. package/esm/src/kernel/registry/ingress.d.ts +0 -13
  135. package/esm/src/kernel/registry/ingress.js +0 -163
  136. package/esm/src/kernel/registry/profiles.d.ts +0 -34
  137. package/esm/src/kernel/registry/profiles.js +0 -120
  138. package/esm/src/kernel/registry/provider-request.d.ts +0 -4
  139. package/esm/src/kernel/registry/provider-request.js +0 -25
  140. package/esm/src/kernel/registry/resolve.d.ts +0 -19
  141. package/esm/src/kernel/registry/resolve.js +0 -217
  142. package/esm/src/kernel/registry/schemas.d.ts +0 -14
  143. package/esm/src/kernel/registry/schemas.js +0 -23
  144. package/esm/src/kernel/registry/tools.d.ts +0 -12
  145. package/esm/src/kernel/registry/tools.js +0 -36
  146. package/esm/src/kernel/registry/vault.js +0 -18
  147. package/esm/src/kernel/types.d.ts +0 -521
  148. package/esm/src/kernel/types.js +0 -10
  149. package/esm/src/observability/mod.d.ts +0 -12
  150. package/esm/src/observability/spans.d.ts +0 -16
  151. package/esm/src/observability/spans.js +0 -56
  152. package/esm/src/observability/trace-attach.d.ts +0 -16
  153. package/esm/src/observability/trace-attach.js +0 -67
  154. package/esm/src/observability/trace-record.d.ts +0 -112
  155. package/esm/src/observability/trace-record.js +0 -140
  156. package/esm/src/observability/trace-usage.d.ts +0 -3
  157. package/esm/src/observability/trace-usage.js +0 -32
  158. package/esm/src/observability/trace.d.ts +0 -23
  159. package/esm/src/observability/trace.js +0 -121
  160. package/esm/src/presets/google.d.ts +0 -50
  161. package/esm/src/presets/google.js +0 -96
  162. package/esm/src/presets/mod.d.ts +0 -11
  163. package/esm/src/presets/mod.js +0 -10
  164. package/esm/src/providers/create-provider.d.ts +0 -29
  165. package/esm/src/providers/create-provider.js +0 -38
  166. package/esm/src/providers/gemini-tape.d.ts +0 -2
  167. package/esm/src/providers/gemini-tape.js +0 -46
  168. package/esm/src/providers/google-tap.d.ts +0 -3
  169. package/esm/src/providers/google-tap.js +0 -48
  170. package/esm/src/providers/interactions.d.ts +0 -5
  171. package/esm/src/providers/interactions.js +0 -152
  172. package/esm/src/providers/keys.d.ts +0 -19
  173. package/esm/src/providers/keys.js +0 -129
  174. package/esm/src/providers/mod.d.ts +0 -12
  175. package/esm/src/providers/openrouter-mod.d.ts +0 -13
  176. package/esm/src/providers/openrouter-payload.d.ts +0 -32
  177. package/esm/src/providers/openrouter-payload.js +0 -179
  178. package/esm/src/providers/openrouter.d.ts +0 -15
  179. package/esm/src/providers/openrouter.js +0 -589
  180. package/esm/src/providers/pcm.d.ts +0 -7
  181. package/esm/src/providers/pcm.js +0 -35
  182. package/esm/src/providers/provider.d.ts +0 -15
  183. package/esm/src/providers/provider.js +0 -166
  184. package/esm/src/providers/speech.d.ts +0 -23
  185. package/esm/src/providers/speech.js +0 -125
  186. package/esm/src/providers/sse.d.ts +0 -7
  187. package/esm/src/providers/sse.js +0 -53
package/README.md CHANGED
@@ -16,6 +16,8 @@ THEORUM is a compact TypeScript agent kernel for apps that need deterministic ag
16
16
 
17
17
  The package is intentionally **not** an agent product. It ships no app profiles, no prompts, no secrets, no database policy, no business rules, and no channel-specific UX. Those belong in the host application.
18
18
 
19
+ OpenRouter chat transport is powered by Vercel AI SDK Core under the adapter. THEORUM keeps the runner contract, guardrails, tool permissions, egress, media buffering, and trace event shape; AI SDK handles the OpenRouter request/stream/tool-call normalization layer.
20
+
19
21
  ---
20
22
 
21
23
  ## Core Principles
@@ -62,7 +64,7 @@ flowchart TD
62
64
  end
63
65
 
64
66
  subgraph Providers["Provider adapters"]
65
- OR["OpenRouter chat"]
67
+ OR["OpenRouter chat via Vercel AI SDK Core"]
66
68
  GI["Google Interactions"]
67
69
  Speech["Speech (Interactions or /audio/speech)"]
68
70
  end
@@ -149,10 +151,11 @@ const profile = defineProfile({
149
151
  model: {
150
152
  protocol: "openAi",
151
153
  provider: "openrouter",
152
- allow: ["gemini35FlashLite"],
154
+ allow: ["hostFastModel"],
153
155
  config: {
154
- gemini35FlashLite: {
155
- apiId: "gemini-3.5-flash-lite",
156
+ hostFastModel: {
157
+ apiId: "perplexity/sonar",
158
+ openRouterId: "perplexity/sonar",
156
159
  thinking: { on: "high", off: "minimal" },
157
160
  thinkingLevels: ["minimal", "low", "medium", "high"],
158
161
  summaries: { on: "auto", off: "none" },
@@ -235,10 +238,11 @@ Inbound and outbound safety are generic kernel hooks.
235
238
  const guardedProfile = defineProfile({
236
239
  id: "assistant.guarded",
237
240
  model: {
238
- allow: ["gemini35FlashLite"],
241
+ allow: ["hostFastModel"],
239
242
  config: {
240
- gemini35FlashLite: {
241
- apiId: "gemini-3.5-flash-lite",
243
+ hostFastModel: {
244
+ apiId: "perplexity/sonar",
245
+ openRouterId: "perplexity/sonar",
242
246
  thinking: { on: "high", off: "minimal" },
243
247
  thinkingLevels: ["minimal", "low", "medium", "high"],
244
248
  summaries: { on: "auto", off: "none" },
@@ -299,7 +303,9 @@ for await (const event of runTurn({ profile: profile.id, input: { text: "…" }
299
303
  | `openAi` + `openrouter` (chat) | OpenRouter chat completions |
300
304
  | `openAi` + `openrouter` (speech role) | OpenRouter `/audio/speech` |
301
305
 
302
- Advanced payload helpers live under `theorum/openrouter` (`toOpenRouterPayload`, …). Prefer `createProvider` for turns.
306
+ OpenRouter uses Vercel AI SDK Core inside THEORUM's provider adapter. The adapter still emits THEORUM `TurnEvent` values and preserves raw provider evidence for citations/provenance where the normalized SDK stream does not expose enough detail.
307
+
308
+ Advanced OpenRouter exports live under `theorum/openrouter` (`createOpenRouterProvider`, `toOpenRouterPayload`, …). Prefer `createProvider` for turns unless the host needs to wire the OpenRouter adapter directly.
303
309
 
304
310
  ---
305
311
 
@@ -310,7 +316,7 @@ Advanced payload helpers live under `theorum/openrouter` (`toOpenRouterPayload`,
310
316
  | `jsr:@theorum/core` / `theorum` | Main kernel API: profiles, schemas, runner, core types, provider constructors. |
311
317
  | `jsr:@theorum/core/kernel` / `theorum/kernel` | Profile/turn types, tool catalog, `requireModelSpec`, thinking clamps over host model maps. |
312
318
  | `jsr:@theorum/core/providers` / `theorum/providers` | `createProvider` + Gemini vault types. |
313
- | `jsr:@theorum/core/openrouter` / `theorum/openrouter` | OpenRouter payload helpers (advanced). |
319
+ | `jsr:@theorum/core/openrouter` / `theorum/openrouter` | Direct OpenRouter provider adapter and payload helpers (advanced). |
314
320
  | `jsr:@theorum/core/guardrails` / `theorum/guardrails` | Sanitization, public error mapping, inbound injection/sensitive-data primitives. |
315
321
  | `jsr:@theorum/core/observability` / `theorum/observability` | Trace sinks and trace record helpers. |
316
322
  | `jsr:@theorum/core/host` / `theorum/host` | Optional Deno HTTP helpers (`json`, status mapping, cutout mint flush). |
@@ -347,6 +353,21 @@ cd npm
347
353
  npm pack
348
354
  ```
349
355
 
356
+ Run a live OpenRouter smoke test with a host-resolved key. The key is passed as an argument and is never read from a Theorum `.env` file.
357
+
358
+ ```bash
359
+ deno run --allow-net scripts/verify-live.ts --api-key "$OPENROUTER_API_KEY"
360
+ ```
361
+
362
+ The default live verifier uses `perplexity/sonar` because it is broadly available on OpenRouter. Hosts can override both the profile-facing model id and provider-native id:
363
+
364
+ ```bash
365
+ deno run --allow-net scripts/verify-live.ts \
366
+ --api-key "$OPENROUTER_API_KEY" \
367
+ --model hostFastModel \
368
+ --api-id perplexity/sonar
369
+ ```
370
+
350
371
  ---
351
372
 
352
373
  ## Package Boundary
package/deno.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@theorum/core",
3
+ "version": "0.1.4",
4
+ "description": "A flat TypeScript agent kernel for typed profiles, deterministic turn execution, dynamic tools, provider adapters, guardrails, and host-injected traces.",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "agent",
8
+ "ai",
9
+ "kernel",
10
+ "llm",
11
+ "typescript",
12
+ "deno",
13
+ "node",
14
+ "openrouter",
15
+ "gemini"
16
+ ],
17
+ "exports": {
18
+ ".": "./mod.ts",
19
+ "./kernel": "./src/kernel/mod.ts",
20
+ "./providers": "./src/providers/mod.ts",
21
+ "./openrouter": "./src/providers/openrouter-mod.ts",
22
+ "./guardrails": "./src/guardrails/mod.ts",
23
+ "./observability": "./src/observability/mod.ts",
24
+ "./host": "./src/host/mod.ts",
25
+ "./cli": "./src/cli/index.ts",
26
+ "./presets": "./src/presets/mod.ts",
27
+ "./presets/google": "./src/presets/google.ts"
28
+ },
29
+ "publish": {
30
+ "exclude": [
31
+ ".fallow/",
32
+ ".fallowrc.jsonc",
33
+ ".github/",
34
+ "ast-grep-rules/",
35
+ "biome.json",
36
+ "coverage/",
37
+ "node_modules/",
38
+ "npm/",
39
+ "package-lock.json",
40
+ "scripts/",
41
+ "sgconfig.yml",
42
+ "tests/"
43
+ ]
44
+ },
45
+ "imports": {
46
+ "@openrouter/ai-sdk-provider": "npm:@openrouter/ai-sdk-provider@1.5.4",
47
+ "ai": "npm:ai@5.0.244",
48
+ "@std/assert": "jsr:@std/assert@^1.0.0"
49
+ },
50
+ "tasks": {
51
+ "theorum": "deno run --allow-read --allow-write --allow-net src/cli/index.ts",
52
+ "test": "deno test --allow-read --allow-write --allow-net tests/",
53
+ "check": "deno check mod.ts",
54
+ "lint": "npm run lint",
55
+ "verify:live": "deno run --allow-net scripts/verify-live.ts"
56
+ }
57
+ }
package/deno.lock ADDED
@@ -0,0 +1,469 @@
1
+ {
2
+ "version": "5",
3
+ "specifiers": {
4
+ "jsr:@david/code-block-writer@^13.0.3": "13.0.3",
5
+ "jsr:@deno/dnt@*": "0.43.2",
6
+ "jsr:@deno/dnt@0.43.2": "0.43.2",
7
+ "jsr:@std/assert@1": "1.0.19",
8
+ "jsr:@std/fmt@1": "1.0.10",
9
+ "jsr:@std/fs@1": "1.0.24",
10
+ "jsr:@std/internal@^1.0.12": "1.0.14",
11
+ "jsr:@std/internal@^1.0.14": "1.0.14",
12
+ "jsr:@std/path@1": "1.1.6",
13
+ "jsr:@std/path@^1.1.5": "1.1.6",
14
+ "jsr:@ts-morph/bootstrap@0.29": "0.29.0",
15
+ "jsr:@ts-morph/common@0.29": "0.29.0",
16
+ "npm:@ast-grep/cli@0.41": "0.41.1",
17
+ "npm:@biomejs/biome@^2.5.8": "2.5.10",
18
+ "npm:@openrouter/ai-sdk-provider@1.5.4": "1.5.4_ai@5.0.244__zod@4.4.3_zod@4.4.3",
19
+ "npm:ai@5.0.244": "5.0.244_zod@4.4.3",
20
+ "npm:fallow@3.17.0": "3.17.0"
21
+ },
22
+ "jsr": {
23
+ "@david/code-block-writer@13.0.3": {
24
+ "integrity": "f98c77d320f5957899a61bfb7a9bead7c6d83ad1515daee92dbacc861e13bb7f"
25
+ },
26
+ "@deno/dnt@0.43.2": {
27
+ "integrity": "8068703a782f389d9fcb4ead32809ca666d3b088262a23f1d9016cbc9af5d37f",
28
+ "dependencies": [
29
+ "jsr:@david/code-block-writer",
30
+ "jsr:@std/fmt",
31
+ "jsr:@std/fs",
32
+ "jsr:@std/path@1",
33
+ "jsr:@ts-morph/bootstrap"
34
+ ]
35
+ },
36
+ "@std/assert@1.0.19": {
37
+ "integrity": "eaada96ee120cb980bc47e040f82814d786fe8162ecc53c91d8df60b8755991e",
38
+ "dependencies": [
39
+ "jsr:@std/internal@^1.0.12"
40
+ ]
41
+ },
42
+ "@std/fmt@1.0.10": {
43
+ "integrity": "90dfba288802ac6de82fb31d0917eb9e4450b9925b954d5e51fc29ac07419db5"
44
+ },
45
+ "@std/fs@1.0.24": {
46
+ "integrity": "f3061b45b81673a2bece689da041df32d174be064c89eb6397fb5718d3fb7877",
47
+ "dependencies": [
48
+ "jsr:@std/internal@^1.0.14",
49
+ "jsr:@std/path@^1.1.5"
50
+ ]
51
+ },
52
+ "@std/internal@1.0.14": {
53
+ "integrity": "291516b3d4c35024d6ffbc0a9df5bf4c64116e05b50012cf846710152d2ffdf7"
54
+ },
55
+ "@std/path@1.1.6": {
56
+ "integrity": "c68485c2a4dfbb5ae3cc74fae4e8c4e5d874cf8a8ed12927917235c758b46cbe",
57
+ "dependencies": [
58
+ "jsr:@std/internal@^1.0.14"
59
+ ]
60
+ },
61
+ "@ts-morph/bootstrap@0.29.0": {
62
+ "integrity": "69f9b1b42b03423308a9f623f924174181ef20f6f2a8771799f216f561b9b7a6",
63
+ "dependencies": [
64
+ "jsr:@ts-morph/common"
65
+ ]
66
+ },
67
+ "@ts-morph/common@0.29.0": {
68
+ "integrity": "14e8f44c5e4297628cf756aed071787dc026c493e36c1cc29ce49dc95e493f8f",
69
+ "dependencies": [
70
+ "jsr:@std/fs",
71
+ "jsr:@std/path@1"
72
+ ]
73
+ }
74
+ },
75
+ "npm": {
76
+ "@ai-sdk/gateway@2.0.139_zod@4.4.3": {
77
+ "integrity": "sha512-cunSy/lp6q48sOudMEnlWsCTITBg02LP0ZeLW5DophMH90IWxSm5DAspiTEfoS04UEZiZKKtrlNhmatI0ZK8Vg==",
78
+ "dependencies": [
79
+ "@ai-sdk/provider",
80
+ "@ai-sdk/provider-utils",
81
+ "@vercel/oidc",
82
+ "zod"
83
+ ]
84
+ },
85
+ "@ai-sdk/provider-utils@3.0.32_zod@4.4.3": {
86
+ "integrity": "sha512-izgUo50kamJMwoYCXoFwVccuJeyYp0y1+twf0FfpEz7kdQBloZLZbgLYUOUpannLWrV7xYSJR48BQJIQFbFiAQ==",
87
+ "dependencies": [
88
+ "@ai-sdk/provider",
89
+ "@standard-schema/spec",
90
+ "eventsource-parser",
91
+ "undici",
92
+ "zod"
93
+ ]
94
+ },
95
+ "@ai-sdk/provider@2.0.3": {
96
+ "integrity": "sha512-h88OPkavHTiN9tMn2l5awAznGB0lXzjcLhgR1/rvjB2zlLprsNxbM2tt6OJsHUxduLC3klq0/eqaSf6fX5XVww==",
97
+ "dependencies": [
98
+ "json-schema"
99
+ ]
100
+ },
101
+ "@ast-grep/cli-darwin-arm64@0.41.1": {
102
+ "integrity": "sha512-30lrXtyDB+16WS89Bk8sufA5TVUczyQye4PoIYLxZr+PRbPW7thpxHwBwGWL6QvPvUtlElrCe4seA1CEwFxeFA==",
103
+ "os": ["darwin"],
104
+ "cpu": ["arm64"]
105
+ },
106
+ "@ast-grep/cli-darwin-x64@0.41.1": {
107
+ "integrity": "sha512-jRft57aWRgqYgLXooWxS9Nx5mb5JJ/KQIwEqacWkcmDZEdEui7oG50//6y4/vU5WRcS1n6oB2Vs7WBvTh3/Ypg==",
108
+ "os": ["darwin"],
109
+ "cpu": ["x64"]
110
+ },
111
+ "@ast-grep/cli-linux-arm64-gnu@0.41.1": {
112
+ "integrity": "sha512-1XUL+8u+Xs1FoM2W6F4v8pRa2aQQcp5CZXBG8uy9n8FhwsQtrhBclJ2Vr9g/zzswHQT1293mnP5TOk1wlYZq6w==",
113
+ "os": ["linux"],
114
+ "cpu": ["arm64"]
115
+ },
116
+ "@ast-grep/cli-linux-x64-gnu@0.41.1": {
117
+ "integrity": "sha512-oSsbXzbcl4hnRAw7b1bTFZapx9s+O8ToJJKI44oJAb7xKIG3Rubn2IMBOFvMvjjWEEax8PpS2IocgdB8nUAcbA==",
118
+ "os": ["linux"],
119
+ "cpu": ["x64"]
120
+ },
121
+ "@ast-grep/cli-win32-arm64-msvc@0.41.1": {
122
+ "integrity": "sha512-jTMNqjXnQUhInMB1X06sxWZJv/6pd4/iYSyk8RR5kdulnuNzoGEB9KYbm6ojxktPtMfZpb+7eShQLqqy/dG6Ag==",
123
+ "os": ["win32"],
124
+ "cpu": ["arm64"]
125
+ },
126
+ "@ast-grep/cli-win32-ia32-msvc@0.41.1": {
127
+ "integrity": "sha512-mCTyr6/KQneKk0iYaWup4ywW5buNcFqL6TrJVfU0tkd38fu/RtJ5zywr978vVvFxsY+urRU0qkrmtQqXQNwDFA==",
128
+ "os": ["win32"],
129
+ "cpu": ["ia32"]
130
+ },
131
+ "@ast-grep/cli-win32-x64-msvc@0.41.1": {
132
+ "integrity": "sha512-AUbR67UKWsfgyy3SWQq258ZB0xSlaAe15Gl5hPu5tbUu4HTt6rKrUCTEEubYgbNdPPZWtxjobjFjMsDTWfnrug==",
133
+ "os": ["win32"],
134
+ "cpu": ["x64"]
135
+ },
136
+ "@ast-grep/cli@0.41.1": {
137
+ "integrity": "sha512-6oSuzF1Ra0d9jdcmflRIR1DHcicI7TYVxaaV/hajV51J49r6C+1BA2H9G+e47lH4sDEXUS9KWLNGNvXa/Gqs5A==",
138
+ "dependencies": [
139
+ "detect-libc"
140
+ ],
141
+ "optionalDependencies": [
142
+ "@ast-grep/cli-darwin-arm64",
143
+ "@ast-grep/cli-darwin-x64",
144
+ "@ast-grep/cli-linux-arm64-gnu",
145
+ "@ast-grep/cli-linux-x64-gnu",
146
+ "@ast-grep/cli-win32-arm64-msvc",
147
+ "@ast-grep/cli-win32-ia32-msvc",
148
+ "@ast-grep/cli-win32-x64-msvc"
149
+ ],
150
+ "scripts": true,
151
+ "bin": true
152
+ },
153
+ "@biomejs/biome@2.5.10": {
154
+ "integrity": "sha512-WRKXARA3kTuiV5sxqTpobJ/I0MVd4vk3pOL6wnp5az4LntFIhWTj1RWZq3DI9PCEN3lXcqy7p5aqUHzvq8AXyQ==",
155
+ "optionalDependencies": [
156
+ "@biomejs/cli-darwin-arm64",
157
+ "@biomejs/cli-darwin-x64",
158
+ "@biomejs/cli-linux-arm64",
159
+ "@biomejs/cli-linux-arm64-musl",
160
+ "@biomejs/cli-linux-x64",
161
+ "@biomejs/cli-linux-x64-musl",
162
+ "@biomejs/cli-win32-arm64",
163
+ "@biomejs/cli-win32-x64"
164
+ ],
165
+ "bin": true
166
+ },
167
+ "@biomejs/cli-darwin-arm64@2.5.10": {
168
+ "integrity": "sha512-ItCrxKK6SXVT6flYs0qIuBd4AA3TTTl4d66Re6YI2FuGZnN85NmuYNzkiTJUyYw8qBLv69L5zTUB6uyWd++h3Q==",
169
+ "os": ["darwin"],
170
+ "cpu": ["arm64"]
171
+ },
172
+ "@biomejs/cli-darwin-x64@2.5.10": {
173
+ "integrity": "sha512-yLsPU9pAmtChXDu8vhKAzErqe+LeeYuwuUB2FZMkRitsmdodxsYRa9KHrFispsUHzzOu+9HB3nP/TQxyia+Sjw==",
174
+ "os": ["darwin"],
175
+ "cpu": ["x64"]
176
+ },
177
+ "@biomejs/cli-linux-arm64-musl@2.5.10": {
178
+ "integrity": "sha512-t1QAKZwQJRB4dvgJSgFiQ4BNfNPChg69BNonz854qLVxnjT3UvDzQg9mbkTJRu35ZqU0Rw10A73J8Urgbg2RPw==",
179
+ "os": ["linux"],
180
+ "cpu": ["arm64"]
181
+ },
182
+ "@biomejs/cli-linux-arm64@2.5.10": {
183
+ "integrity": "sha512-VG8uQW/86a1roLaIFvtIbEigxIdzdJ190oGyg1tV7VYeQtOS+x10sflk7WbuXgw91EtZX5DlIIIej1YqkNLlcg==",
184
+ "os": ["linux"],
185
+ "cpu": ["arm64"]
186
+ },
187
+ "@biomejs/cli-linux-x64-musl@2.5.10": {
188
+ "integrity": "sha512-pgDDqp9JybHm2I0KRgzN6i4+lt8xu4iqxUwLzglUMmOmyRTU1AYBGKzh9sNMOtIjah7xoWvKHlLVetvyifzoiQ==",
189
+ "os": ["linux"],
190
+ "cpu": ["x64"]
191
+ },
192
+ "@biomejs/cli-linux-x64@2.5.10": {
193
+ "integrity": "sha512-4O6T0eq2heoHZN0a9UX+rWQoxXEBaKf+lRi2hbsGlHneUz9BWXM76nEWMK7Eeq8gzMxR1khQB6BFpAASpeXqGg==",
194
+ "os": ["linux"],
195
+ "cpu": ["x64"]
196
+ },
197
+ "@biomejs/cli-win32-arm64@2.5.10": {
198
+ "integrity": "sha512-pxAbxduPO4xq/Cvgaa2lOrs9BB0hEXmmDqfMNP4ZOffGOkUrD1/QGw9UAMpFQpX2P8MqTIIRuQKcmetum4Oa6A==",
199
+ "os": ["win32"],
200
+ "cpu": ["arm64"]
201
+ },
202
+ "@biomejs/cli-win32-x64@2.5.10": {
203
+ "integrity": "sha512-M+2dgBsl3lXRiTfgPVc2p3anS4Tocojke4rzFLScZ2Y/wmF+36dRb1iHCLiyGqOzQGyTplZH1HnEYviiAqi3nA==",
204
+ "os": ["win32"],
205
+ "cpu": ["x64"]
206
+ },
207
+ "@fallow-cli/darwin-arm64@3.17.0": {
208
+ "integrity": "sha512-u9O4aQaTSdaZaa4MAVEZEiwOx6QQzChymyQPrxV6KvDcVbcl0oYSekJKdvN4gEqUY8ClMze9gWS1tbn/W3N4dQ==",
209
+ "os": ["darwin"],
210
+ "cpu": ["arm64"]
211
+ },
212
+ "@fallow-cli/darwin-x64@3.17.0": {
213
+ "integrity": "sha512-l3tZJovnCa8j+im4qTl4GVSfrx4gisJYeHDwb5TbcdTGaWYz42gHriAaz5MhOR8S24q3xRegX8QrI8PA4XXU4g==",
214
+ "os": ["darwin"],
215
+ "cpu": ["x64"]
216
+ },
217
+ "@fallow-cli/linux-arm64-gnu@3.17.0": {
218
+ "integrity": "sha512-IAjS6qR4tHcRo1y5lzYT6mktN/ATPyPNrJ6yjwTORwwQV1YfMO58A5zGBfJlPBY+lUmaMZ9w37ftvH9a2AS4dQ==",
219
+ "os": ["linux"],
220
+ "cpu": ["arm64"]
221
+ },
222
+ "@fallow-cli/linux-arm64-musl@3.17.0": {
223
+ "integrity": "sha512-Oe1dvk5Wt5Bmnxfc6HufJTaFY9SEwDVrZpnSdVQlv+nvz7DzrTK1r91cR3Ip477ANSLa9XD/MHPMpfqqo0dlZg==",
224
+ "os": ["linux"],
225
+ "cpu": ["arm64"]
226
+ },
227
+ "@fallow-cli/linux-x64-gnu@3.17.0": {
228
+ "integrity": "sha512-XgLU2a51zuky7gifjVDHuiJGToAReDsVCDcyDF84TQz/h3bqO0iRkpDL8dh7+HODku84+EffpK5ZHY19n6Ij0w==",
229
+ "os": ["linux"],
230
+ "cpu": ["x64"]
231
+ },
232
+ "@fallow-cli/linux-x64-musl@3.17.0": {
233
+ "integrity": "sha512-GnDZx2kbLKKdYAp05NSKv6CZHgzEKvhRd0btCKFMMpUEhdzmr4uh2Qb4UzKDBg/q2r1EhkzN4b/qC+tbFCmtwA==",
234
+ "os": ["linux"],
235
+ "cpu": ["x64"]
236
+ },
237
+ "@fallow-cli/win32-arm64-msvc@3.17.0": {
238
+ "integrity": "sha512-u9n5WzPuKuC1PKegKQknWtngAUJ2szQaRXsbY54s7UMqeFNyC+W04LV5D+sEZywU7L0kzL+Kck9LxFLXBQcgvA==",
239
+ "os": ["win32"],
240
+ "cpu": ["arm64"]
241
+ },
242
+ "@fallow-cli/win32-x64-msvc@3.17.0": {
243
+ "integrity": "sha512-/OcyxHuCKabzQ9hKIjM/CFJ9fr30n0Mw5MK6nzi5rn26mbYUgh073UZq4FONOpPJ/FqHtC726rxpgBtR4qS+gg==",
244
+ "os": ["win32"],
245
+ "cpu": ["x64"]
246
+ },
247
+ "@fastify/busboy@2.1.1": {
248
+ "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="
249
+ },
250
+ "@openrouter/ai-sdk-provider@1.5.4_ai@5.0.244__zod@4.4.3_zod@4.4.3": {
251
+ "integrity": "sha512-xrSQPUIH8n9zuyYZR0XK7Ba0h2KsjJcMkxnwaYfmv13pKs3sDkjPzVPPhlhzqBGddHb5cFEwJ9VFuFeDcxCDSw==",
252
+ "dependencies": [
253
+ "@openrouter/sdk",
254
+ "ai",
255
+ "zod"
256
+ ]
257
+ },
258
+ "@openrouter/sdk@0.1.27": {
259
+ "integrity": "sha512-RH//L10bSmc81q25zAZudiI4kNkLgxF2E+WU42vghp3N6TEvZ6F0jK7uT3tOxkEn91gzmMw9YVmDENy7SJsajQ==",
260
+ "dependencies": [
261
+ "zod"
262
+ ]
263
+ },
264
+ "@opentelemetry/api@1.9.0": {
265
+ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="
266
+ },
267
+ "@standard-schema/spec@1.1.0": {
268
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="
269
+ },
270
+ "@typescript/typescript-aix-ppc64@7.0.2": {
271
+ "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
272
+ "os": ["aix"],
273
+ "cpu": ["ppc64"]
274
+ },
275
+ "@typescript/typescript-darwin-arm64@7.0.2": {
276
+ "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
277
+ "os": ["darwin"],
278
+ "cpu": ["arm64"]
279
+ },
280
+ "@typescript/typescript-darwin-x64@7.0.2": {
281
+ "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
282
+ "os": ["darwin"],
283
+ "cpu": ["x64"]
284
+ },
285
+ "@typescript/typescript-freebsd-arm64@7.0.2": {
286
+ "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
287
+ "os": ["freebsd"],
288
+ "cpu": ["arm64"]
289
+ },
290
+ "@typescript/typescript-freebsd-x64@7.0.2": {
291
+ "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
292
+ "os": ["freebsd"],
293
+ "cpu": ["x64"]
294
+ },
295
+ "@typescript/typescript-linux-arm64@7.0.2": {
296
+ "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
297
+ "os": ["linux"],
298
+ "cpu": ["arm64"]
299
+ },
300
+ "@typescript/typescript-linux-arm@7.0.2": {
301
+ "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
302
+ "os": ["linux"],
303
+ "cpu": ["arm"]
304
+ },
305
+ "@typescript/typescript-linux-loong64@7.0.2": {
306
+ "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
307
+ "os": ["linux"],
308
+ "cpu": ["loong64"]
309
+ },
310
+ "@typescript/typescript-linux-mips64el@7.0.2": {
311
+ "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
312
+ "os": ["linux"],
313
+ "cpu": ["mips64el"]
314
+ },
315
+ "@typescript/typescript-linux-ppc64@7.0.2": {
316
+ "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
317
+ "os": ["linux"],
318
+ "cpu": ["ppc64"]
319
+ },
320
+ "@typescript/typescript-linux-riscv64@7.0.2": {
321
+ "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
322
+ "os": ["linux"],
323
+ "cpu": ["riscv64"]
324
+ },
325
+ "@typescript/typescript-linux-s390x@7.0.2": {
326
+ "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
327
+ "os": ["linux"],
328
+ "cpu": ["s390x"]
329
+ },
330
+ "@typescript/typescript-linux-x64@7.0.2": {
331
+ "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
332
+ "os": ["linux"],
333
+ "cpu": ["x64"]
334
+ },
335
+ "@typescript/typescript-netbsd-arm64@7.0.2": {
336
+ "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
337
+ "os": ["netbsd"],
338
+ "cpu": ["arm64"]
339
+ },
340
+ "@typescript/typescript-netbsd-x64@7.0.2": {
341
+ "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
342
+ "os": ["netbsd"],
343
+ "cpu": ["x64"]
344
+ },
345
+ "@typescript/typescript-openbsd-arm64@7.0.2": {
346
+ "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
347
+ "os": ["openbsd"],
348
+ "cpu": ["arm64"]
349
+ },
350
+ "@typescript/typescript-openbsd-x64@7.0.2": {
351
+ "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
352
+ "os": ["openbsd"],
353
+ "cpu": ["x64"]
354
+ },
355
+ "@typescript/typescript-sunos-x64@7.0.2": {
356
+ "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
357
+ "os": ["sunos"],
358
+ "cpu": ["x64"]
359
+ },
360
+ "@typescript/typescript-win32-arm64@7.0.2": {
361
+ "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
362
+ "os": ["win32"],
363
+ "cpu": ["arm64"]
364
+ },
365
+ "@typescript/typescript-win32-x64@7.0.2": {
366
+ "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
367
+ "os": ["win32"],
368
+ "cpu": ["x64"]
369
+ },
370
+ "@vercel/oidc@3.1.0": {
371
+ "integrity": "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="
372
+ },
373
+ "ai@5.0.244_zod@4.4.3": {
374
+ "integrity": "sha512-7hEVPeQdUS6EgScL4BOKwtV7uNxFJgYu80OFfhnl8wfH5NCMFW+WJEwp/UjdPgxgnhBxhNcn9MrANlC0Hp77tw==",
375
+ "dependencies": [
376
+ "@ai-sdk/gateway",
377
+ "@ai-sdk/provider",
378
+ "@ai-sdk/provider-utils",
379
+ "@opentelemetry/api",
380
+ "zod"
381
+ ]
382
+ },
383
+ "detect-libc@2.1.2": {
384
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="
385
+ },
386
+ "eventsource-parser@3.1.1": {
387
+ "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ=="
388
+ },
389
+ "fallow-type-aware@3.17.0": {
390
+ "integrity": "sha512-DFtZUK5oqP56tSsrBWPzjrTIwPPxwlBV8QoSaGghMru347Nqj8ZBY6u9HFa/TIPcxvFU/zIZMRF8xS/XAWQTzg==",
391
+ "dependencies": [
392
+ "typescript"
393
+ ],
394
+ "bin": true
395
+ },
396
+ "fallow@3.17.0": {
397
+ "integrity": "sha512-tbLuvsPq3I2CzpoF/9MgSQ7hWzOqlj3avFUAmCr1J9OERE6z714SlDmA38NVvNy/zuK/70utXB3/b33xC9z29g==",
398
+ "dependencies": [
399
+ "detect-libc"
400
+ ],
401
+ "optionalDependencies": [
402
+ "@fallow-cli/darwin-arm64",
403
+ "@fallow-cli/darwin-x64",
404
+ "@fallow-cli/linux-arm64-gnu",
405
+ "@fallow-cli/linux-arm64-musl",
406
+ "@fallow-cli/linux-x64-gnu",
407
+ "@fallow-cli/linux-x64-musl",
408
+ "@fallow-cli/win32-arm64-msvc",
409
+ "@fallow-cli/win32-x64-msvc",
410
+ "fallow-type-aware"
411
+ ],
412
+ "bin": true
413
+ },
414
+ "json-schema@0.4.0": {
415
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
416
+ },
417
+ "typescript@7.0.2": {
418
+ "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
419
+ "optionalDependencies": [
420
+ "@typescript/typescript-aix-ppc64",
421
+ "@typescript/typescript-darwin-arm64",
422
+ "@typescript/typescript-darwin-x64",
423
+ "@typescript/typescript-freebsd-arm64",
424
+ "@typescript/typescript-freebsd-x64",
425
+ "@typescript/typescript-linux-arm",
426
+ "@typescript/typescript-linux-arm64",
427
+ "@typescript/typescript-linux-loong64",
428
+ "@typescript/typescript-linux-mips64el",
429
+ "@typescript/typescript-linux-ppc64",
430
+ "@typescript/typescript-linux-riscv64",
431
+ "@typescript/typescript-linux-s390x",
432
+ "@typescript/typescript-linux-x64",
433
+ "@typescript/typescript-netbsd-arm64",
434
+ "@typescript/typescript-netbsd-x64",
435
+ "@typescript/typescript-openbsd-arm64",
436
+ "@typescript/typescript-openbsd-x64",
437
+ "@typescript/typescript-sunos-x64",
438
+ "@typescript/typescript-win32-arm64",
439
+ "@typescript/typescript-win32-x64"
440
+ ],
441
+ "bin": true
442
+ },
443
+ "undici@5.29.0": {
444
+ "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
445
+ "dependencies": [
446
+ "@fastify/busboy"
447
+ ]
448
+ },
449
+ "zod@4.4.3": {
450
+ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="
451
+ }
452
+ },
453
+ "workspace": {
454
+ "dependencies": [
455
+ "jsr:@std/assert@1",
456
+ "npm:@openrouter/ai-sdk-provider@1.5.4",
457
+ "npm:ai@5.0.244"
458
+ ],
459
+ "packageJson": {
460
+ "dependencies": [
461
+ "npm:@ast-grep/cli@0.41",
462
+ "npm:@biomejs/biome@^2.5.8",
463
+ "npm:@openrouter/ai-sdk-provider@1.5.4",
464
+ "npm:ai@5.0.244",
465
+ "npm:fallow@3.17.0"
466
+ ]
467
+ }
468
+ }
469
+ }