History

Ship @executor-js/* beta from monorepo with promise wrapper (#142)

* consolidate @executor-js/core + @executor-js/sdk into one package Undoes the earlier core/sdk package split and ships a single @executor-js/sdk with two subpath entry points, matching the plugin layout: - @executor-js/sdk → promise-based wrapper (default import) - @executor-js/sdk/core → raw Effect-based primitives Internally the packages stay under `@executor/*` (workspace scope). scripts/publish-packages.ts rewrites the scope to `@executor-js/*` at pack time — in both package.json (name, deps, peer deps) and the compiled dist/ artifacts — and resolves `workspace:*` dep specifiers to concrete versions before pack. This keeps the diff vs main small, and `@executor/api` / `@executor/react` (unpublished optional peers) are left alone so source code and the workspace graph are unchanged. The promise wrapper (src/promise.ts + src/promise-executor.ts) lives alongside the Effect sources in packages/core/sdk/src/, so for that directory the only new files are the two wrappers — no renames vs main. tsup builds a dual-entry bundle ({ index: src/promise.ts, core: src/index.ts }) and publishConfig rewrites exports to point at the packed dist/ at publish time. Also: - Add scripts/publish-packages.ts. Works around bun pm pack not substituting publishConfig overrides by rewriting package.json in place during pack and restoring it after. - Remove the separate packages/core/core package and the packages/published/ folder that the earlier stack introduced. - Bump all 8 publishable packages to 0.0.1-beta.4. * expose pluggable storage on promise createExecutor, refresh READMEs - add optional tools/sources/secrets/policies to promise ExecutorConfig, adapting user-supplied promise-shaped impls into Effect services - fix onepassword promise entry to export onepasswordPlugin (was types-only) - rewrite plugin READMEs to lead with async/await, demote Effect to a "Using with Effect" aside rather than an "Effect entry point" lead - bump 8 public packages to 0.0.1-beta.5 * Drop /core subpath; internal imports use bare @executor/sdk Rewires dev exports so internal code treats @executor/sdk (and the 7 plugin packages) as normal packages: bare imports resolve to the Effect-based entry, no more /core subpath gymnastics in the source. - @executor/sdk dev exports: `.` -> src/index.ts (Effect), `./promise` -> src/promise.ts. publishConfig unchanged, so the published package still ships `.` as the promise wrapper and `./core` as the raw Effect primitives. - 7 plugin packages follow the same pattern: dev `.` now points at the plugin's Effect entry, `./promise` added, `./core` dropped. publishConfigs unchanged. - Rewrote 82 `@executor/sdk/core` imports and 9 `@executor/plugin-*/core` imports to bare paths across packages, apps, and READMEs. - examples/promise-sdk imports from `/promise` subpaths since dev bare is now Effect. Published consumers still get the promise API at the bare path via the publishConfig swap at pack time. No changes to scripts/publish-packages.ts or tsup configs — the existing publish-time exports override is what flips dev's bare-Effect into published bare-promise. * fix unused import

Rhys Sullivan committed 7 months ago

Commit 36a79e61 parent 028b28f56 files · +2681 −520Browse files

Unified · Split

56 files
  1. .changeset/config.json +0 −8
  2. .github/workflows/release.yml +13 −0
  3. RELEASING.md +18 −8
  4. apps/cloud/src/services/executor.ts +6 −9
  5. bun.lock +197 −440
  6. examples/promise-sdk/package.json +18 −0
  7. examples/promise-sdk/src/main.ts +189 −0
  8. examples/promise-sdk/tsconfig.json +13 −0
  9. package.json +7 −2
  10. packages/core/config/package.json +1 −0
  11. packages/core/sdk/CHANGELOG.md +1 −1
  12. packages/core/sdk/README.md +150 −0
  13. packages/core/sdk/package.json +35 −3
  14. packages/core/sdk/src/promise-executor.ts +583 −0
  15. packages/core/sdk/src/promise.ts +68 −0
  16. packages/core/sdk/tsup.config.ts +13 −0
  17. packages/core/storage-postgres/package.json +2 −0
  18. packages/hosts/mcp/package.json +1 −1
  19. packages/plugins/file-secrets/README.md +59 −0
  20. packages/plugins/file-secrets/package.json +37 −5
  21. packages/plugins/file-secrets/src/promise.ts +7 −0
  22. packages/plugins/file-secrets/tsconfig.json +29 −1
  23. packages/plugins/file-secrets/tsup.config.ts +13 −0
  24. packages/plugins/google-discovery/README.md +60 −0
  25. packages/plugins/google-discovery/package.json +36 −4
  26. packages/plugins/google-discovery/src/promise.ts +20 −0
  27. packages/plugins/google-discovery/tsconfig.json +9 −5
  28. packages/plugins/google-discovery/tsup.config.ts +13 −0
  29. packages/plugins/graphql/README.md +71 −0
  30. packages/plugins/graphql/package.json +37 −4
  31. packages/plugins/graphql/src/promise.ts +12 −0
  32. packages/plugins/graphql/tsconfig.json +8 −3
  33. packages/plugins/graphql/tsup.config.ts +13 −0
  34. packages/plugins/keychain/README.md +59 −0
  35. packages/plugins/keychain/package.json +37 −5
  36. packages/plugins/keychain/src/promise.ts +7 −0
  37. packages/plugins/keychain/tsconfig.json +29 −1
  38. packages/plugins/keychain/tsup.config.ts +13 −0
  39. packages/plugins/mcp/README.md +63 −0
  40. packages/plugins/mcp/package.json +36 −3
  41. packages/plugins/mcp/src/promise.ts +21 −0
  42. packages/plugins/mcp/tsconfig.json +8 −3
  43. packages/plugins/mcp/tsup.config.ts +13 −0
  44. packages/plugins/onepassword/README.md +59 −0
  45. packages/plugins/onepassword/package.json +36 −4
  46. packages/plugins/onepassword/src/promise.ts +7 −0
  47. packages/plugins/onepassword/tsconfig.json +29 −1
  48. packages/plugins/onepassword/tsup.config.ts +13 −0
  49. packages/plugins/openapi/README.md +82 −0
  50. packages/plugins/openapi/package.json +36 −4
  51. packages/plugins/openapi/src/promise.ts +11 −0
  52. packages/plugins/openapi/tsconfig.json +9 −5
  53. packages/plugins/openapi/tsup.config.ts +13 −0
  54. packages/react/package.json +1 −0
  55. packages/react/src/components/tool-detail.tsx +3 −0
  56. scripts/publish-packages.ts +357 −0
.changeset/config.json+0−8
@@ -13,20 +13,12 @@ · 12 unmodified lines
1313 "@executor/api",
1414 "@executor/config",
1515 "@executor/execution",
16− "@executor/sdk",
1716 "@executor/storage-file",
1817 "@executor/host-mcp",
1918 "@executor/codemode-core",
2019 "@executor/ir",
2120 "@executor/runtime-deno-subprocess",
2221 "@executor/runtime-quickjs",
23− "@executor/plugin-file-secrets",
24− "@executor/plugin-google-discovery",
25− "@executor/plugin-graphql",
26− "@executor/plugin-keychain",
27− "@executor/plugin-mcp",
28− "@executor/plugin-onepassword",
29− "@executor/plugin-openapi",
3022 "@executor/marketing"
3123 ]
3224 }
.github/workflows/release.yml+13−0
@@ -35,6 +35,12 @@ jobs: · 34 unmodified lines
3535 uses: actions/setup-node@v4
3636 with:
3737 node-version: 24
38+ registry-url: https://registry.npmjs.org
39+
40+ - name: Update npm for trusted publishing
41+ run: |
42+ npm install -g npm@latest
43+ npm --version
3844
3945 - name: Install dependencies
4046 run: bun install --frozen-lockfile
@@ -50,6 +56,13 @@ jobs: · 9 unmodified lines
5056 env:
5157 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5258
59+ - name: Publish @executor-js library packages
60+ if: steps.changesets.outputs.hasChangesets == 'false'
61+ env:
62+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
63+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
64+ run: bun run release:publish:packages
65+
5366 - name: Detect release version change
5467 if: steps.changesets.outputs.hasChangesets == 'false'
5568 id: detect_release
RELEASING.md+18−8
@@ -1,6 +1,8 @@
11 # Releasing
22
3−This repo uses Changesets for version orchestration and a custom publish script for the generated `executor` npm package plus its platform packages.
3+This repo uses Changesets for version orchestration and two publish paths:
4+the CLI (`executor` npm package plus its platform packages) and the
5+`@executor-js/*` library packages (`core`, `sdk`, and the public plugins).
46
57 ## Normal release flow
68
@@ -9,12 +11,16 @@ This repo uses Changesets for version orchestration and a custom publish script · 2 unmodified lines
911 2. Merge that PR to `main`.
1012 3. `.github/workflows/release.yml` opens or updates a `Version Packages` PR.
1113 4. Merge the `Version Packages` PR.
12−5. The release workflow tags the commit and dispatches `.github/workflows/publish-executor-package.yml`.
13−6. The publish workflow:
14− - runs `bun run release:check`
15− - performs a full dry-run release build before publish
16− - publishes npm packages under the correct dist-tag
17− - creates or updates the GitHub release with build artifacts
14+5. The release workflow then does two things in parallel:
15+ - Publishes every `@executor-js/*` library package whose current version
16+ is not already on npm, via `bun run release:publish:packages`
17+ (see `scripts/publish-packages.ts`).
18+ - If `apps/cli/package.json` bumped, tags the commit and dispatches
19+ `.github/workflows/publish-executor-package.yml`, which:
20+ - runs `bun run release:check`
21+ - performs a full dry-run release build before publish
22+ - publishes the CLI npm package under the correct dist-tag
23+ - creates or updates the GitHub release with build artifacts
1824
1925 ## Beta releases
2026
@@ -33,7 +39,7 @@ Beta versions publish to npm under `beta`. · 12 unmodified lines
3339
3440 ## Local dry run
3541
36−To build the full release payload without publishing to npm or GitHub:
42+To build the full CLI release payload without publishing to npm or GitHub:
3743
3844 - `bun run release:publish:dry-run`
3945
@@ -42,6 +48,10 @@ That produces: · 2 unmodified lines
4248 - platform archives in `apps/cli/dist`
4349 - the packed wrapper tarball in `apps/cli/dist/release`
4450
51+To pack the `@executor-js/*` library packages without publishing:
52+
53+- `bun run release:publish:packages:dry-run`
54+
4555 ## Notes
4656
4757 - Changesets owns the published CLI version via `apps/cli/package.json`.
apps/cloud/src/services/executor.ts+6−9
@@ -6,14 +6,8 @@ import { Effect } from "effect"; · 5 unmodified lines
66
77 import { createExecutor } from "@executor/sdk";
88 import { makePgConfig, makePgKv } from "@executor/storage-postgres";
9−import {
10− openApiPlugin,
11− makeKvOperationStore,
12−} from "@executor/plugin-openapi";
13−import {
14− mcpPlugin,
15− makeKvBindingStore,
16−} from "@executor/plugin-mcp";
9+import { openApiPlugin, makeKvOperationStore } from "@executor/plugin-openapi";
10+import { mcpPlugin, makeKvBindingStore } from "@executor/plugin-mcp";
1711 import {
1812 googleDiscoveryPlugin,
1913 makeKvBindingStore as makeKvGoogleDiscoveryBindingStore,
@@ -48,7 +42,10 @@ export const createOrgExecutor = ( · 28 unmodified lines
4842 bindingStore: makeKvBindingStore(kv, "mcp"),
4943 }),
5044 googleDiscoveryPlugin({
51− bindingStore: makeKvGoogleDiscoveryBindingStore(kv, "google-discovery"),
45+ bindingStore: makeKvGoogleDiscoveryBindingStore(
46+ kv,
47+ "google-discovery",
48+ ),
5249 }),
5350 graphqlPlugin({
5451 operationStore: makeKvGraphqlOperationStore(kv, "graphql"),
bun.lock+197−440
@@ -162,6 +162,18 @@ · 161 unmodified lines
162162 "wrangler": "^4.0.0",
163163 },
164164 },
165+ "examples/promise-sdk": {
166+ "name": "@executor/example-promise-sdk",
167+ "dependencies": {
168+ "@executor/plugin-graphql": "workspace:*",
169+ "@executor/plugin-mcp": "workspace:*",
170+ "@executor/plugin-openapi": "workspace:*",
171+ "@executor/sdk": "workspace:*",
172+ },
173+ "devDependencies": {
174+ "typescript": "latest",
175+ },
176+ },
165177 "packages/core/api": {
166178 "name": "@executor/api",
167179 "version": "1.4.2",
@@ -182,6 +194,7 @@ · 14 unmodified lines
182194 "version": "1.4.2",
183195 "dependencies": {
184196 "@effect/platform": "catalog:",
197+ "@executor/sdk": "workspace:*",
185198 "effect": "catalog:",
186199 "jsonc-parser": "^3.3.1",
187200 },
@@ -222,13 +235,14 @@ · 34 unmodified lines
222235 },
223236 "packages/core/sdk": {
224237 "name": "@executor/sdk",
225− "version": "1.4.2",
238+ "version": "0.0.1-beta.5",
226239 "dependencies": {
227240 "effect": "catalog:",
228241 },
229242 "devDependencies": {
230243 "@effect/vitest": "catalog:",
231244 "@types/node": "catalog:",
245+ "tsup": "catalog:",
232246 "typescript": "catalog:",
233247 "vitest": "catalog:",
234248 },
@@ -254,6 +268,8 @@ · 19 unmodified lines
254268 "name": "@executor/storage-postgres",
255269 "version": "1.4.0",
256270 "dependencies": {
271+ "@effect/sql": "catalog:",
272+ "@effect/sql-pg": "^0.28.0",
257273 "@executor/sdk": "workspace:*",
258274 "drizzle-orm": "catalog:",
259275 "effect": "catalog:",
@@ -374,7 +390,7 @@ · 114 unmodified lines
374390 },
375391 "packages/plugins/file-secrets": {
376392 "name": "@executor/plugin-file-secrets",
377− "version": "1.4.2",
393+ "version": "0.0.1-beta.5",
378394 "dependencies": {
379395 "@executor/sdk": "workspace:*",
380396 "effect": "catalog:",
@@ -382,12 +398,13 @@ · 1 unmodified line
382398 "devDependencies": {
383399 "@types/node": "catalog:",
384400 "bun-types": "catalog:",
401+ "tsup": "catalog:",
385402 "vitest": "catalog:",
386403 },
387404 },
388405 "packages/plugins/google-discovery": {
389406 "name": "@executor/plugin-google-discovery",
390− "version": "1.4.2",
407+ "version": "0.0.1-beta.5",
391408 "dependencies": {
392409 "@effect/platform": "catalog:",
393410 "@executor/api": "workspace:*",
@@ -401,6 +418,7 @@ · 7 unmodified lines
401418 "@types/react": "catalog:",
402419 "bun-types": "catalog:",
403420 "react": "catalog:",
421+ "tsup": "catalog:",
404422 "vitest": "catalog:",
405423 },
406424 "peerDependencies": {
@@ -418,9 +436,10 @@ · 11 unmodified lines
418436 },
419437 "packages/plugins/graphql": {
420438 "name": "@executor/plugin-graphql",
421− "version": "1.4.2",
439+ "version": "0.0.1-beta.5",
422440 "dependencies": {
423441 "@effect/platform": "catalog:",
442+ "@effect/platform-node": "catalog:",
424443 "@executor/sdk": "workspace:*",
425444 "effect": "catalog:",
426445 },
@@ -433,6 +452,7 @@ · 6 unmodified lines
433452 "@types/react": "catalog:",
434453 "bun-types": "catalog:",
435454 "react": "catalog:",
455+ "tsup": "catalog:",
436456 "vitest": "catalog:",
437457 },
438458 "peerDependencies": {
@@ -452,7 +472,7 @@ · 13 unmodified lines
452472 },
453473 "packages/plugins/keychain": {
454474 "name": "@executor/plugin-keychain",
455− "version": "1.4.2",
475+ "version": "0.0.1-beta.5",
456476 "dependencies": {
457477 "@executor/sdk": "workspace:*",
458478 "@napi-rs/keyring": "^1.2.0",
@@ -462,14 +482,16 @@ · 3 unmodified lines
462482 "@effect/vitest": "catalog:",
463483 "@types/node": "catalog:",
464484 "bun-types": "catalog:",
485+ "tsup": "catalog:",
465486 "vitest": "catalog:",
466487 },
467488 },
468489 "packages/plugins/mcp": {
469490 "name": "@executor/plugin-mcp",
470− "version": "1.4.2",
491+ "version": "0.0.1-beta.5",
471492 "dependencies": {
472493 "@effect/platform": "catalog:",
494+ "@effect/platform-node": "catalog:",
473495 "@executor/sdk": "workspace:*",
474496 "@modelcontextprotocol/sdk": "^1.29.0",
475497 "effect": "catalog:",
@@ -483,6 +505,7 @@ · 7 unmodified lines
483505 "@types/react": "catalog:",
484506 "bun-types": "catalog:",
485507 "react": "catalog:",
508+ "tsup": "catalog:",
486509 "vitest": "catalog:",
487510 "zod": "^4.3.6",
488511 },
@@ -503,7 +526,7 @@ · 14 unmodified lines
503526 },
504527 "packages/plugins/onepassword": {
505528 "name": "@executor/plugin-onepassword",
506− "version": "1.4.2",
529+ "version": "0.0.1-beta.5",
507530 "dependencies": {
508531 "@1password/op-js": "^0.1.13",
509532 "@1password/sdk": "^0.4.1-beta.1",
@@ -518,6 +541,7 @@ · 8 unmodified lines
518541 "@types/react": "catalog:",
519542 "bun-types": "catalog:",
520543 "react": "catalog:",
544+ "tsup": "catalog:",
521545 "vitest": "catalog:",
522546 },
523547 "peerDependencies": {
@@ -533,7 +557,7 @@ · 9 unmodified lines
533557 },
534558 "packages/plugins/openapi": {
535559 "name": "@executor/plugin-openapi",
536− "version": "1.4.2",
560+ "version": "0.0.1-beta.5",
537561 "dependencies": {
538562 "@apidevtools/swagger-parser": "^12.1.0",
539563 "@effect/platform": "catalog:",
@@ -552,6 +576,7 @@ · 12 unmodified lines
552576 "@types/react": "catalog:",
553577 "bun-types": "catalog:",
554578 "react": "catalog:",
579+ "tsup": "catalog:",
555580 "vitest": "catalog:",
556581 },
557582 "peerDependencies": {
@@ -579,6 +604,7 @@ · 21 unmodified lines
579604 "@effect/platform": "catalog:",
580605 "@executor/api": "workspace:*",
581606 "@executor/sdk": "workspace:*",
607+ "@hookform/resolvers": "^5.2.2",
582608 "@shikijs/langs": "^4.0.2",
583609 "@shikijs/themes": "^4.0.2",
584610 "@tanstack/react-router": "catalog:",
@@ -637,6 +663,7 @@ · 52 unmodified lines
637663 "react": "^19.1.0",
638664 "react-dom": "^19.1.0",
639665 "tailwindcss": "^4.2.2",
666+ "tsup": "^8.5.0",
640667 "typescript": "^5.9.3",
641668 "vite": "^8.0.0",
642669 "vitest": "^4.1.3",
@@ -668,7 +695,7 @@ · 25 unmodified lines
668695
669696 "@apidevtools/swagger-parser": ["@apidevtools/swagger-parser@12.1.0", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "14.0.1", "@apidevtools/openapi-schemas": "^2.1.0", "@apidevtools/swagger-methods": "^3.0.2", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "call-me-maybe": "^1.0.2" }, "peerDependencies": { "openapi-types": ">=7" } }, "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng=="],
670697
671− "@astrojs/cloudflare": ["@astrojs/cloudflare@13.1.7", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "@astrojs/underscore-redirects": "1.0.3", "@cloudflare/vite-plugin": "^1.25.6", "piccolore": "^0.1.3", "tinyglobby": "^0.2.15", "vite": "^7.3.1" }, "peerDependencies": { "astro": "^6.0.0", "wrangler": "^4.61.1" } }, "sha512-bNgQ1rwieK4PBchwsRGk0TBXPZ0K+BMn7npn/qBW0LWgo707M5Js5Y7Qrr5Fn/5W6BvHWIcPyjEN/tWLEc//aA=="],
698+ "@astrojs/cloudflare": ["@astrojs/cloudflare@13.1.8", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "@astrojs/underscore-redirects": "1.0.3", "@cloudflare/vite-plugin": "^1.25.6", "piccolore": "^0.1.3", "tinyglobby": "^0.2.15", "vite": "^7.3.1" }, "peerDependencies": { "astro": "^6.0.0", "wrangler": "^4.61.1" } }, "sha512-X686k+2Rg5oiuQn7Df1tJyyxOiCu0PgBTYaQ3UcTmS4AfKz55g2O1iJvHZmzjqcCll2rO0oCH0Ba9gey1kg5cw=="],
672699
673700 "@astrojs/compiler": ["@astrojs/compiler@3.0.1", "", {}, "sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA=="],
674701
@@ -814,7 +841,7 @@ · 139 unmodified lines
814841
815842 "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.0", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": "1.20260301.1 || ~1.20260302.1 || ~1.20260303.1 || ~1.20260304.1 || >1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-8ovsRpwzPoEqPUzoErAYVv8l3FMZNeBVQfJTvtzP4AgLSRGZISRfuChFxHWUQd3n6cnrwkuTGxT+2cGo8EsyYg=="],
816843
817− "@cloudflare/vite-plugin": ["@cloudflare/vite-plugin@1.31.1", "", { "dependencies": { "@cloudflare/unenv-preset": "2.16.0", "miniflare": "4.20260405.0", "unenv": "2.0.0-rc.24", "wrangler": "4.81.0", "ws": "8.18.0" }, "peerDependencies": { "vite": "^6.1.0 || ^7.0.0 || ^8.0.0" } }, "sha512-vw4pOS8FmODdCeWjAG0gO4OyZ4Bb4GXlET/taaLDRm7gC5uGcH5XRPoTUJPYrs54LbWZxi3e2iWXX3JLRv4Rfg=="],
844+ "@cloudflare/vite-plugin": ["@cloudflare/vite-plugin@1.31.2", "", { "dependencies": { "@cloudflare/unenv-preset": "2.16.0", "miniflare": "4.20260409.0", "unenv": "2.0.0-rc.24", "wrangler": "4.81.1", "ws": "8.18.0" }, "peerDependencies": { "vite": "^6.1.0 || ^7.0.0 || ^8.0.0" } }, "sha512-6RyoPhqmpuHPB+Zudt7mOUdGzB1+DQtJtPdAxUajhlS2ZUU0+bCn9Cj4g6Z2EvajBrkBTw1yVLqtt4bsUnp1Ng=="],
818845
819846 "@cloudflare/vitest-pool-workers": ["@cloudflare/vitest-pool-workers@0.14.3", "", { "dependencies": { "cjs-module-lexer": "^1.2.3", "esbuild": "0.27.3", "miniflare": "4.20260409.0", "wrangler": "4.81.1", "zod": "^3.25.76" }, "peerDependencies": { "@vitest/runner": "^4.1.0", "@vitest/snapshot": "^4.1.0", "vitest": "^4.1.0" } }, "sha512-7J0K3f9iS2u6k2J/bY7/vJJcaLgEGXcfNrs2fSti6vc0l/L/I4XmYtvZ1JwmFa5xqiHG4tF0ktGSKUZbkqvzEw=="],
820847
@@ -828,7 +855,7 @@ · 7 unmodified lines
828855
829856 "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260409.1", "", { "os": "win32", "cpu": "x64" }, "sha512-GttFO0+TvE0rJNQbDlxC6kq2Q7uFxoZRo74Z9d/trUrLgA14HEVTTXobYyiWrDZ9Qp2W5KN1CrXQXiko0zE38Q=="],
830857
831− "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20260408.1", "", {}, "sha512-kE1tKfHUyIldsj3ea2XEqvLRHkDwc83YM7nar6SS5+cj81IoAFR/OZNDwZWHb6vx+pC31PBJGtROlfZzsgxudQ=="],
858+ "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20260409.1", "", {}, "sha512-0rGuppPeip6dqlI6013wC8tE+kbRK+tcaDfqCxKf9sEHDNfSWWUuKgIEDpt6IHHP2O0iYBQpngk5Siv4CL/HGQ=="],
832859
833860 "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
834861
@@ -866,6 +893,8 @@ · 31 unmodified lines
866893
867894 "@effect/sql": ["@effect/sql@0.51.0", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "effect": "^3.21.0" } }, "sha512-e7hWe46QD15eMCr4kNBMVdItIVK/WLHJG+d8DLL1FjVf5Ra82k2mwUYIXplJewVbHjt3my6GSKPPd1ZrQjVd5A=="],
868895
896+ "@effect/sql-pg": ["@effect/sql-pg@0.28.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.25.1", "postgres": "^3.4.4" }, "peerDependencies": { "@effect/experimental": "^0.38.0", "@effect/platform": "^0.74.0", "@effect/sql": "^0.27.0", "effect": "^3.12.5" } }, "sha512-+u60z3evFGqsdUv25My0LAzvM4d8Ao9k4qARYhMsTBY4WsyqsrtXNqkbco7hag3us3LbdwU1ivjieKOzQN0ELg=="],
897+
869898 "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@0.52.0", "", { "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "@effect/sql": "^0.51.0", "effect": "^3.21.0" } }, "sha512-iqQ7SvSNxq0HLjKW5IQ29FsCTzOD1CuX1wuBEuPLLgPCvuEykEHLn4zDrs2qJ+O3CBEUm4kiCy29tmfHE7uAdw=="],
870899
871900 "@effect/sql-sqlite-node": ["@effect/sql-sqlite-node@0.52.0", "", { "dependencies": { "better-sqlite3": "^12.6.2" }, "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "@effect/sql": "^0.51.0", "effect": "^3.21.0" } }, "sha512-yijDbly4MwxAPebvd2ZBI62qDpGdXKL96drMzflXDnjEh2JiVr/xVyy1VB0JsVxqw8IJ9TUIgOvAJWQ88oVMXA=="],
@@ -876,9 +905,9 @@ · 4 unmodified lines
876905
877906 "@effect/workflow": ["@effect/workflow@0.18.0", "", { "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "@effect/rpc": "^0.75.0", "effect": "^3.21.0" } }, "sha512-9Zp+x9ADtR0H6CRhU6wLyPcIRjO1PXjvSpUlFlBQ8piw7ldjPmnUWEY8YQuH6eExV2dalQ4z2LMiZ5Bd7XAJbA=="],
878907
879− "@electric-sql/pglite": ["@electric-sql/pglite@0.4.3", "", {}, "sha512-ichuWTgtd4mOM1G4SpyGJa5trT03lWbMypDV0fUXUCXg5hiHqVAz/bZyV68NqmkLB7WcYmj1RMJVSp8HV/v/ZQ=="],
908+ "@electric-sql/pglite": ["@electric-sql/pglite@0.4.4", "", {}, "sha512-g/6CWAJ4XOkObWCWAQ2IReZD8VvsDy3poRHSKvpRR2F96F8WJ3HVbjpso3gN7l0q6QPPgvxSSpl/qo5k8a7mkQ=="],
880909
881− "@electric-sql/pglite-socket": ["@electric-sql/pglite-socket@0.1.3", "", { "peerDependencies": { "@electric-sql/pglite": "0.4.3" }, "bin": { "pglite-server": "dist/scripts/server.js" } }, "sha512-LAciWM0M1dCL8hlsxu2venbVZcdxema0BtDfpWYVqr+Y468UADw0pFWidhKw1M8sfJ8rdLT71tjMmnirf/IZRQ=="],
910+ "@electric-sql/pglite-socket": ["@electric-sql/pglite-socket@0.1.4", "", { "peerDependencies": { "@electric-sql/pglite": "0.4.4" }, "bin": { "pglite-server": "dist/scripts/server.js" } }, "sha512-2LuMFxJPE2FbjWDrWpylWwhZ5uT03rQfBLM7g2AdZmiG3JjC8sbYFkFR4ZeoqVcn22wKzpJTXFV22mQ+s4Oueg=="],
882911
883912 "@electron/asar": ["@electron/asar@3.4.1", "", { "dependencies": { "commander": "^5.0.0", "glob": "^7.1.6", "minimatch": "^3.0.4" }, "bin": { "asar": "bin/asar.js" } }, "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA=="],
884913
@@ -896,11 +925,11 @@ · 11 unmodified lines
896925
897926 "@electron/windows-sign": ["@electron/windows-sign@1.2.2", "", { "dependencies": { "cross-dirname": "^0.1.0", "debug": "^4.3.4", "fs-extra": "^11.1.1", "minimist": "^1.2.8", "postject": "^1.0.0-alpha.6" }, "bin": { "electron-windows-sign": "bin/electron-windows-sign.js" } }, "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ=="],
898927
899− "@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="],
928+ "@emnapi/core": ["@emnapi/core@1.9.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA=="],
900929
901− "@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="],
930+ "@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="],
902931
903− "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="],
932+ "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="],
904933
905934 "@esbuild-kit/core-utils": ["@esbuild-kit/core-utils@3.3.2", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="],
906935
@@ -970,6 +999,8 @@ · 63 unmodified lines
970999
9711000 "@executor/env": ["@executor/env@workspace:packages/core/env"],
9721001
1002+ "@executor/example-promise-sdk": ["@executor/example-promise-sdk@workspace:examples/promise-sdk"],
1003+
9731004 "@executor/execution": ["@executor/execution@workspace:packages/core/execution"],
9741005
9751006 "@executor/host-mcp": ["@executor/host-mcp@workspace:packages/hosts/mcp"],
@@ -1020,6 +1051,8 @@ · 44 unmodified lines
10201051
10211052 "@hono/node-server": ["@hono/node-server@1.19.13", "", { "peerDependencies": { "hono": "^4" } }, "sha512-TsQLe4i2gvoTtrHje625ngThGBySOgSK3Xo2XRYOdqGN1teR8+I7vchQC46uLJi8OF62YTYA3AhSpumtkhsaKQ=="],
10221053
1054+ "@hookform/resolvers": ["@hookform/resolvers@5.2.2", "", { "dependencies": { "@standard-schema/utils": "^0.3.0" }, "peerDependencies": { "react-hook-form": "^7.55.0" } }, "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA=="],
1055+
10231056 "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="],
10241057
10251058 "@iconify/utils": ["@iconify/utils@3.1.0", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "mlly": "^1.8.0" } }, "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw=="],
@@ -1152,7 +1185,7 @@ · 126 unmodified lines
11521185
11531186 "@napi-rs/keyring-win32-x64-msvc": ["@napi-rs/keyring-win32-x64-msvc@1.2.0", "", { "os": "win32", "cpu": "x64" }, "sha512-xFlx/TsmqmCwNU9v+AVnEJgoEAlBYgzFF5Ihz1rMpPAt4qQWWkMd4sCyM1gMJ1A/GnRqRegDiQpwaxGUHFtFbA=="],
11541187
1155− "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.2", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw=="],
1188+ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ=="],
11561189
11571190 "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
11581191
@@ -1174,6 +1207,8 @@ · 15 unmodified lines
11741207
11751208 "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],
11761209
1210+ "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.40.0", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="],
1211+
11771212 "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="],
11781213
11791214 "@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.121.0", "", { "os": "android", "cpu": "arm" }, "sha512-n07FQcySwOlzap424/PLMtOkbS7xOu8nsJduKL8P3COGHKgKoDYXwoAHCbChfgFpHnviehrLWIPX0lKGtbEk/A=="],
@@ -1456,35 +1491,35 @@ · 276 unmodified lines
14561491
14571492 "@reduxjs/toolkit": ["@reduxjs/toolkit@2.11.2", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ=="],
14581493
1459− "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.13", "", { "os": "android", "cpu": "arm64" }, "sha512-5ZiiecKH2DXAVJTNN13gNMUcCDg4Jy8ZjbXEsPnqa248wgOVeYRX0iqXXD5Jz4bI9BFHgKsI2qmyJynstbmr+g=="],
1494+ "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.15", "", { "os": "android", "cpu": "arm64" }, "sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA=="],
14601495
1461− "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tz/v/8G77seu8zAB3A5sK3UFoOl06zcshEzhUO62sAEtrEuW/H1CcyoupOrD+NbQJytYgA4CppXPzlrmp4JZKA=="],
1496+ "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.15", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg=="],
14621497
1463− "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-8DakphqOz8JrMYWTJmWA+vDJxut6LijZ8Xcdc4flOlAhU7PNVwo2MaWBF9iXjJAPo5rC/IxEFZDhJ3GC7NHvug=="],
1498+ "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.15", "", { "os": "darwin", "cpu": "x64" }, "sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw=="],
14641499
1465− "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.13", "", { "os": "freebsd", "cpu": "x64" }, "sha512-4wBQFfjDuXYN/SVI8inBF3Aa+isq40rc6VMFbk5jcpolUBTe5cYnMsHZ51nFWsx3PVyyNN3vgoESki0Hmr/4BA=="],
1500+ "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.15", "", { "os": "freebsd", "cpu": "x64" }, "sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw=="],
14661501
1467− "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm" }, "sha512-JW/e4yPIXLms+jmnbwwy5LA/LxVwZUWLN8xug+V200wzaVi5TEGIWQlh8o91gWYFxW609euI98OCCemmWGuPrw=="],
1502+ "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15", "", { "os": "linux", "cpu": "arm" }, "sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA=="],
14681503
1469− "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZfKWpXiUymDnavepCaM6KG/uGydJ4l2nBmMxg60Ci4CbeefpqjPWpfaZM7PThOhk2dssqBAcwLc6rAyr0uTdXg=="],
1504+ "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w=="],
14701505
1471− "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-bmRg3O6Z0gq9yodKKWCIpnlH051sEfdVwt+6m5UDffAQMUUqU0xjnQqqAUm+Gu7ofAAly9DqiQDtKu2nPDEABA=="],
1506+ "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ=="],
14721507
1473− "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "ppc64" }, "sha512-8Wtnbw4k7pMYN9B/mOEAsQ8HOiq7AZ31Ig4M9BKn2So4xRaFEhtCSa4ZJaOutOWq50zpgR4N5+L/opnlaCx8wQ=="],
1508+ "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15", "", { "os": "linux", "cpu": "ppc64" }, "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ=="],
14741509
1475− "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "s390x" }, "sha512-D/0Nlo8mQuxSMohNJUF2lDXWRsFDsHldfRRgD9bRgktj+EndGPj4DOV37LqDKPYS+osdyhZEH7fTakTAEcW7qg=="],
1510+ "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15", "", { "os": "linux", "cpu": "s390x" }, "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ=="],
14761511
1477− "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "x64" }, "sha512-eRrPvat2YaVQcwwKi/JzOP6MKf1WRnOCr+VaI3cTWz3ZoLcP/654z90lVCJ4dAuMEpPdke0n+qyAqXDZdIC4rA=="],
1512+ "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.15", "", { "os": "linux", "cpu": "x64" }, "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA=="],
14781513
1479− "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "x64" }, "sha512-PsdONiFRp8hR8KgVjTWjZ9s7uA3uueWL0t74/cKHfM4dR5zXYv4AjB8BvA+QDToqxAFg4ZkcVEqeu5F7inoz5w=="],
1514+ "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.15", "", { "os": "linux", "cpu": "x64" }, "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw=="],
14801515
1481− "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.13", "", { "os": "none", "cpu": "arm64" }, "sha512-hCNXgC5dI3TVOLrPT++PKFNZ+1EtS0mLQwfXXXSUD/+rGlB65gZDwN/IDuxLpQP4x8RYYHqGomlUXzpO8aVI2w=="],
1516+ "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.15", "", { "os": "none", "cpu": "arm64" }, "sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg=="],
14821517
1483− "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.13", "", { "dependencies": { "@emnapi/core": "1.9.1", "@emnapi/runtime": "1.9.1", "@napi-rs/wasm-runtime": "^1.1.2" }, "cpu": "none" }, "sha512-viLS5C5et8NFtLWw9Sw3M/w4vvnVkbWkO7wSNh3C+7G1+uCkGpr6PcjNDSFcNtmXY/4trjPBqUfcOL+P3sWy/g=="],
1518+ "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.15", "", { "dependencies": { "@emnapi/core": "1.9.2", "@emnapi/runtime": "1.9.2", "@napi-rs/wasm-runtime": "^1.1.3" }, "cpu": "none" }, "sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q=="],
14841519
1485− "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13", "", { "os": "win32", "cpu": "arm64" }, "sha512-Fqa3Tlt1xL4wzmAYxGNFV36Hb+VfPc9PYU+E25DAnswXv3ODDu/yyWjQDbXMo5AGWkQVjLgQExuVu8I/UaZhPQ=="],
1520+ "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15", "", { "os": "win32", "cpu": "arm64" }, "sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA=="],
14861521
1487− "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.13", "", { "os": "win32", "cpu": "x64" }, "sha512-/pLI5kPkGEi44TDlnbio3St/5gUFeN51YWNAk/Gnv6mEQBOahRBh52qVFVBpmrnU01n2yysvBML9Ynu7K4kGAQ=="],
1522+ "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.15", "", { "os": "win32", "cpu": "x64" }, "sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g=="],
14881523
14891524 "@rolldown/plugin-babel": ["@rolldown/plugin-babel@0.2.2", "", { "dependencies": { "picomatch": "^4.0.3" }, "peerDependencies": { "@babel/core": "^7.29.0 || ^8.0.0-rc.1", "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1", "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1", "rolldown": "^1.0.0-rc.5", "vite": "^8.0.0" }, "optionalPeers": ["@babel/plugin-transform-runtime", "@babel/runtime", "vite"] }, "sha512-q9pE8+47bQNHb5eWVcE6oXppA+JTSwvnrhH53m0ZuHuK5MLvwsLoWrWzBTFQqQ06BVxz1gp0HblLsch8o6pvZw=="],
14901525
@@ -1782,25 +1817,23 @@ · 291 unmodified lines
17821817
17831818 "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="],
17841819
1785− "@vercel/functions": ["@vercel/functions@3.4.3", "", { "dependencies": { "@vercel/oidc": "3.2.0" }, "peerDependencies": { "@aws-sdk/credential-provider-web-identity": "*" }, "optionalPeers": ["@aws-sdk/credential-provider-web-identity"] }, "sha512-kA14KIUVgAY6VXbhZ5jjY+s0883cV3cZqIU3WhrSRxuJ9KvxatMjtmzl0K23HK59oOUjYl7HaE/eYMmhmqpZzw=="],
1786−
17871820 "@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="],
17881821
17891822 "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.1", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.7" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ=="],
17901823
1791− "@vitest/expect": ["@vitest/expect@4.1.3", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.3", "@vitest/utils": "4.1.3", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-CW8Q9KMtXDGHj0vCsqui0M5KqRsu0zm0GNDW7Gd3U7nZ2RFpPKSCpeCXoT+/+5zr1TNlsoQRDEz+LzZUyq6gnQ=="],
1824+ "@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
17921825
1793− "@vitest/mocker": ["@vitest/mocker@4.1.3", "", { "dependencies": { "@vitest/spy": "4.1.3", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-XN3TrycitDQSzGRnec/YWgoofkYRhouyVQj4YNsJ5r/STCUFqMrP4+oxEv3e7ZbLi4og5kIHrZwekDJgw6hcjw=="],
1826+ "@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
17941827
1795− "@vitest/pretty-format": ["@vitest/pretty-format@4.1.3", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-hYqqwuMbpkkBodpRh4k4cQSOELxXky1NfMmQvOfKvV8zQHz8x8Dla+2wzElkMkBvSAJX5TRGHJAQvK0TcOafwg=="],
1828+ "@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
17961829
1797− "@vitest/runner": ["@vitest/runner@4.1.3", "", { "dependencies": { "@vitest/utils": "4.1.3", "pathe": "^2.0.3" } }, "sha512-VwgOz5MmT0KhlUj40h02LWDpUBVpflZ/b7xZFA25F29AJzIrE+SMuwzFf0b7t4EXdwRNX61C3B6auIXQTR3ttA=="],
1830+ "@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
17981831
1799− "@vitest/snapshot": ["@vitest/snapshot@4.1.3", "", { "dependencies": { "@vitest/pretty-format": "4.1.3", "@vitest/utils": "4.1.3", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-9l+k/J9KG5wPJDX9BcFFzhhwNjwkRb8RsnYhaT1vPY7OufxmQFc9sZzScRCPTiETzl37mrIWVY9zxzmdVeJwDQ=="],
1832+ "@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
18001833
1801− "@vitest/spy": ["@vitest/spy@4.1.3", "", {}, "sha512-ujj5Uwxagg4XUIfAUyRQxAg631BP6e9joRiN99mr48Bg9fRs+5mdUElhOoZ6rP5mBr8Bs3lmrREnkrQWkrsTCw=="],
1834+ "@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
18021835
1803− "@vitest/utils": ["@vitest/utils@4.1.3", "", { "dependencies": { "@vitest/pretty-format": "4.1.3", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-Pc/Oexse/khOWsGB+w3q4yzA4te7W4gpZZAvk+fr8qXfTURZUMj5i7kuxsNK5mP/dEB6ao3jfr0rs17fHhbHdw=="],
1836+ "@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
18041837
18051838 "@workos-inc/node": ["@workos-inc/node@8.12.1", "", { "dependencies": { "eventemitter3": "^5.0.4" } }, "sha512-jOYaZACPGb4o1QYvy7NbbBBaDhGUitU6oH//vSYWMh3p2Le5yOt4Q01RQPl78fUKjG7CVtGhVcLi4QLB1+cAtA=="],
18061839
@@ -1816,7 +1849,7 @@ · 9 unmodified lines
18161849
18171850 "agents": ["agents@0.10.0", "", { "dependencies": { "@babel/plugin-proposal-decorators": "^7.29.0", "@cfworker/json-schema": "^4.1.1", "@modelcontextprotocol/sdk": "1.29.0", "@rolldown/plugin-babel": "^0.2.2", "cron-schedule": "^6.0.0", "json-schema": "^0.4.0", "json-schema-to-typescript": "^15.0.4", "mimetext": "^3.0.28", "nanoid": "^5.1.7", "partyserver": "^0.4.1", "partysocket": "1.1.16", "picomatch": "^4.0.4", "yargs": "^18.0.0" }, "peerDependencies": { "@ai-sdk/openai": "^3.0.0", "@ai-sdk/react": "^3.0.0", "@cloudflare/ai-chat": "^0.4.0", "@cloudflare/codemode": "^0.3.4", "@x402/core": "^2.0.0", "@x402/evm": "^2.0.0", "ai": "^6.0.0", "react": "^19.0.0", "viem": ">=2.0.0", "vite": ">=6.0.0 <9.0.0", "zod": "^4.0.0" }, "optionalPeers": ["@ai-sdk/openai", "@ai-sdk/react", "@cloudflare/ai-chat", "@cloudflare/codemode", "@x402/core", "@x402/evm", "viem", "vite"], "bin": { "agents": "dist/cli/index.js" } }, "sha512-N1eHE0u1ECn5yJuAr98Z9prBUTrJCK7ya9expqaGbpYat7n+lraeI9JUS0Y+ANI2msqUaDZD5gdNEpg7GoQJlA=="],
18181851
1819− "ai": ["ai@6.0.154", "", { "dependencies": { "@ai-sdk/gateway": "3.0.94", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-HfKJKCTJsDZxqrIUDSVnBQ7DpQlx5WI4ExqtLd7Bl70epLmvkpc/HYMzU1hP9W+g9VEAcvZo4fbMqc3v5D+9gQ=="],
1852+ "ai": ["ai@6.0.155", "", { "dependencies": { "@ai-sdk/gateway": "3.0.94", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-C58z7J9ZuZgm22U6dEskXd7IzfIwo1xcvl+MRK252HDRt5v4kAKJbs6cuC0orJ2CMeF+IwdXsfup4lZNsGF6PQ=="],
18201853
18211854 "ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="],
18221855
@@ -1834,6 +1867,8 @@ · 11 unmodified lines
18341867
18351868 "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="],
18361869
1870+ "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="],
1871+
18371872 "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
18381873
18391874 "app-builder-bin": ["app-builder-bin@5.0.0-alpha.12", "", {}, "sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w=="],
@@ -1862,7 +1897,7 @@ · 22 unmodified lines
18621897
18631898 "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="],
18641899
1865− "astro": ["astro@6.1.4", "", { "dependencies": { "@astrojs/compiler": "^3.0.1", "@astrojs/internal-helpers": "0.8.0", "@astrojs/markdown-remark": "7.1.0", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^1.1.1", "devalue": "^5.6.3", "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", "flattie": "^1.1.1", "fontace": "~0.4.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "rehype": "^13.0.2", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unist-util-visit": "^5.1.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^7.3.1", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "bin/astro.mjs" } }, "sha512-SRy1bONuCHkGWhI5JiWCQKVDVbeaXOikjAVZs/Nz+lvUvubtdLoZfnacmuZHQ9RL2IOkU54M8/qZYm9ypJDKrg=="],
1900+ "astro": ["astro@6.1.5", "", { "dependencies": { "@astrojs/compiler": "^3.0.1", "@astrojs/internal-helpers": "0.8.0", "@astrojs/markdown-remark": "7.1.0", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^1.1.1", "devalue": "^5.6.3", "diff": "^8.0.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", "flattie": "^1.1.1", "fontace": "~0.4.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "rehype": "^13.0.2", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unist-util-visit": "^5.1.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^7.3.1", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "bin/astro.mjs" } }, "sha512-AJVw/JlssxUCBFi3Hp4djL8Pt7wUQqStBBawCd8cNGBBM2lBzp/rXGguzt4OcMfW+86fs0hpFwMyopHM2r6d3g=="],
18661901
18671902 "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="],
18681903
@@ -1884,7 +1919,7 @@ · 15 unmodified lines
18841919
18851920 "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
18861921
1887− "baseline-browser-mapping": ["baseline-browser-mapping@2.10.16", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA=="],
1922+ "baseline-browser-mapping": ["baseline-browser-mapping@2.10.17", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA=="],
18881923
18891924 "better-path-resolve": ["better-path-resolve@1.0.0", "", { "dependencies": { "is-windows": "^1.0.0" } }, "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g=="],
18901925
@@ -1946,15 +1981,19 @@ · 55 unmodified lines
19461981
19471982 "bun-types": ["bun-types@1.3.11", "", { "dependencies": { "@types/node": "*" } }, "sha512-1KGPpoxQWl9f6wcZh57LvrPIInQMn2TQ7jsgxqpRzg+l0QPOFvJVH7HmvHo/AiPgwXy+/Thf6Ov3EdVn1vOabg=="],
19481983
1984+ "bundle-require": ["bundle-require@5.1.0", "", { "dependencies": { "load-tsconfig": "^0.2.3" }, "peerDependencies": { "esbuild": ">=0.18" } }, "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA=="],
1985+
19491986 "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="],
19501987
1988+ "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="],
1989+
19511990 "cacache": ["cacache@19.0.1", "", { "dependencies": { "@npmcli/fs": "^4.0.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^12.0.0", "tar": "^7.4.3", "unique-filename": "^4.0.0" } }, "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ=="],
19521991
19531992 "cacheable-lookup": ["cacheable-lookup@5.0.4", "", {}, "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA=="],
19541993
19551994 "cacheable-request": ["cacheable-request@7.0.4", "", { "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^6.0.1", "responselike": "^2.0.0" } }, "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg=="],
19561995
1957− "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="],
1996+ "call-bind": ["call-bind@1.0.9", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" } }, "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ=="],
19581997
19591998 "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
19601999
@@ -1962,7 +2001,7 @@ · 1 unmodified line
19622001
19632002 "call-me-maybe": ["call-me-maybe@1.0.2", "", {}, "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ=="],
19642003
1965− "caniuse-lite": ["caniuse-lite@1.0.30001786", "", {}, "sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA=="],
2004+ "caniuse-lite": ["caniuse-lite@1.0.30001787", "", {}, "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg=="],
19662005
19672006 "cbor-extract": ["cbor-extract@2.2.2", "", { "dependencies": { "node-gyp-build-optional-packages": "5.1.1" }, "optionalDependencies": { "@cbor-extract/cbor-extract-darwin-arm64": "2.2.2", "@cbor-extract/cbor-extract-darwin-x64": "2.2.2", "@cbor-extract/cbor-extract-linux-arm": "2.2.2", "@cbor-extract/cbor-extract-linux-arm64": "2.2.2", "@cbor-extract/cbor-extract-linux-x64": "2.2.2", "@cbor-extract/cbor-extract-win32-x64": "2.2.2" }, "bin": { "download-cbor-prebuilds": "bin/download-prebuilds.js" } }, "sha512-hlSxxI9XO2yQfe9g6msd3g4xCfDqK5T5P0fRMLuaLHhxn4ViPrm+a+MUfhrvH2W962RGxcBwEGzLQyjbDG1gng=="],
19682007
@@ -2042,11 +2081,13 @@ · 73 unmodified lines
20422081
20432082 "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="],
20442083
2084+ "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="],
2085+
20452086 "console-browserify": ["console-browserify@1.2.0", "", {}, "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="],
20462087
20472088 "constants-browserify": ["constants-browserify@1.0.0", "", {}, "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ=="],
20482089
2049− "content-disposition": ["content-disposition@1.0.1", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="],
2090+ "content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="],
20502091
20512092 "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="],
20522093
@@ -2082,7 +2123,7 @@ · 29 unmodified lines
20822123
20832124 "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
20842125
2085− "crossws": ["crossws@0.4.4", "", { "peerDependencies": { "srvx": ">=0.7.1" }, "optionalPeers": ["srvx"] }, "sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg=="],
2126+ "crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="],
20862127
20872128 "crypto-browserify": ["crypto-browserify@3.12.1", "", { "dependencies": { "browserify-cipher": "^1.0.1", "browserify-sign": "^4.2.3", "create-ecdh": "^4.0.4", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", "diffie-hellman": "^5.0.3", "hash-base": "~3.0.4", "inherits": "^2.0.4", "pbkdf2": "^3.1.2", "public-encrypt": "^4.0.3", "randombytes": "^2.1.0", "randomfill": "^1.0.4" } }, "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ=="],
20882129
@@ -2174,8 +2215,6 @@ · 85 unmodified lines
21742215
21752216 "dayjs": ["dayjs@1.11.20", "", {}, "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ=="],
21762217
2177− "db0": ["db0@0.3.4", "", { "peerDependencies": { "@electric-sql/pglite": "*", "@libsql/client": "*", "better-sqlite3": "*", "drizzle-orm": "*", "mysql2": "*", "sqlite3": "*" }, "optionalPeers": ["@electric-sql/pglite", "@libsql/client", "better-sqlite3", "drizzle-orm", "mysql2", "sqlite3"] }, "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw=="],
2178−
21792218 "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
21802219
21812220 "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="],
@@ -2216,7 +2255,7 @@ · 34 unmodified lines
22162255
22172256 "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="],
22182257
2219− "devalue": ["devalue@5.7.0", "", {}, "sha512-qCvc8m7cImp1QDCsiY+C2EdSBWSj7Ucfoq87scSdYboDiIKdvMtFbH1U2VReBls6WMhMaUOoK3ZJEDNG/7zm3w=="],
2258+ "devalue": ["devalue@5.7.1", "", {}, "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA=="],
22202259
22212260 "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
22222261
@@ -2274,7 +2313,7 @@ · 51 unmodified lines
22742313
22752314 "electron-publish": ["electron-publish@26.8.1", "", { "dependencies": { "@types/fs-extra": "^9.0.11", "builder-util": "26.8.1", "builder-util-runtime": "9.5.1", "chalk": "^4.1.2", "form-data": "^4.0.5", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", "mime": "^2.5.2" } }, "sha512-q+jrSTIh/Cv4eGZa7oVR+grEJo/FoLMYBAnSL5GCtqwUpr1T+VgKB/dn1pnzxIxqD8S/jP1yilT9VrwCqINR4w=="],
22762315
2277− "electron-to-chromium": ["electron-to-chromium@1.5.332", "", {}, "sha512-7OOtytmh/rINMLwaFTbcMVvYXO3AUm029X0LcyfYk0B557RlPkdpTpnH9+htMlfu5dKwOmT0+Zs2Aw+lnn6TeQ=="],
2316+ "electron-to-chromium": ["electron-to-chromium@1.5.334", "", {}, "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog=="],
22782317
22792318 "electron-winstaller": ["electron-winstaller@5.4.0", "", { "dependencies": { "@electron/asar": "^3.2.1", "debug": "^4.1.1", "fs-extra": "^7.0.1", "lodash": "^4.17.21", "temp": "^0.9.0" }, "optionalDependencies": { "@electron/windows-sign": "^1.1.2" } }, "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg=="],
22802319
@@ -2408,6 +2447,8 @@ · 127 unmodified lines
24082447
24092448 "find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="],
24102449
2450+ "fix-dts-default-cjs-exports": ["fix-dts-default-cjs-exports@1.0.1", "", { "dependencies": { "magic-string": "^0.30.17", "mlly": "^1.7.4", "rollup": "^4.34.8" } }, "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg=="],
2451+
24112452 "flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="],
24122453
24132454 "fontace": ["fontace@0.4.1", "", { "dependencies": { "fontkitten": "^1.0.2" } }, "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw=="],
@@ -2644,7 +2685,9 @@ · 230 unmodified lines
26442685
26452686 "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="],
26462687
2647− "jose": ["jose@5.6.3", "", {}, "sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g=="],
2688+ "jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="],
2689+
2690+ "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="],
26482691
26492692 "js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="],
26502693
@@ -2680,7 +2723,7 @@ · 29 unmodified lines
26802723
26812724 "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="],
26822725
2683− "knip": ["knip@6.3.0", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "get-tsconfig": "4.13.7", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-parser": "^0.121.0", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-g6dVPoTw6iNm3cubC5IWxVkVsd0r5hXhTBTbAGIEQN53GdA2ZM/slMTPJ7n5l8pBebNQPHpxjmKxuR4xVQ2/hQ=="],
2726+ "knip": ["knip@6.3.1", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "get-tsconfig": "4.13.7", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-parser": "^0.121.0", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-22kLJloVcOVOAudCxlFOC0ICAMme7dKsS7pVTEnrmyKGpswb8ieznvAiSKUeFVDJhb01ect6dkDc1Ha1g1sPpg=="],
26842727
26852728 "kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="],
26862729
@@ -2714,6 +2757,12 @@ · 27 unmodified lines
27142757
27152758 "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="],
27162759
2760+ "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
2761+
2762+ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
2763+
2764+ "load-tsconfig": ["load-tsconfig@0.2.5", "", {}, "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg=="],
2765+
27172766 "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="],
27182767
27192768 "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="],
@@ -2730,9 +2779,9 @@ · 10 unmodified lines
27302779
27312780 "lowercase-keys": ["lowercase-keys@2.0.0", "", {}, "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="],
27322781
2733− "lru-cache": ["lru-cache@11.3.2", "", {}, "sha512-wgWa6FWQ3QRRJbIjbsldRJZxdxYngT/dO0I5Ynmlnin8qy7tC6xYzbcJjtN4wHLXtkbVwHzk0C+OejVw1XM+DQ=="],
2782+ "lru-cache": ["lru-cache@11.3.3", "", {}, "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ=="],
27342783
2735− "lucide-react": ["lucide-react@1.7.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg=="],
2784+ "lucide-react": ["lucide-react@1.8.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw=="],
27362785
27372786 "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
27382787
@@ -2908,6 +2957,8 @@ · 169 unmodified lines
29082957
29092958 "multipasta": ["multipasta@0.2.7", "", {}, "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA=="],
29102959
2960+ "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
2961+
29112962 "nanoid": ["nanoid@5.1.7", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ=="],
29122963
29132964 "napi-build-utils": ["napi-build-utils@2.0.0", "", {}, "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="],
@@ -3076,6 +3127,8 @@ · 162 unmodified lines
30763127
30773128 "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="],
30783129
3130+ "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="],
3131+
30793132 "pkce-challenge": ["pkce-challenge@5.0.1", "", {}, "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="],
30803133
30813134 "pkg-dir": ["pkg-dir@5.0.0", "", { "dependencies": { "find-up": "^5.0.0" } }, "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA=="],
@@ -3092,7 +3145,9 @@ · 10 unmodified lines
30923145
30933146 "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
30943147
3095− "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="],
3148+ "postcss": ["postcss@8.5.9", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw=="],
3149+
3150+ "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="],
30963151
30973152 "postgres": ["postgres@3.4.9", "", {}, "sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw=="],
30983153
@@ -3138,7 +3193,7 @@ · 39 unmodified lines
31383193
31393194 "pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="],
31403195
3141− "qs": ["qs@6.15.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ=="],
3196+ "qs": ["qs@6.15.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg=="],
31423197
31433198 "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="],
31443199
@@ -3166,17 +3221,17 @@ · 21 unmodified lines
31663221
31673222 "rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="],
31683223
3169− "react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="],
3224+ "react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="],
31703225
31713226 "react-day-picker": ["react-day-picker@9.14.0", "", { "dependencies": { "@date-fns/tz": "^1.4.1", "@tabby_ai/hijri-converter": "1.0.5", "date-fns": "^4.1.0", "date-fns-jalali": "4.1.0-0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-tBaoDWjPwe0M5pGrum4H0SR6Lyk+BO9oHnp9JbKpGKW2mlraNPgP9BMfsg5pWpwrssARmeqk7YBl2oXutZTaHA=="],
31723227
3173− "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="],
3228+ "react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="],
31743229
31753230 "react-grab": ["react-grab@0.1.31", "", { "dependencies": { "@react-grab/cli": "0.1.31", "bippy": "^0.5.39" }, "peerDependencies": { "react": ">=17.0.0" }, "optionalPeers": ["react"], "bin": { "react-grab": "bin/cli.js" } }, "sha512-JAdlg46rNFv58l0tGs6omroDlCo1+oj70v03tyaP5AOHbx1wNNP1aaoTcDLSlcN4K5gwve9zR8/t0CT2mwLqSA=="],
31763231
31773232 "react-hook-form": ["react-hook-form@7.72.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-RhwBoy2ygeVZje+C+bwJ8g0NjTdBmDlJvAUHTxRjTmSUKPYsKfMphkS2sgEMotsY03bP358yEYlnUeZy//D9Ig=="],
31783233
3179− "react-is": ["react-is@19.2.4", "", {}, "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA=="],
3234+ "react-is": ["react-is@19.2.5", "", {}, "sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ=="],
31803235
31813236 "react-redux": ["react-redux@9.2.0", "", { "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "@types/react": "^18.2.25 || ^19", "react": "^18.0 || ^19", "redux": "^5.0.0" }, "optionalPeers": ["@types/react", "redux"] }, "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g=="],
31823237
@@ -3274,7 +3329,7 @@ · 91 unmodified lines
32743329
32753330 "robust-predicates": ["robust-predicates@3.0.3", "", {}, "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA=="],
32763331
3277− "rolldown": ["rolldown@1.0.0-rc.13", "", { "dependencies": { "@oxc-project/types": "=0.123.0", "@rolldown/pluginutils": "1.0.0-rc.13" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.13", "@rolldown/binding-darwin-arm64": "1.0.0-rc.13", "@rolldown/binding-darwin-x64": "1.0.0-rc.13", "@rolldown/binding-freebsd-x64": "1.0.0-rc.13", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.13", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.13", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.13", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.13", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.13", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.13", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.13" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-bvVj8YJmf0rq4pSFmH7laLa6pYrhghv3PRzrCdRAr23g66zOKVJ4wkvFtgohtPLWmthgg8/rkaqRHrpUEh0Zbw=="],
3332+ "rolldown": ["rolldown@1.0.0-rc.15", "", { "dependencies": { "@oxc-project/types": "=0.124.0", "@rolldown/pluginutils": "1.0.0-rc.15" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.15", "@rolldown/binding-darwin-arm64": "1.0.0-rc.15", "@rolldown/binding-darwin-x64": "1.0.0-rc.15", "@rolldown/binding-freebsd-x64": "1.0.0-rc.15", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g=="],
32783333
32793334 "rollup": ["rollup@4.60.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.1", "@rollup/rollup-android-arm64": "4.60.1", "@rollup/rollup-darwin-arm64": "4.60.1", "@rollup/rollup-darwin-x64": "4.60.1", "@rollup/rollup-freebsd-arm64": "4.60.1", "@rollup/rollup-freebsd-x64": "4.60.1", "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", "@rollup/rollup-linux-arm-musleabihf": "4.60.1", "@rollup/rollup-linux-arm64-gnu": "4.60.1", "@rollup/rollup-linux-arm64-musl": "4.60.1", "@rollup/rollup-linux-loong64-gnu": "4.60.1", "@rollup/rollup-linux-loong64-musl": "4.60.1", "@rollup/rollup-linux-ppc64-gnu": "4.60.1", "@rollup/rollup-linux-ppc64-musl": "4.60.1", "@rollup/rollup-linux-riscv64-gnu": "4.60.1", "@rollup/rollup-linux-riscv64-musl": "4.60.1", "@rollup/rollup-linux-s390x-gnu": "4.60.1", "@rollup/rollup-linux-x64-gnu": "4.60.1", "@rollup/rollup-linux-x64-musl": "4.60.1", "@rollup/rollup-openbsd-x64": "4.60.1", "@rollup/rollup-openharmony-arm64": "4.60.1", "@rollup/rollup-win32-arm64-msvc": "4.60.1", "@rollup/rollup-win32-ia32-msvc": "4.60.1", "@rollup/rollup-win32-x64-gnu": "4.60.1", "@rollup/rollup-win32-x64-msvc": "4.60.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w=="],
32803335
@@ -3338,7 +3393,7 @@ · 57 unmodified lines
33383393
33393394 "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
33403395
3341− "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="],
3396+ "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="],
33423397
33433398 "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
33443399
@@ -3426,6 +3481,8 @@ · 81 unmodified lines
34263481
34273482 "stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="],
34283483
3484+ "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="],
3485+
34293486 "sumchecker": ["sumchecker@3.0.1", "", { "dependencies": { "debug": "^4.1.0" } }, "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg=="],
34303487
34313488 "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="],
@@ -3454,6 +3511,10 @@ · 22 unmodified lines
34543511
34553512 "term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="],
34563513
3514+ "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
3515+
3516+ "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="],
3517+
34573518 "timers-browserify": ["timers-browserify@2.0.12", "", { "dependencies": { "setimmediate": "^1.0.4" } }, "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ=="],
34583519
34593520 "tiny-async-pool": ["tiny-async-pool@1.3.0", "", { "dependencies": { "semver": "^5.5.0" } }, "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA=="],
@@ -3468,7 +3529,7 @@ · 8 unmodified lines
34683529
34693530 "tinyexec": ["tinyexec@1.1.1", "", {}, "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg=="],
34703531
3471− "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
3532+ "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="],
34723533
34733534 "tinyrainbow": ["tinyrainbow@3.1.0", "", {}, "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="],
34743535
@@ -3494,10 +3555,14 @@ · 19 unmodified lines
34943555
34953556 "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="],
34963557
3558+ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="],
3559+
34973560 "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="],
34983561
34993562 "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
35003563
3564+ "tsup": ["tsup@8.5.1", "", { "dependencies": { "bundle-require": "^5.1.0", "cac": "^6.7.14", "chokidar": "^4.0.3", "consola": "^3.4.0", "debug": "^4.4.0", "esbuild": "^0.27.0", "fix-dts-default-cjs-exports": "^1.0.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", "rollup": "^4.34.8", "source-map": "^0.7.6", "sucrase": "^3.35.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.11", "tree-kill": "^1.2.2" }, "peerDependencies": { "@microsoft/api-extractor": "^7.36.0", "@swc/core": "^1", "postcss": "^8.4.12", "typescript": ">=4.5.0" }, "optionalPeers": ["@microsoft/api-extractor", "@swc/core", "postcss", "typescript"], "bin": { "tsup": "dist/cli-default.js", "tsup-node": "dist/cli-node.js" } }, "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing=="],
3565+
35013566 "tsx": ["tsx@4.21.0", "", { "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw=="],
35023567
35033568 "tty-browserify": ["tty-browserify@0.0.1", "", {}, "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw=="],
@@ -3596,11 +3661,11 @@ · 92 unmodified lines
35963661
35973662 "victory-vendor": ["victory-vendor@37.3.6", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ=="],
35983663
3599− "vite": ["vite@8.0.7", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.13", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-P1PbweD+2/udplnThz3btF4cf6AgPky7kk23RtHUkJIU5BIxwPprhRGmOAHs6FTI7UiGbTNrgNP6jSYD6JaRnw=="],
3664+ "vite": ["vite@8.0.8", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.15", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw=="],
36003665
36013666 "vitefu": ["vitefu@1.1.3", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["vite"] }, "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg=="],
36023667
3603− "vitest": ["vitest@4.1.3", "", { "dependencies": { "@vitest/expect": "4.1.3", "@vitest/mocker": "4.1.3", "@vitest/pretty-format": "4.1.3", "@vitest/runner": "4.1.3", "@vitest/snapshot": "4.1.3", "@vitest/spy": "4.1.3", "@vitest/utils": "4.1.3", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.3", "@vitest/browser-preview": "4.1.3", "@vitest/browser-webdriverio": "4.1.3", "@vitest/coverage-istanbul": "4.1.3", "@vitest/coverage-v8": "4.1.3", "@vitest/ui": "4.1.3", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-DBc4Tx0MPNsqb9isoyOq00lHftVx/KIU44QOm2q59npZyLUkENn8TMFsuzuO+4U2FUa9rgbbPt3udrP25GcjXw=="],
3668+ "vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
36043669
36053670 "vm-browserify": ["vm-browserify@1.1.2", "", {}, "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="],
36063671
@@ -3702,10 +3767,6 @@ · 95 unmodified lines
37023767
37033768 "@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="],
37043769
3705− "@cloudflare/vite-plugin/miniflare": ["miniflare@4.20260405.0", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "^0.34.5", "undici": "7.24.4", "workerd": "1.20260405.1", "ws": "8.18.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-tpr4XdWMq7zFdsHH+CS0XS47nQzlRZH0rMJ1vobOZbkrs3cIj7qbD40ON616hDnzHxwqwB2qKHzmmuj6oRisSQ=="],
3706−
3707− "@cloudflare/vite-plugin/wrangler": ["wrangler@4.81.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.2", "@cloudflare/unenv-preset": "2.16.0", "blake3-wasm": "2.1.5", "esbuild": "0.27.3", "miniflare": "4.20260405.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260405.1" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20260405.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-9fLPDuDcb8Nu6iXrl5E3HGYt3TVhQr/UvqtTvWr9Nl1X7PlQrmWMwQCfSioqN8VHYyQCyESV5jQsoKg8Sx+sEA=="],
3708−
37093770 "@cloudflare/vitest-pool-workers/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
37103771
37113772 "@develar/schema-utils/ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="],
@@ -3742,49 +3803,7 @@ · 30 unmodified lines
37423803
37433804 "@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="],
37443805
3745− "@executor/cloud/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3746−
3747− "@executor/codemode-core/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3748−
3749− "@executor/config/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3750−
3751− "@executor/env/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3752−
3753− "@executor/execution/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3754−
3755− "@executor/host-mcp/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3756−
3757− "@executor/ir/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3758−
3759− "@executor/plugin-file-secrets/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3760−
3761− "@executor/plugin-google-discovery/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3762−
3763− "@executor/plugin-graphql/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3764−
3765− "@executor/plugin-keychain/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3766−
3767− "@executor/plugin-mcp/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3768−
3769− "@executor/plugin-onepassword/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3770−
3771− "@executor/plugin-openapi/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3772−
3773− "@executor/runtime-deno-subprocess/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3774−
3775− "@executor/runtime-dynamic-worker/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3776−
3777− "@executor/runtime-quickjs/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3778−
3779− "@executor/runtime-secure-exec/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3780−
3781− "@executor/sdk/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3782−
3783− "@executor/storage-file/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3784−
3785− "@executor/storage-postgres/vitest": ["vitest@4.1.4", "", { "dependencies": { "@vitest/expect": "4.1.4", "@vitest/mocker": "4.1.4", "@vitest/pretty-format": "4.1.4", "@vitest/runner": "4.1.4", "@vitest/snapshot": "4.1.4", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.4", "@vitest/browser-preview": "4.1.4", "@vitest/browser-webdriverio": "4.1.4", "@vitest/coverage-istanbul": "4.1.4", "@vitest/coverage-v8": "4.1.4", "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg=="],
3786−
3787− "@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="],
3806+ "@executor/example-promise-sdk/typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="],
37883807
37893808 "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],
37903809
@@ -3912,7 +3931,7 @@ · 121 unmodified lines
39123931
39133932 "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="],
39143933
3915− "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.2", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw=="],
3934+ "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ=="],
39163935
39173936 "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="],
39183937
@@ -3928,8 +3947,6 @@ · 9 unmodified lines
39283947
39293948 "@tanstack/start-plugin-core/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
39303949
3931− "@vercel/functions/@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="],
3932−
39333950 "agents/yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="],
39343951
39353952 "ajv-keywords/ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="],
@@ -4022,8 +4039,6 @@ · 86 unmodified lines
40224039
40234040 "h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="],
40244041
4025− "h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="],
4026−
40274042 "hosted-git-info/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="],
40284043
40294044 "htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="],
@@ -4098,14 +4113,16 @@ · 68 unmodified lines
40984113
40994114 "ripemd160/hash-base": ["hash-base@3.1.2", "", { "dependencies": { "inherits": "^2.0.4", "readable-stream": "^2.3.8", "safe-buffer": "^5.2.1", "to-buffer": "^1.2.1" } }, "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg=="],
41004115
4101− "rolldown/@oxc-project/types": ["@oxc-project/types@0.123.0", "", {}, "sha512-YtECP/y8Mj1lSHiUWGSRzy/C6teUKlS87dEfuVKT09LgQbUsBW1rNg+MiJ4buGu3yuADV60gbIvo9/HplA56Ew=="],
4116+ "rolldown/@oxc-project/types": ["@oxc-project/types@0.124.0", "", {}, "sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg=="],
41024117
4103− "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.13", "", {}, "sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA=="],
4118+ "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.15", "", {}, "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g=="],
41044119
41054120 "router/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="],
41064121
41074122 "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
41084123
4124+ "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="],
4125+
41094126 "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="],
41104127
41114128 "tar-fs/chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="],
@@ -4116,6 +4133,12 @@ · 4 unmodified lines
41164133
41174134 "to-buffer/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="],
41184135
4136+ "tsup/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
4137+
4138+ "tsup/esbuild": ["esbuild@0.27.7", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.7", "@esbuild/android-arm": "0.27.7", "@esbuild/android-arm64": "0.27.7", "@esbuild/android-x64": "0.27.7", "@esbuild/darwin-arm64": "0.27.7", "@esbuild/darwin-x64": "0.27.7", "@esbuild/freebsd-arm64": "0.27.7", "@esbuild/freebsd-x64": "0.27.7", "@esbuild/linux-arm": "0.27.7", "@esbuild/linux-arm64": "0.27.7", "@esbuild/linux-ia32": "0.27.7", "@esbuild/linux-loong64": "0.27.7", "@esbuild/linux-mips64el": "0.27.7", "@esbuild/linux-ppc64": "0.27.7", "@esbuild/linux-riscv64": "0.27.7", "@esbuild/linux-s390x": "0.27.7", "@esbuild/linux-x64": "0.27.7", "@esbuild/netbsd-arm64": "0.27.7", "@esbuild/netbsd-x64": "0.27.7", "@esbuild/openbsd-arm64": "0.27.7", "@esbuild/openbsd-x64": "0.27.7", "@esbuild/openharmony-arm64": "0.27.7", "@esbuild/sunos-x64": "0.27.7", "@esbuild/win32-arm64": "0.27.7", "@esbuild/win32-ia32": "0.27.7", "@esbuild/win32-x64": "0.27.7" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w=="],
4139+
4140+ "tsup/tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="],
4141+
41194142 "tsx/esbuild": ["esbuild@0.27.7", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.7", "@esbuild/android-arm": "0.27.7", "@esbuild/android-arm64": "0.27.7", "@esbuild/android-x64": "0.27.7", "@esbuild/darwin-arm64": "0.27.7", "@esbuild/darwin-x64": "0.27.7", "@esbuild/freebsd-arm64": "0.27.7", "@esbuild/freebsd-x64": "0.27.7", "@esbuild/linux-arm": "0.27.7", "@esbuild/linux-arm64": "0.27.7", "@esbuild/linux-ia32": "0.27.7", "@esbuild/linux-loong64": "0.27.7", "@esbuild/linux-mips64el": "0.27.7", "@esbuild/linux-ppc64": "0.27.7", "@esbuild/linux-riscv64": "0.27.7", "@esbuild/linux-s390x": "0.27.7", "@esbuild/linux-x64": "0.27.7", "@esbuild/netbsd-arm64": "0.27.7", "@esbuild/netbsd-x64": "0.27.7", "@esbuild/openbsd-arm64": "0.27.7", "@esbuild/openbsd-x64": "0.27.7", "@esbuild/openharmony-arm64": "0.27.7", "@esbuild/sunos-x64": "0.27.7", "@esbuild/win32-arm64": "0.27.7", "@esbuild/win32-ia32": "0.27.7", "@esbuild/win32-x64": "0.27.7" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w=="],
41204143
41214144 "unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
@@ -4130,12 +4153,6 @@ · 8 unmodified lines
41304153
41314154 "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
41324155
4133− "@cloudflare/vite-plugin/miniflare/undici": ["undici@7.24.4", "", {}, "sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w=="],
4134−
4135− "@cloudflare/vite-plugin/miniflare/workerd": ["workerd@1.20260405.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260405.1", "@cloudflare/workerd-darwin-arm64": "1.20260405.1", "@cloudflare/workerd-linux-64": "1.20260405.1", "@cloudflare/workerd-linux-arm64": "1.20260405.1", "@cloudflare/workerd-windows-64": "1.20260405.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-bSaRWCv9iO8/FWpgZRjHLGZLolX5s1AErRSYaTECMMHOZKuCbl2+ehnSyc+ZZ/70y+9owADmN6HoYEWvBlJdYw=="],
4136−
4137− "@cloudflare/vite-plugin/wrangler/workerd": ["workerd@1.20260405.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260405.1", "@cloudflare/workerd-darwin-arm64": "1.20260405.1", "@cloudflare/workerd-linux-64": "1.20260405.1", "@cloudflare/workerd-linux-arm64": "1.20260405.1", "@cloudflare/workerd-windows-64": "1.20260405.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-bSaRWCv9iO8/FWpgZRjHLGZLolX5s1AErRSYaTECMMHOZKuCbl2+ehnSyc+ZZ/70y+9owADmN6HoYEWvBlJdYw=="],
4138−
41394156 "@develar/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
41404157
41414158 "@electron/asar/minimatch/brace-expansion": ["brace-expansion@1.1.13", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w=="],
@@ -4214,300 +4231,6 @@ · 72 unmodified lines
42144231
42154232 "@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="],
42164233
4217− "@executor/cloud/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4218−
4219− "@executor/cloud/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4220−
4221− "@executor/cloud/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4222−
4223− "@executor/cloud/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4224−
4225− "@executor/cloud/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4226−
4227− "@executor/cloud/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4228−
4229− "@executor/cloud/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4230−
4231− "@executor/codemode-core/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4232−
4233− "@executor/codemode-core/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4234−
4235− "@executor/codemode-core/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4236−
4237− "@executor/codemode-core/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4238−
4239− "@executor/codemode-core/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4240−
4241− "@executor/codemode-core/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4242−
4243− "@executor/codemode-core/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4244−
4245− "@executor/config/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4246−
4247− "@executor/config/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4248−
4249− "@executor/config/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4250−
4251− "@executor/config/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4252−
4253− "@executor/config/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4254−
4255− "@executor/config/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4256−
4257− "@executor/config/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4258−
4259− "@executor/env/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4260−
4261− "@executor/env/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4262−
4263− "@executor/env/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4264−
4265− "@executor/env/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4266−
4267− "@executor/env/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4268−
4269− "@executor/env/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4270−
4271− "@executor/env/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4272−
4273− "@executor/execution/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4274−
4275− "@executor/execution/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4276−
4277− "@executor/execution/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4278−
4279− "@executor/execution/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4280−
4281− "@executor/execution/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4282−
4283− "@executor/execution/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4284−
4285− "@executor/execution/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4286−
4287− "@executor/host-mcp/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4288−
4289− "@executor/host-mcp/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4290−
4291− "@executor/host-mcp/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4292−
4293− "@executor/host-mcp/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4294−
4295− "@executor/host-mcp/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4296−
4297− "@executor/host-mcp/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4298−
4299− "@executor/host-mcp/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4300−
4301− "@executor/ir/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4302−
4303− "@executor/ir/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4304−
4305− "@executor/ir/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4306−
4307− "@executor/ir/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4308−
4309− "@executor/ir/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4310−
4311− "@executor/ir/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4312−
4313− "@executor/ir/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4314−
4315− "@executor/plugin-file-secrets/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4316−
4317− "@executor/plugin-file-secrets/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4318−
4319− "@executor/plugin-file-secrets/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4320−
4321− "@executor/plugin-file-secrets/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4322−
4323− "@executor/plugin-file-secrets/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4324−
4325− "@executor/plugin-file-secrets/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4326−
4327− "@executor/plugin-file-secrets/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4328−
4329− "@executor/plugin-google-discovery/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4330−
4331− "@executor/plugin-google-discovery/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4332−
4333− "@executor/plugin-google-discovery/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4334−
4335− "@executor/plugin-google-discovery/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4336−
4337− "@executor/plugin-google-discovery/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4338−
4339− "@executor/plugin-google-discovery/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4340−
4341− "@executor/plugin-google-discovery/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4342−
4343− "@executor/plugin-graphql/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4344−
4345− "@executor/plugin-graphql/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4346−
4347− "@executor/plugin-graphql/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4348−
4349− "@executor/plugin-graphql/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4350−
4351− "@executor/plugin-graphql/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4352−
4353− "@executor/plugin-graphql/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4354−
4355− "@executor/plugin-graphql/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4356−
4357− "@executor/plugin-keychain/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4358−
4359− "@executor/plugin-keychain/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4360−
4361− "@executor/plugin-keychain/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4362−
4363− "@executor/plugin-keychain/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4364−
4365− "@executor/plugin-keychain/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4366−
4367− "@executor/plugin-keychain/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4368−
4369− "@executor/plugin-keychain/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4370−
4371− "@executor/plugin-mcp/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4372−
4373− "@executor/plugin-mcp/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4374−
4375− "@executor/plugin-mcp/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4376−
4377− "@executor/plugin-mcp/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4378−
4379− "@executor/plugin-mcp/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4380−
4381− "@executor/plugin-mcp/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4382−
4383− "@executor/plugin-mcp/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4384−
4385− "@executor/plugin-onepassword/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4386−
4387− "@executor/plugin-onepassword/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4388−
4389− "@executor/plugin-onepassword/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4390−
4391− "@executor/plugin-onepassword/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4392−
4393− "@executor/plugin-onepassword/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4394−
4395− "@executor/plugin-onepassword/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4396−
4397− "@executor/plugin-onepassword/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4398−
4399− "@executor/plugin-openapi/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4400−
4401− "@executor/plugin-openapi/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4402−
4403− "@executor/plugin-openapi/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4404−
4405− "@executor/plugin-openapi/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4406−
4407− "@executor/plugin-openapi/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4408−
4409− "@executor/plugin-openapi/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4410−
4411− "@executor/plugin-openapi/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4412−
4413− "@executor/runtime-deno-subprocess/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4414−
4415− "@executor/runtime-deno-subprocess/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4416−
4417− "@executor/runtime-deno-subprocess/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4418−
4419− "@executor/runtime-deno-subprocess/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4420−
4421− "@executor/runtime-deno-subprocess/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4422−
4423− "@executor/runtime-deno-subprocess/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4424−
4425− "@executor/runtime-deno-subprocess/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4426−
4427− "@executor/runtime-dynamic-worker/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4428−
4429− "@executor/runtime-dynamic-worker/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4430−
4431− "@executor/runtime-dynamic-worker/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4432−
4433− "@executor/runtime-dynamic-worker/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4434−
4435− "@executor/runtime-dynamic-worker/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4436−
4437− "@executor/runtime-dynamic-worker/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4438−
4439− "@executor/runtime-dynamic-worker/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4440−
4441− "@executor/runtime-quickjs/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4442−
4443− "@executor/runtime-quickjs/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4444−
4445− "@executor/runtime-quickjs/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4446−
4447− "@executor/runtime-quickjs/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4448−
4449− "@executor/runtime-quickjs/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4450−
4451− "@executor/runtime-quickjs/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4452−
4453− "@executor/runtime-quickjs/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4454−
4455− "@executor/runtime-secure-exec/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4456−
4457− "@executor/runtime-secure-exec/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4458−
4459− "@executor/runtime-secure-exec/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4460−
4461− "@executor/runtime-secure-exec/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4462−
4463− "@executor/runtime-secure-exec/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4464−
4465− "@executor/runtime-secure-exec/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4466−
4467− "@executor/runtime-secure-exec/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4468−
4469− "@executor/sdk/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4470−
4471− "@executor/sdk/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4472−
4473− "@executor/sdk/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4474−
4475− "@executor/sdk/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4476−
4477− "@executor/sdk/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4478−
4479− "@executor/sdk/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4480−
4481− "@executor/sdk/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4482−
4483− "@executor/storage-file/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4484−
4485− "@executor/storage-file/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4486−
4487− "@executor/storage-file/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4488−
4489− "@executor/storage-file/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4490−
4491− "@executor/storage-file/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4492−
4493− "@executor/storage-file/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4494−
4495− "@executor/storage-file/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4496−
4497− "@executor/storage-postgres/vitest/@vitest/expect": ["@vitest/expect@4.1.4", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.4", "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww=="],
4498−
4499− "@executor/storage-postgres/vitest/@vitest/mocker": ["@vitest/mocker@4.1.4", "", { "dependencies": { "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg=="],
4500−
4501− "@executor/storage-postgres/vitest/@vitest/pretty-format": ["@vitest/pretty-format@4.1.4", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A=="],
4502−
4503− "@executor/storage-postgres/vitest/@vitest/runner": ["@vitest/runner@4.1.4", "", { "dependencies": { "@vitest/utils": "4.1.4", "pathe": "^2.0.3" } }, "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ=="],
4504−
4505− "@executor/storage-postgres/vitest/@vitest/snapshot": ["@vitest/snapshot@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw=="],
4506−
4507− "@executor/storage-postgres/vitest/@vitest/spy": ["@vitest/spy@4.1.4", "", {}, "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ=="],
4508−
4509− "@executor/storage-postgres/vitest/@vitest/utils": ["@vitest/utils@4.1.4", "", { "dependencies": { "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw=="],
4510−
45114234 "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
45124235
45134236 "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
@@ -4760,6 +4483,60 @@ · 246 unmodified lines
47604483
47614484 "temp-file/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="],
47624485
4486+ "tsup/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
4487+
4488+ "tsup/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.7", "", { "os": "aix", "cpu": "ppc64" }, "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg=="],
4489+
4490+ "tsup/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.7", "", { "os": "android", "cpu": "arm" }, "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ=="],
4491+
4492+ "tsup/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.7", "", { "os": "android", "cpu": "arm64" }, "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ=="],
4493+
4494+ "tsup/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.7", "", { "os": "android", "cpu": "x64" }, "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg=="],
4495+
4496+ "tsup/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw=="],
4497+
4498+ "tsup/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ=="],
4499+
4500+ "tsup/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.7", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w=="],
4501+
4502+ "tsup/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ=="],
4503+
4504+ "tsup/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.7", "", { "os": "linux", "cpu": "arm" }, "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA=="],
4505+
4506+ "tsup/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A=="],
4507+
4508+ "tsup/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.7", "", { "os": "linux", "cpu": "ia32" }, "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg=="],
4509+
4510+ "tsup/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q=="],
4511+
4512+ "tsup/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw=="],
4513+
4514+ "tsup/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ=="],
4515+
4516+ "tsup/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ=="],
4517+
4518+ "tsup/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw=="],
4519+
4520+ "tsup/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.7", "", { "os": "linux", "cpu": "x64" }, "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA=="],
4521+
4522+ "tsup/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w=="],
4523+
4524+ "tsup/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.7", "", { "os": "none", "cpu": "x64" }, "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw=="],
4525+
4526+ "tsup/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.7", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A=="],
4527+
4528+ "tsup/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.7", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg=="],
4529+
4530+ "tsup/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw=="],
4531+
4532+ "tsup/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.7", "", { "os": "sunos", "cpu": "x64" }, "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA=="],
4533+
4534+ "tsup/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA=="],
4535+
4536+ "tsup/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.7", "", { "os": "win32", "cpu": "ia32" }, "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw=="],
4537+
4538+ "tsup/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.7", "", { "os": "win32", "cpu": "x64" }, "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg=="],
4539+
47634540 "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.7", "", { "os": "aix", "cpu": "ppc64" }, "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg=="],
47644541
47654542 "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.7", "", { "os": "android", "cpu": "arm" }, "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ=="],
@@ -4866,26 +4643,6 @@ · 100 unmodified lines
48664643
48674644 "@astrojs/cloudflare/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.7", "", { "os": "win32", "cpu": "x64" }, "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg=="],
48684645
4869− "@cloudflare/vite-plugin/miniflare/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260405.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-EbmdBcmeIGogKG4V1odSWQe7z4rHssUD4iaXv0cXA22/MFrzH3iQT0R+FJFyhucGtih/9B9E+6j0QbSQD8xT3w=="],
4870−
4871− "@cloudflare/vite-plugin/miniflare/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260405.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-r44r418bOQtoP+Odu+L/BQM9q5cRSXRd1N167PgZQIo4MlqzTwHO4L0wwXhxbcV/PF46rrQre/uTFS8R0R+xSQ=="],
4872−
4873− "@cloudflare/vite-plugin/miniflare/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260405.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Aaq3RWnaTCzMBo77wC8fjOx+SFdO/rlcXa6HAf+PJs51LyMISFOBCJKqSlS6Irphen0WHHxFKPHUO9bjfj8g2g=="],
4874−
4875− "@cloudflare/vite-plugin/miniflare/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260405.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-Lbp9Z2wiMzy3Sji3YwMHK5WDlejsH3jF4swAFEv7+jIf3NowZHga3GzwTypNRmcwnfz/XrqQ7Hc0Ul9OoU/lCw=="],
4876−
4877− "@cloudflare/vite-plugin/miniflare/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260405.1", "", { "os": "win32", "cpu": "x64" }, "sha512-FhE0kt93kj5JnSPVqi4BAXpQQENyKnuSOoJLd35mkMMGhtPrwv5EsReJdck0S8hUocCBlb+U0RmP8ta6k41HjQ=="],
4878−
4879− "@cloudflare/vite-plugin/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260405.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-EbmdBcmeIGogKG4V1odSWQe7z4rHssUD4iaXv0cXA22/MFrzH3iQT0R+FJFyhucGtih/9B9E+6j0QbSQD8xT3w=="],
4880−
4881− "@cloudflare/vite-plugin/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260405.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-r44r418bOQtoP+Odu+L/BQM9q5cRSXRd1N167PgZQIo4MlqzTwHO4L0wwXhxbcV/PF46rrQre/uTFS8R0R+xSQ=="],
4882−
4883− "@cloudflare/vite-plugin/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260405.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Aaq3RWnaTCzMBo77wC8fjOx+SFdO/rlcXa6HAf+PJs51LyMISFOBCJKqSlS6Irphen0WHHxFKPHUO9bjfj8g2g=="],
4884−
4885− "@cloudflare/vite-plugin/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260405.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-Lbp9Z2wiMzy3Sji3YwMHK5WDlejsH3jF4swAFEv7+jIf3NowZHga3GzwTypNRmcwnfz/XrqQ7Hc0Ul9OoU/lCw=="],
4886−
4887− "@cloudflare/vite-plugin/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260405.1", "", { "os": "win32", "cpu": "x64" }, "sha512-FhE0kt93kj5JnSPVqi4BAXpQQENyKnuSOoJLd35mkMMGhtPrwv5EsReJdck0S8hUocCBlb+U0RmP8ta6k41HjQ=="],
4888−
48894646 "@electron/asar/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
48904647
48914648 "@electron/rebuild/ora/cli-cursor/restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="],
examples/promise-sdk/package.json+18−0
@@ -0,0 +1,18 @@
1+{
2+ "name": "@executor/example-promise-sdk",
3+ "private": true,
4+ "type": "module",
5+ "scripts": {
6+ "start": "bun run src/main.ts",
7+ "typecheck": "tsc --noEmit"
8+ },
9+ "dependencies": {
10+ "@executor/sdk": "workspace:*",
11+ "@executor/plugin-mcp": "workspace:*",
12+ "@executor/plugin-openapi": "workspace:*",
13+ "@executor/plugin-graphql": "workspace:*"
14+ },
15+ "devDependencies": {
16+ "typescript": "latest"
17+ }
18+}
examples/promise-sdk/src/main.ts+189−0
@@ -0,0 +1,189 @@
1+/**
2+ * Example: Promise-based executor SDK with MCP, OpenAPI, GraphQL,
3+ * and a custom plugin — no Effect knowledge needed.
4+ */
5+import { createExecutor, definePlugin } from "@executor/sdk/promise";
6+import { mcpPlugin } from "@executor/plugin-mcp/promise";
7+import { openApiPlugin } from "@executor/plugin-openapi/promise";
8+import { graphqlPlugin } from "@executor/plugin-graphql/promise";
9+import { ToolRegistration, ToolInvocationResult, ToolId } from "@executor/sdk/promise";
10+
11+// ---------------------------------------------------------------------------
12+// 1. Define a custom plugin using only async/await
13+// ---------------------------------------------------------------------------
14+
15+const weatherPlugin = definePlugin({
16+ key: "weather",
17+ init: async (ctx) => {
18+ await ctx.tools.registerInvoker("weather", {
19+ invoke: async (_toolId, args) => {
20+ const { city } = args as { city: string };
21+ return new ToolInvocationResult({
22+ data: { city, temperature: 72, condition: "sunny" },
23+ error: null,
24+ });
25+ },
26+ });
27+
28+ await ctx.tools.register([
29+ new ToolRegistration({
30+ id: ToolId.make("weather.getForecast"),
31+ pluginKey: "weather",
32+ sourceId: "weather",
33+ name: "getForecast",
34+ description: "Get weather forecast for a city",
35+ inputSchema: {
36+ type: "object",
37+ properties: { city: { type: "string" } },
38+ required: ["city"],
39+ },
40+ }),
41+ ]);
42+
43+ return {
44+ extension: {
45+ forecast: async (city: string) => {
46+ const result = await ctx.tools.invoke(
47+ "weather.getForecast",
48+ { city },
49+ { onElicitation: "accept-all" },
50+ );
51+ return result.data as { city: string; temperature: number; condition: string };
52+ },
53+ },
54+ close: async () => {
55+ await ctx.tools.unregister(["weather.getForecast"]);
56+ },
57+ };
58+ },
59+});
60+
61+// ---------------------------------------------------------------------------
62+// 2. Create the executor with all plugins
63+// ---------------------------------------------------------------------------
64+
65+const executor = await createExecutor({
66+ scope: { name: "my-app" },
67+ plugins: [
68+ mcpPlugin(),
69+ openApiPlugin(),
70+ graphqlPlugin(),
71+ weatherPlugin,
72+ ] as const,
73+});
74+
75+// ---------------------------------------------------------------------------
76+// 3. Custom plugin
77+// ---------------------------------------------------------------------------
78+
79+const forecast = await executor.weather.forecast("San Francisco");
80+console.log("Weather:", forecast);
81+
82+// ---------------------------------------------------------------------------
83+// 4. MCP — connect to remote or local servers
84+// ---------------------------------------------------------------------------
85+
86+// Remote server
87+await executor.mcp.addSource({
88+ transport: "remote",
89+ name: "Context7",
90+ endpoint: "https://mcp.context7.com/mcp",
91+});
92+
93+// Stdio server
94+// await executor.mcp.addSource({
95+// transport: "stdio",
96+// name: "My Server",
97+// command: "npx",
98+// args: ["-y", "@my/mcp-server"],
99+// });
100+
101+// ---------------------------------------------------------------------------
102+// 5. OpenAPI — load specs by URL
103+// ---------------------------------------------------------------------------
104+
105+await executor.openapi.addSpec({
106+ spec: "https://petstore3.swagger.io/api/v3/openapi.json",
107+ namespace: "petstore",
108+});
109+
110+// With auth headers (static or secret-backed)
111+// await executor.secrets.set({
112+// id: "stripe-key",
113+// name: "Stripe Key",
114+// value: "sk_live_...",
115+// });
116+// await executor.openapi.addSpec({
117+// spec: "https://raw.githubusercontent.com/.../stripe.json",
118+// namespace: "stripe",
119+// headers: {
120+// Authorization: { secretId: "stripe-key", prefix: "Bearer " },
121+// },
122+// });
123+
124+// ---------------------------------------------------------------------------
125+// 6. GraphQL — introspect endpoints
126+// ---------------------------------------------------------------------------
127+
128+await executor.graphql.addSource({
129+ endpoint: "https://graphql.anilist.co",
130+ namespace: "anilist",
131+});
132+
133+// With auth
134+// await executor.graphql.addSource({
135+// endpoint: "https://api.github.com/graphql",
136+// namespace: "github",
137+// headers: {
138+// Authorization: { secretId: "github-token", prefix: "Bearer " },
139+// },
140+// });
141+
142+// ---------------------------------------------------------------------------
143+// 7. Unified tool catalog — all plugins, one list
144+// ---------------------------------------------------------------------------
145+
146+const tools = await executor.tools.list();
147+console.log(`\n${tools.length} tools across all plugins:`);
148+for (const t of tools) {
149+ console.log(` [${t.pluginKey}] ${t.id} — ${t.description ?? ""}`);
150+}
151+
152+// Get schema for any tool
153+const firstTool = tools.find((t) => t.pluginKey === "openapi" && t.sourceId === "petstore");
154+if (firstTool) {
155+ const schema = await executor.tools.schema(firstTool.id);
156+ console.log(`\n${firstTool.name} input: ${schema.inputTypeScript}`);
157+}
158+
159+// ---------------------------------------------------------------------------
160+// 8. Invoke tools — same interface regardless of plugin
161+// ---------------------------------------------------------------------------
162+
163+const result = await executor.tools.invoke(
164+ "weather.getForecast",
165+ { city: "Tokyo" },
166+ {
167+ onElicitation: async (ctx) => {
168+ console.log("Approval requested:", ctx.request);
169+ return { action: "accept" };
170+ },
171+ },
172+);
173+console.log("\nResult:", result.data);
174+
175+// ---------------------------------------------------------------------------
176+// 9. Secrets — shared across all plugins
177+// ---------------------------------------------------------------------------
178+
179+await executor.secrets.set({
180+ id: "api-key",
181+ name: "Shared API Key",
182+ value: "sk_...",
183+ purpose: "authentication",
184+});
185+
186+const resolved = await executor.secrets.resolve("api-key");
187+console.log("Secret:", resolved);
188+
189+await executor.close();
examples/promise-sdk/tsconfig.json+13−0
@@ -0,0 +1,13 @@
1+{
2+ "compilerOptions": {
3+ "target": "ESNext",
4+ "module": "ESNext",
5+ "moduleResolution": "bundler",
6+ "strict": true,
7+ "esModuleInterop": true,
8+ "skipLibCheck": true,
9+ "outDir": "dist",
10+ "rootDir": "src"
11+ },
12+ "include": ["src"]
13+}
package.json+7−2
@@ -25,7 +25,8 @@ · 24 unmodified lines
2525 "workspaces": [
2626 "packages/*/*",
2727 "packages/react",
28− "apps/*"
28+ "apps/*",
29+ "examples/*"
2930 ],
3031 "catalog": {
3132 "effect": "^3.21.0",
@@ -54,7 +55,8 @@ · 22 unmodified lines
5455 "typescript": "^5.9.3",
5556 "tailwindcss": "^4.2.2",
5657 "quickjs-emscripten": "^0.31.0",
57− "@jitl/quickjs-wasmfile-release-sync": "0.31.0"
58+ "@jitl/quickjs-wasmfile-release-sync": "0.31.0",
59+ "tsup": "^8.5.0"
5860 },
5961 "scripts": {
6062 "dev": "turbo run dev --filter='!@executor/desktop' --filter='!@executor/cloud'",
@@ -62,6 +64,7 @@ · 1 unmodified line
6264 "dev:cli": "bun run apps/cli/src/main.ts",
6365 "test": "turbo run test",
6466 "test:release:bootstrap": "vitest run tests/release-bootstrap-smoke.test.ts",
67+ "build:packages": "bun run --filter='@executor/sdk' build && bun run --filter='@executor/plugin-*' build",
6568 "typecheck": "turbo run typecheck",
6669 "lint": "oxlint -c .oxlintrc.jsonc . --deny-warnings",
6770 "lint:fix": "oxlint -c .oxlintrc.jsonc --fix .",
@@ -74,6 +77,8 @@ · 6 unmodified lines
7477 "release:beta:stop": "changeset pre exit",
7578 "release:publish:dry-run": "bun run --cwd apps/cli release:publish:dry-run",
7679 "release:publish": "bun run --cwd apps/cli release:publish",
80+ "release:publish:packages": "bun run scripts/publish-packages.ts",
81+ "release:publish:packages:dry-run": "bun run scripts/publish-packages.ts --dry-run",
7782 "prepare": "effect-language-service patch"
7883 },
7984 "devDependencies": {
packages/core/config/package.json+1−0
@@ -12,6 +12,7 @@ · 11 unmodified lines
1212 },
1313 "dependencies": {
1414 "@effect/platform": "catalog:",
15+ "@executor/sdk": "workspace:*",
1516 "effect": "catalog:",
1617 "jsonc-parser": "^3.3.1"
1718 },
packages/core/sdk/CHANGELOG.md+1−1
@@ -1,4 +1,4 @@
1−# @executor/sdk changelog
1+# @executor/core changelog
22
33 This file exists for Changesets release workflow compatibility.
44 Canonical user-facing release notes are published on GitHub Releases.
packages/core/sdk/README.md+150−0
@@ -0,0 +1,150 @@
1+# @executor/sdk
2+
3+A TypeScript SDK for building executors that wire together tool sources, secrets, and policies across MCP, OpenAPI, GraphQL, and custom plugins.
4+
5+Everything is `async`/`await`. Plug in any combination of plugins, register your own tools, and invoke them through a unified catalog.
6+
7+## Install
8+
9+```sh
10+bun add @executor/sdk
11+# or
12+npm install @executor/sdk
13+```
14+
15+## Quick start
16+
17+```ts
18+import { createExecutor, definePlugin, ToolRegistration, ToolId, ToolInvocationResult } from "@executor/sdk";
19+
20+// Define a custom plugin with async/await.
21+const weatherPlugin = definePlugin({
22+ key: "weather",
23+ init: async (ctx) => {
24+ await ctx.tools.registerInvoker("weather", {
25+ invoke: async (_toolId, args) => {
26+ const { city } = args as { city: string };
27+ return new ToolInvocationResult({
28+ data: { city, temperature: 72, condition: "sunny" },
29+ error: null,
30+ });
31+ },
32+ });
33+
34+ await ctx.tools.register([
35+ new ToolRegistration({
36+ id: ToolId.make("weather.getForecast"),
37+ pluginKey: "weather",
38+ sourceId: "weather",
39+ name: "getForecast",
40+ description: "Get weather forecast for a city",
41+ inputSchema: {
42+ type: "object",
43+ properties: { city: { type: "string" } },
44+ required: ["city"],
45+ },
46+ }),
47+ ]);
48+
49+ return {
50+ extension: {
51+ forecast: async (city: string) => {
52+ const result = await ctx.tools.invoke(
53+ "weather.getForecast",
54+ { city },
55+ { onElicitation: "accept-all" },
56+ );
57+ return result.data as { city: string; temperature: number; condition: string };
58+ },
59+ },
60+ };
61+ },
62+});
63+
64+const executor = await createExecutor({
65+ scope: { name: "my-app" },
66+ plugins: [weatherPlugin] as const,
67+});
68+
69+// The plugin's extension is available under its key.
70+const forecast = await executor.weather.forecast("San Francisco");
71+
72+// Every plugin contributes to a unified tool catalog.
73+const tools = await executor.tools.list();
74+
75+// Invoke any tool with the same call shape.
76+const result = await executor.tools.invoke(
77+ "weather.getForecast",
78+ { city: "Tokyo" },
79+ { onElicitation: "accept-all" },
80+);
81+
82+await executor.close();
83+```
84+
85+## Using plugins
86+
87+Install whichever plugins you need and pass their factory call into `plugins`:
88+
89+```ts
90+import { createExecutor } from "@executor/sdk";
91+import { mcpPlugin } from "@executor/plugin-mcp";
92+import { openApiPlugin } from "@executor/plugin-openapi";
93+import { graphqlPlugin } from "@executor/plugin-graphql";
94+
95+const executor = await createExecutor({
96+ scope: { name: "my-app" },
97+ plugins: [mcpPlugin(), openApiPlugin(), graphqlPlugin()] as const,
98+});
99+
100+await executor.mcp.addSource({ transport: "remote", name: "Context7", endpoint: "https://mcp.context7.com/mcp" });
101+await executor.openapi.addSpec({ spec: "https://petstore3.swagger.io/api/v3/openapi.json", namespace: "petstore" });
102+await executor.graphql.addSource({ endpoint: "https://graphql.anilist.co", namespace: "anilist" });
103+
104+const tools = await executor.tools.list();
105+```
106+
107+Available plugins:
108+
109+- [`@executor/plugin-mcp`](https://www.npmjs.com/package/@executor/plugin-mcp) — Model Context Protocol (stdio + remote)
110+- [`@executor/plugin-openapi`](https://www.npmjs.com/package/@executor/plugin-openapi) — OpenAPI specs as tools
111+- [`@executor/plugin-graphql`](https://www.npmjs.com/package/@executor/plugin-graphql) — GraphQL endpoints as tools
112+- [`@executor/plugin-google-discovery`](https://www.npmjs.com/package/@executor/plugin-google-discovery) — Google Discovery APIs
113+- [`@executor/plugin-file-secrets`](https://www.npmjs.com/package/@executor/plugin-file-secrets) — file-backed secret store
114+- [`@executor/plugin-keychain`](https://www.npmjs.com/package/@executor/plugin-keychain) — OS keychain secret store
115+- [`@executor/plugin-onepassword`](https://www.npmjs.com/package/@executor/plugin-onepassword) — 1Password secret source
116+
117+## Secrets
118+
119+Secrets are scoped per executor and shared across every plugin that resolves them:
120+
121+```ts
122+await executor.secrets.set({
123+ id: "github-token",
124+ name: "GitHub Token",
125+ value: "ghp_...",
126+ purpose: "authentication",
127+});
128+
129+const value = await executor.secrets.resolve("github-token");
130+```
131+
132+Plugins accept `{ secretId, prefix }` wherever a header value is expected, so you never write tokens into source configs.
133+
134+## Using with Effect
135+
136+The SDK is built on [Effect](https://effect.website/) under the hood. If you want the raw Effect-based primitives instead of the promise wrapper, import from the `/core` subpath:
137+
138+```ts
139+import { createExecutor } from "@executor/sdk";
140+```
141+
142+`/core` exposes `createExecutor` returning an `Effect`, the `ToolRegistry` / `SourceRegistry` / `SecretStore` / `PolicyEngine` Context tags, the in-memory store factories, and every branded ID + error class. Every `@executor/plugin-*` ships a matching `/core` subpath.
143+
144+## Status
145+
146+Pre-`1.0`. APIs may still change between beta releases. See the [executor monorepo](https://github.com/RhysSullivan/executor) for the current development branch and roadmap.
147+
148+## License
149+
150+MIT
packages/core/sdk/package.json+35−3
@@ -1,12 +1,43 @@
11 {
22 "name": "@executor/sdk",
3− "version": "1.4.2",
4− "private": true,
3+ "version": "0.0.1-beta.5",
54 "type": "module",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/core/sdk"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/core/sdk",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
7− ".": "./src/index.ts"
16+ ".": "./src/index.ts",
17+ "./promise": "./src/promise.ts"
18+ },
19+ "publishConfig": {
20+ "access": "public",
21+ "exports": {
22+ ".": {
23+ "import": {
24+ "types": "./dist/promise.d.ts",
25+ "default": "./dist/index.js"
26+ }
27+ },
28+ "./core": {
29+ "import": {
30+ "types": "./dist/index.d.ts",
31+ "default": "./dist/core.js"
32+ }
33+ }
34+ }
835 },
36+ "files": [
37+ "dist"
38+ ],
939 "scripts": {
40+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1041 "typecheck": "tsc --noEmit",
1142 "test": "vitest run"
1243 },
@@ -16,6 +47,7 @@ · 3 unmodified lines
1647 "devDependencies": {
1748 "@effect/vitest": "catalog:",
1849 "@types/node": "catalog:",
50+ "tsup": "catalog:",
1951 "vitest": "catalog:",
2052 "typescript": "catalog:"
2153 }
packages/core/sdk/src/promise-executor.ts+583−0
@@ -0,0 +1,583 @@
1+import { Context, Effect } from "effect";
2+
3+import {
4+ createExecutor as createEffectExecutor,
5+ ElicitationResponse as ElicitationResponseClass,
6+ makeInMemoryToolRegistry,
7+ makeInMemorySecretStore,
8+ makeInMemoryPolicyEngine,
9+ makeInMemorySourceRegistry,
10+ ScopeId,
11+ type ToolRegistry as CoreToolRegistry,
12+ type SourceRegistry as CoreSourceRegistry,
13+ type SecretStore as CoreSecretStore,
14+ type PolicyEngine as CorePolicyEngine,
15+ type ExecutorConfig as EffectExecutorConfig,
16+ type ExecutorPlugin,
17+ type PluginContext as EffectPluginContext,
18+ type ElicitationContext,
19+ type InvokeOptions as EffectInvokeOptions,
20+ type ToolInvocationResult,
21+ type ToolMetadata,
22+ type ToolAnnotations,
23+ type ToolSchema,
24+ type ToolInvoker as EffectToolInvoker,
25+ type RuntimeToolHandler as EffectRuntimeToolHandler,
26+ type Source,
27+ type SourceDetectionResult,
28+ type SourceManager as EffectSourceManager,
29+ type Policy,
30+ type SecretRef,
31+ type SecretProvider as EffectSecretProvider,
32+ type SetSecretInput,
33+ type Scope,
34+ type ToolId,
35+ type SecretId,
36+ type ScopeId as ScopeIdType,
37+ type PolicyId,
38+ type ToolNotFoundError,
39+ type ToolInvocationError,
40+ type SecretNotFoundError,
41+ type SecretResolutionError,
42+ type PolicyDeniedError,
43+ type ElicitationDeclinedError,
44+} from "./index";
45+
46+// ---------------------------------------------------------------------------
47+// Helpers
48+// ---------------------------------------------------------------------------
49+
50+const run = <A, E>(effect: Effect.Effect<A, E>): Promise<A> =>
51+ Effect.runPromise(effect as Effect.Effect<A, never>);
52+
53+const fromPromise = <A>(fn: () => Promise<A>): Effect.Effect<A, Error> =>
54+ Effect.tryPromise({ try: fn, catch: (e) => (e instanceof Error ? e : new Error(String(e))) });
55+
56+/**
57+ * Wrap a promise-returning function as an Effect whose error channel is
58+ * `never`. Unexpected rejections become unhandled defects. Used by the store
59+ * adapters where the Effect-layer service interface forbids a typed error
60+ * channel.
61+ */
62+const fromPromiseDying = <A>(fn: () => Promise<A>): Effect.Effect<A, never> =>
63+ Effect.orDie(fromPromise(fn));
64+
65+// ---------------------------------------------------------------------------
66+// Type derivation — derive Promise-based SDK types from core Effect types
67+// ---------------------------------------------------------------------------
68+
69+/** Replace branded IDs with plain strings in parameter types */
70+type UnbrandParam<T> =
71+ T extends ToolId ? string :
72+ T extends SecretId ? string :
73+ T extends ScopeIdType ? string :
74+ T extends PolicyId ? string :
75+ T extends readonly (infer U)[] ? readonly UnbrandParam<U>[] :
76+ T;
77+
78+/** Convert an Effect service interface to Promise-based, unbranding ID params */
79+type PromisifyService<T> = {
80+ readonly [K in keyof T]: NonNullable<T[K]> extends (...args: infer A) => Effect.Effect<infer R, infer _E>
81+ ? (...args: { [I in keyof A]: UnbrandParam<A[I]> }) => Promise<R>
82+ : T[K];
83+};
84+
85+type CoreToolRegistryService = Context.Tag.Service<typeof CoreToolRegistry>;
86+type CoreSourceRegistryService = Context.Tag.Service<typeof CoreSourceRegistry>;
87+type CoreSecretStoreService = Context.Tag.Service<typeof CoreSecretStore>;
88+type CorePolicyEngineService = Context.Tag.Service<typeof CorePolicyEngine>;
89+
90+// ---------------------------------------------------------------------------
91+// Elicitation
92+// ---------------------------------------------------------------------------
93+
94+export interface ElicitationResponse {
95+ readonly action: "accept" | "decline" | "cancel";
96+ readonly content?: Record<string, unknown>;
97+}
98+
99+export type ElicitationHandler = (
100+ ctx: ElicitationContext,
101+) => Promise<ElicitationResponse>;
102+
103+export interface InvokeOptions {
104+ readonly onElicitation: ElicitationHandler | "accept-all";
105+}
106+
107+const toEffectElicitationHandler = (handler: ElicitationHandler) =>
108+ (ctx: ElicitationContext) =>
109+ Effect.tryPromise({
110+ try: () => handler(ctx),
111+ catch: (e) => e as Error,
112+ }).pipe(
113+ Effect.map(
114+ (r) =>
115+ new ElicitationResponseClass({
116+ action: r.action,
117+ content: r.content,
118+ }),
119+ ),
120+ Effect.catchAll((e) => Effect.die(e)),
121+ );
122+
123+const toEffectInvokeOptions = (options: InvokeOptions): EffectInvokeOptions => ({
124+ onElicitation:
125+ options.onElicitation === "accept-all"
126+ ? ("accept-all" as const)
127+ : toEffectElicitationHandler(options.onElicitation),
128+});
129+
130+// ---------------------------------------------------------------------------
131+// Plugin callback types
132+// ---------------------------------------------------------------------------
133+
134+export interface ToolInvoker {
135+ readonly invoke: (toolId: string, args: unknown, options: InvokeOptions) => Promise<ToolInvocationResult>;
136+ readonly resolveAnnotations?: (toolId: string) => Promise<ToolAnnotations | undefined>;
137+}
138+
139+export interface RuntimeToolHandler {
140+ readonly invoke: (args: unknown, options: InvokeOptions) => Promise<ToolInvocationResult>;
141+ readonly resolveAnnotations?: () => Promise<ToolAnnotations | undefined>;
142+}
143+
144+export type SourceManager = PromisifyService<EffectSourceManager>;
145+
146+export type SecretProvider = PromisifyService<EffectSecretProvider>;
147+
148+// --- Adapters ---
149+
150+const effectToPromiseInvokeOptions = (options?: EffectInvokeOptions): InvokeOptions => {
151+ if (!options || options.onElicitation === "accept-all") return { onElicitation: "accept-all" };
152+ const handler = options.onElicitation;
153+ return {
154+ onElicitation: async (ctx) => {
155+ const r = await run(handler(ctx));
156+ return { action: r.action, content: r.content ?? undefined };
157+ },
158+ };
159+};
160+
161+const toEffectInvoker = (invoker: ToolInvoker): EffectToolInvoker => ({
162+ invoke: (toolId, args, options) =>
163+ fromPromise(() => invoker.invoke(toolId, args, effectToPromiseInvokeOptions(options))) as Effect.Effect<ToolInvocationResult, any>,
164+ resolveAnnotations: invoker.resolveAnnotations
165+ ? (toolId) => fromPromise(() => invoker.resolveAnnotations!(toolId)) as Effect.Effect<ToolAnnotations | undefined>
166+ : undefined,
167+});
168+
169+const toEffectRuntimeHandler = (handler: RuntimeToolHandler): EffectRuntimeToolHandler => ({
170+ invoke: (args, options) =>
171+ fromPromise(() => handler.invoke(args, effectToPromiseInvokeOptions(options))) as Effect.Effect<ToolInvocationResult, any>,
172+ resolveAnnotations: handler.resolveAnnotations
173+ ? () => fromPromise(() => handler.resolveAnnotations!()) as Effect.Effect<ToolAnnotations | undefined>
174+ : undefined,
175+});
176+
177+const toEffectSourceManager = (manager: SourceManager): EffectSourceManager => ({
178+ kind: manager.kind,
179+ list: () => fromPromise(() => manager.list()) as Effect.Effect<readonly Source[]>,
180+ remove: (sourceId) => fromPromise(() => manager.remove(sourceId)) as Effect.Effect<void>,
181+ refresh: manager.refresh ? (sourceId) => fromPromise(() => manager.refresh!(sourceId)) as Effect.Effect<void> : undefined,
182+ detect: manager.detect ? (url) => fromPromise(() => manager.detect!(url)) as Effect.Effect<SourceDetectionResult | null> : undefined,
183+});
184+
185+const toEffectSecretProvider = (provider: SecretProvider): EffectSecretProvider => ({
186+ key: provider.key,
187+ writable: provider.writable,
188+ get: (key) => fromPromise(() => provider.get(key)) as Effect.Effect<string | null>,
189+ set: provider.set ? (key, value) => fromPromise(() => provider.set!(key, value)) as Effect.Effect<void> : undefined,
190+ delete: provider.delete ? (key) => fromPromise(() => provider.delete!(key)) as Effect.Effect<boolean> : undefined,
191+ list: provider.list ? () => fromPromise(() => provider.list!()) as Effect.Effect<readonly { id: string; name: string }[]> : undefined,
192+});
193+
194+// --- Reverse adapters (Effect -> Promise) for callbacks handed to user stores ---
195+//
196+// When the Effect core hands us an Effect-shaped ToolInvoker / ToolHandler /
197+// SourceManager / SecretProvider (e.g. from a plugin), we need to convert it
198+// into the promise-shaped equivalent before passing it to a user-supplied
199+// promise-based store implementation.
200+
201+const toPromiseInvoker = (invoker: EffectToolInvoker): ToolInvoker => ({
202+ invoke: (toolId, args, options) =>
203+ run(invoker.invoke(toolId as ToolId, args, toEffectInvokeOptions(options))) as Promise<ToolInvocationResult>,
204+ resolveAnnotations: invoker.resolveAnnotations
205+ ? (toolId) => run(invoker.resolveAnnotations!(toolId as ToolId))
206+ : undefined,
207+});
208+
209+const toPromiseRuntimeHandler = (handler: EffectRuntimeToolHandler): RuntimeToolHandler => ({
210+ invoke: (args, options) =>
211+ run(handler.invoke(args, toEffectInvokeOptions(options))) as Promise<ToolInvocationResult>,
212+ resolveAnnotations: handler.resolveAnnotations
213+ ? () => run(handler.resolveAnnotations!())
214+ : undefined,
215+});
216+
217+const toPromiseSourceManager = (manager: EffectSourceManager): SourceManager => ({
218+ kind: manager.kind,
219+ list: () => run(manager.list()),
220+ remove: (sourceId) => run(manager.remove(sourceId)),
221+ refresh: manager.refresh ? (sourceId) => run(manager.refresh!(sourceId)) : undefined,
222+ detect: manager.detect ? (url) => run(manager.detect!(url)) : undefined,
223+});
224+
225+const toPromiseSecretProvider = (provider: EffectSecretProvider): SecretProvider => ({
226+ key: provider.key,
227+ writable: provider.writable,
228+ get: (key) => run(provider.get(key)),
229+ set: provider.set ? (key, value) => run(provider.set!(key, value)) : undefined,
230+ delete: provider.delete ? (key) => run(provider.delete!(key)) : undefined,
231+ list: provider.list ? () => run(provider.list!()) : undefined,
232+});
233+
234+// --- Main store adapters (Promise -> Effect) ---
235+//
236+// Users implementing a pluggable store (e.g. a Postgres-backed tool registry)
237+// write against the promise-shaped ToolRegistry / SourceRegistry / SecretStore
238+// / PolicyEngine interfaces declared below. These adapters wrap the user impl
239+// so the Effect core layer sees a native Effect service.
240+
241+const toEffectToolRegistry = (r: ToolRegistry): CoreToolRegistryService => ({
242+ list: (filter) => fromPromiseDying(() => r.list(filter)),
243+ schema: (toolId) =>
244+ fromPromise(() => r.schema(toolId)) as Effect.Effect<ToolSchema, ToolNotFoundError>,
245+ definitions: () => fromPromiseDying(() => r.definitions()),
246+ registerDefinitions: (defs) => fromPromiseDying(() => r.registerDefinitions(defs)),
247+ registerRuntimeDefinitions: (defs) =>
248+ fromPromiseDying(() => r.registerRuntimeDefinitions(defs)),
249+ unregisterRuntimeDefinitions: (names) =>
250+ fromPromiseDying(() => r.unregisterRuntimeDefinitions(names)),
251+ registerInvoker: (pluginKey, effectInvoker) =>
252+ fromPromiseDying(() => r.registerInvoker(pluginKey, toPromiseInvoker(effectInvoker))),
253+ resolveAnnotations: (toolId) =>
254+ fromPromiseDying(() => r.resolveAnnotations(toolId)),
255+ invoke: (toolId, args, options) =>
256+ fromPromise(() =>
257+ r.invoke(toolId, args, effectToPromiseInvokeOptions(options)),
258+ ) as Effect.Effect<
259+ ToolInvocationResult,
260+ ToolNotFoundError | ToolInvocationError | ElicitationDeclinedError
261+ >,
262+ register: (tools) => fromPromiseDying(() => r.register(tools)),
263+ registerRuntime: (tools) => fromPromiseDying(() => r.registerRuntime(tools)),
264+ registerRuntimeHandler: (toolId, effectHandler) =>
265+ fromPromiseDying(() =>
266+ r.registerRuntimeHandler(toolId, toPromiseRuntimeHandler(effectHandler)),
267+ ),
268+ unregisterRuntime: (toolIds) => fromPromiseDying(() => r.unregisterRuntime(toolIds)),
269+ unregister: (toolIds) => fromPromiseDying(() => r.unregister(toolIds)),
270+ unregisterBySource: (sourceId) => fromPromiseDying(() => r.unregisterBySource(sourceId)),
271+});
272+
273+const toEffectSourceRegistry = (r: SourceRegistry): CoreSourceRegistryService => ({
274+ addManager: (manager) =>
275+ fromPromiseDying(() => r.addManager(toPromiseSourceManager(manager))),
276+ registerRuntime: (source) => fromPromiseDying(() => r.registerRuntime(source)),
277+ unregisterRuntime: (sourceId) => fromPromiseDying(() => r.unregisterRuntime(sourceId)),
278+ list: () => fromPromiseDying(() => r.list()),
279+ remove: (sourceId) => fromPromiseDying(() => r.remove(sourceId)),
280+ refresh: (sourceId) => fromPromiseDying(() => r.refresh(sourceId)),
281+ detect: (url) => fromPromiseDying(() => r.detect(url)),
282+});
283+
284+const toEffectSecretStore = (s: SecretStore): CoreSecretStoreService => ({
285+ list: (scopeId) => fromPromiseDying(() => s.list(scopeId)),
286+ get: (secretId) =>
287+ fromPromise(() => s.get(secretId)) as Effect.Effect<SecretRef, SecretNotFoundError>,
288+ resolve: (secretId, scopeId) =>
289+ fromPromise(() => s.resolve(secretId, scopeId)) as Effect.Effect<
290+ string,
291+ SecretNotFoundError | SecretResolutionError
292+ >,
293+ status: (secretId, scopeId) =>
294+ fromPromiseDying(() => s.status(secretId, scopeId)),
295+ set: (input) =>
296+ fromPromise(() => s.set(input)) as Effect.Effect<SecretRef, SecretResolutionError>,
297+ remove: (secretId) =>
298+ fromPromise(() => s.remove(secretId)) as Effect.Effect<boolean, SecretNotFoundError>,
299+ addProvider: (provider) =>
300+ fromPromiseDying(() => s.addProvider(toPromiseSecretProvider(provider))),
301+ providers: () => fromPromiseDying(() => s.providers()),
302+});
303+
304+const toEffectPolicyEngine = (p: PolicyEngine): CorePolicyEngineService => ({
305+ list: (scopeId) => fromPromiseDying(() => p.list(scopeId)),
306+ check: (input) =>
307+ fromPromise(() =>
308+ p.check({ scopeId: input.scopeId, toolId: input.toolId }),
309+ ) as Effect.Effect<void, PolicyDeniedError>,
310+ add: (policy) => fromPromiseDying(() => p.add(policy)),
311+ remove: (policyId) => fromPromiseDying(() => p.remove(policyId)),
312+});
313+
314+// ---------------------------------------------------------------------------
315+// Plugin context
316+// ---------------------------------------------------------------------------
317+
318+export interface PluginContext {
319+ readonly scope: Scope;
320+ readonly tools: ToolRegistry;
321+ readonly sources: SourceRegistry;
322+ readonly secrets: SecretStore;
323+ readonly policies: PolicyEngine;
324+}
325+
326+export interface ToolRegistry extends Omit<
327+ PromisifyService<CoreToolRegistryService>,
328+ 'list' | 'invoke' | 'registerInvoker' | 'registerRuntimeHandler'
329+> {
330+ readonly list: (filter?: { sourceId?: string; query?: string }) => Promise<readonly ToolMetadata[]>;
331+ readonly invoke: (toolId: string, args: unknown, options: InvokeOptions) => Promise<ToolInvocationResult>;
332+ readonly registerInvoker: (pluginKey: string, invoker: ToolInvoker) => Promise<void>;
333+ readonly registerRuntimeHandler: (toolId: string, handler: RuntimeToolHandler) => Promise<void>;
334+}
335+
336+export interface SourceRegistry extends Omit<PromisifyService<CoreSourceRegistryService>, 'addManager'> {
337+ readonly addManager: (manager: SourceManager) => Promise<void>;
338+}
339+
340+export interface SecretStore extends Omit<PromisifyService<CoreSecretStoreService>, 'set' | 'addProvider'> {
341+ readonly set: (input: { readonly id: string; readonly scopeId: string; readonly name: string; readonly value: string; readonly provider?: string; readonly purpose?: string }) => Promise<SecretRef>;
342+ readonly addProvider: (provider: SecretProvider) => Promise<void>;
343+}
344+
345+export interface PolicyEngine extends Omit<PromisifyService<CorePolicyEngineService>, 'check'> {
346+ readonly check: (input: { scopeId: string; toolId: string }) => Promise<void>;
347+}
348+
349+const wrapPluginContext = (ctx: EffectPluginContext): PluginContext => ({
350+ scope: ctx.scope,
351+ tools: {
352+ list: (filter?) => run(ctx.tools.list(filter as any)),
353+ schema: (toolId) => run(ctx.tools.schema(toolId as ToolId)),
354+ invoke: (toolId, args, options) => run(ctx.tools.invoke(toolId as ToolId, args, toEffectInvokeOptions(options))),
355+ definitions: () => run(ctx.tools.definitions()),
356+ registerDefinitions: (defs) => run(ctx.tools.registerDefinitions(defs)),
357+ registerRuntimeDefinitions: (defs) => run(ctx.tools.registerRuntimeDefinitions(defs)),
358+ unregisterRuntimeDefinitions: (names) => run(ctx.tools.unregisterRuntimeDefinitions(names)),
359+ registerInvoker: (pluginKey, invoker) => run(ctx.tools.registerInvoker(pluginKey, toEffectInvoker(invoker))),
360+ resolveAnnotations: (toolId) => run(ctx.tools.resolveAnnotations(toolId as ToolId)),
361+ register: (tools) => run(ctx.tools.register(tools)),
362+ registerRuntime: (tools) => run(ctx.tools.registerRuntime(tools)),
363+ registerRuntimeHandler: (toolId, handler) => run(ctx.tools.registerRuntimeHandler(toolId as ToolId, toEffectRuntimeHandler(handler))),
364+ unregisterRuntime: (toolIds) => run(ctx.tools.unregisterRuntime(toolIds as readonly ToolId[])),
365+ unregister: (toolIds) => run(ctx.tools.unregister(toolIds as readonly ToolId[])),
366+ unregisterBySource: (sourceId) => run(ctx.tools.unregisterBySource(sourceId)),
367+ },
368+ sources: {
369+ addManager: (manager) => run(ctx.sources.addManager(toEffectSourceManager(manager))),
370+ registerRuntime: (source) => run(ctx.sources.registerRuntime(source)),
371+ unregisterRuntime: (sourceId) => run(ctx.sources.unregisterRuntime(sourceId)),
372+ list: () => run(ctx.sources.list()),
373+ remove: (sourceId) => run(ctx.sources.remove(sourceId)),
374+ refresh: (sourceId) => run(ctx.sources.refresh(sourceId)),
375+ detect: (url) => run(ctx.sources.detect(url)),
376+ },
377+ secrets: {
378+ list: (scopeId) => run(ctx.secrets.list(scopeId as ScopeIdType)),
379+ get: (secretId) => run(ctx.secrets.get(secretId as SecretId)),
380+ resolve: (secretId, scopeId) => run(ctx.secrets.resolve(secretId as SecretId, scopeId as ScopeIdType)),
381+ status: (secretId, scopeId) => run(ctx.secrets.status(secretId as SecretId, scopeId as ScopeIdType)),
382+ set: (input) => run(ctx.secrets.set(input as SetSecretInput)),
383+ remove: (secretId) => run(ctx.secrets.remove(secretId as SecretId)),
384+ addProvider: (provider) => run(ctx.secrets.addProvider(toEffectSecretProvider(provider))),
385+ providers: () => run(ctx.secrets.providers()),
386+ },
387+ policies: {
388+ list: (scopeId) => run(ctx.policies.list(scopeId as ScopeIdType)),
389+ check: (input) => run(ctx.policies.check(input as any)),
390+ add: (policy) => run(ctx.policies.add(policy)),
391+ remove: (policyId) => run(ctx.policies.remove(policyId as PolicyId)),
392+ },
393+});
394+
395+// ---------------------------------------------------------------------------
396+// Plugin definition
397+// ---------------------------------------------------------------------------
398+
399+export interface Plugin<TKey extends string = string, TExtension extends object = object> {
400+ readonly key: TKey;
401+ /** @internal */
402+ readonly _promise?: true;
403+ readonly init: (ctx: PluginContext) => Promise<PluginHandle<TExtension>>;
404+}
405+
406+export interface PluginHandle<TExtension extends object = object> {
407+ readonly extension: TExtension;
408+ readonly close?: () => Promise<void>;
409+}
410+
411+export const definePlugin = <const TKey extends string, TExtension extends object>(
412+ plugin: Plugin<TKey, TExtension>,
413+): Plugin<TKey, TExtension> => ({ ...plugin, _promise: true as const });
414+
415+const isPromisePlugin = (plugin: { _promise?: boolean }): boolean => plugin._promise === true;
416+
417+const toEffectPlugin = <TKey extends string, TExtension extends object>(
418+ plugin: Plugin<TKey, TExtension>,
419+): ExecutorPlugin<TKey, TExtension> => ({
420+ key: plugin.key,
421+ init: (ctx) =>
422+ fromPromise(async () => {
423+ const handle = await plugin.init(wrapPluginContext(ctx));
424+ return {
425+ extension: handle.extension,
426+ close: handle.close ? () => fromPromise(() => handle.close!()) as Effect.Effect<void> : undefined,
427+ };
428+ }) as Effect.Effect<any, Error>,
429+});
430+
431+// ---------------------------------------------------------------------------
432+// Executor type
433+// ---------------------------------------------------------------------------
434+
435+type Promisified<T> = T extends (...args: infer A) => Effect.Effect<infer R, infer _E>
436+ ? (...args: A) => Promise<R>
437+ : T extends object ? { readonly [K in keyof T]: Promisified<T[K]> } : T;
438+
439+export type AnyPlugin = Plugin<string, object> | ExecutorPlugin<string, object>;
440+
441+export type Executor<TPlugins extends readonly AnyPlugin[] = []> = {
442+ readonly scope: Scope;
443+ readonly tools: Pick<ToolRegistry, 'list' | 'schema' | 'definitions' | 'invoke'>;
444+ readonly sources: Pick<SourceRegistry, 'list' | 'remove' | 'refresh' | 'detect'>;
445+ readonly policies: {
446+ readonly list: () => Promise<readonly Policy[]>;
447+ readonly add: (policy: Omit<Policy, "id" | "createdAt">) => Promise<Policy>;
448+ readonly remove: (policyId: string) => Promise<boolean>;
449+ };
450+ readonly secrets: {
451+ readonly list: () => Promise<readonly SecretRef[]>;
452+ readonly resolve: (secretId: string) => Promise<string>;
453+ readonly status: (secretId: string) => Promise<"resolved" | "missing">;
454+ readonly set: (input: { readonly id: string; readonly name: string; readonly value: string; readonly provider?: string; readonly purpose?: string }) => Promise<SecretRef>;
455+ readonly remove: (secretId: string) => Promise<boolean>;
456+ readonly addProvider: (provider: SecretProvider) => Promise<void>;
457+ readonly providers: () => Promise<readonly string[]>;
458+ };
459+ readonly close: () => Promise<void>;
460+} & PluginExtensions<TPlugins>;
461+
462+type PluginExtensions<TPlugins extends readonly AnyPlugin[]> = {
463+ readonly [P in TPlugins[number] as P["key"]]: P extends Plugin<string, infer TExt>
464+ ? TExt
465+ : P extends ExecutorPlugin<string, infer TExt> ? Promisified<TExt> : never;
466+};
467+
468+function promisifyObject<T extends object>(obj: T): Promisified<T> {
469+ return new Proxy(obj, {
470+ get(target, prop, receiver) {
471+ const value = Reflect.get(target, prop, receiver);
472+ if (typeof value === "function") {
473+ return (...args: unknown[]) => {
474+ const result = value.apply(target, args);
475+ if (Effect.isEffect(result)) return run(result as Effect.Effect<unknown, unknown>);
476+ return result;
477+ };
478+ }
479+ if (value !== null && typeof value === "object" && !Array.isArray(value)) return promisifyObject(value as object);
480+ return value;
481+ },
482+ }) as Promisified<T>;
483+}
484+
485+// ---------------------------------------------------------------------------
486+// Config & createExecutor
487+// ---------------------------------------------------------------------------
488+
489+export interface ExecutorConfig<TPlugins extends readonly AnyPlugin[] = []> {
490+ readonly scope?: { readonly id?: string; readonly name?: string };
491+ readonly plugins?: TPlugins;
492+ /**
493+ * Custom tool registry implementation. Defaults to an in-memory store.
494+ * Implement the promise-shaped `ToolRegistry` interface to persist tool
495+ * metadata to a database, remote service, etc.
496+ */
497+ readonly tools?: ToolRegistry;
498+ /** Custom source registry implementation. Defaults to an in-memory store. */
499+ readonly sources?: SourceRegistry;
500+ /**
501+ * Custom secret store implementation. Defaults to an in-memory store.
502+ * For most use cases, prefer passing a custom `SecretProvider` via
503+ * `executor.secrets.addProvider(...)` — only replace the whole store if you
504+ * need to persist the `SecretRef` metadata itself.
505+ */
506+ readonly secrets?: SecretStore;
507+ /** Custom policy engine implementation. Defaults to an in-memory store. */
508+ readonly policies?: PolicyEngine;
509+}
510+
511+const KNOWN_KEYS = new Set(["scope", "tools", "sources", "policies", "secrets", "close"]);
512+
513+export const createExecutor = async <const TPlugins extends readonly AnyPlugin[] = []>(
514+ config: ExecutorConfig<TPlugins> = {},
515+): Promise<Executor<TPlugins>> => {
516+ const effectPlugins = (config.plugins ?? []).map((p) =>
517+ isPromisePlugin(p as any)
518+ ? toEffectPlugin(p as Plugin<string, object>)
519+ : (p as unknown as ExecutorPlugin<string, object>),
520+ );
521+
522+ const effectConfig: EffectExecutorConfig<ExecutorPlugin<string, object>[]> = {
523+ scope: {
524+ id: ScopeId.make(config.scope?.id ?? "default"),
525+ name: config.scope?.name ?? "default",
526+ createdAt: new Date(),
527+ },
528+ tools: config.tools ? toEffectToolRegistry(config.tools) : makeInMemoryToolRegistry(),
529+ sources: config.sources
530+ ? toEffectSourceRegistry(config.sources)
531+ : makeInMemorySourceRegistry(),
532+ secrets: config.secrets ? toEffectSecretStore(config.secrets) : makeInMemorySecretStore(),
533+ policies: config.policies
534+ ? toEffectPolicyEngine(config.policies)
535+ : makeInMemoryPolicyEngine(),
536+ plugins: effectPlugins,
537+ };
538+
539+ const executor = await run(createEffectExecutor(effectConfig));
540+
541+ const base: Record<string, unknown> = {
542+ scope: executor.scope,
543+ tools: {
544+ list: (filter?: { sourceId?: string; query?: string }) => run(executor.tools.list(filter as any)),
545+ schema: (toolId: string) => run(executor.tools.schema(toolId)),
546+ definitions: () => run(executor.tools.definitions()),
547+ invoke: (toolId: string, args: unknown, options: InvokeOptions) =>
548+ run(executor.tools.invoke(toolId, args, toEffectInvokeOptions(options))),
549+ },
550+ sources: {
551+ list: () => run(executor.sources.list()),
552+ remove: (sourceId: string) => run(executor.sources.remove(sourceId)),
553+ refresh: (sourceId: string) => run(executor.sources.refresh(sourceId)),
554+ detect: (url: string) => run(executor.sources.detect(url)),
555+ },
556+ policies: {
557+ list: () => run(executor.policies.list()),
558+ add: (policy: Omit<Policy, "id" | "createdAt">) => run(executor.policies.add(policy)),
559+ remove: (policyId: string) => run(executor.policies.remove(policyId)),
560+ },
561+ secrets: {
562+ list: () => run(executor.secrets.list()),
563+ resolve: (secretId: string) => run(executor.secrets.resolve(secretId as SecretId)),
564+ status: (secretId: string) => run(executor.secrets.status(secretId as SecretId)),
565+ set: (input: { readonly id: string; readonly name: string; readonly value: string; readonly provider?: string; readonly purpose?: string }) =>
566+ run(executor.secrets.set(input as any)),
567+ remove: (secretId: string) => run(executor.secrets.remove(secretId as SecretId)),
568+ addProvider: (provider: SecretProvider) => run(executor.secrets.addProvider(toEffectSecretProvider(provider))),
569+ providers: () => run(executor.secrets.providers()),
570+ },
571+ close: () => run(executor.close()),
572+ };
573+
574+ for (const key of Object.keys(executor)) {
575+ if (!KNOWN_KEYS.has(key)) {
576+ const ext = (executor as Record<string, unknown>)[key];
577+ if (ext !== null && typeof ext === "object") base[key] = promisifyObject(ext as object);
578+ else base[key] = ext;
579+ }
580+ }
581+
582+ return base as Executor<TPlugins>;
583+};
packages/core/sdk/src/promise.ts+68−0
@@ -0,0 +1,68 @@
1+// Executor
2+export {
3+ createExecutor,
4+ type Executor,
5+ type ExecutorConfig,
6+ type AnyPlugin,
7+} from "./promise-executor";
8+
9+// Plugin
10+export {
11+ definePlugin,
12+ type Plugin,
13+ type PluginContext,
14+ type PluginHandle,
15+} from "./promise-executor";
16+
17+// Plugin context services
18+export type {
19+ ToolRegistry,
20+ SourceRegistry,
21+ SecretStore,
22+ PolicyEngine,
23+} from "./promise-executor";
24+
25+// Plugin callback types
26+export type {
27+ ToolInvoker,
28+ RuntimeToolHandler,
29+ SourceManager,
30+ SecretProvider,
31+} from "./promise-executor";
32+
33+// Invocation
34+export type {
35+ InvokeOptions,
36+ ElicitationHandler,
37+ ElicitationResponse,
38+} from "./promise-executor";
39+
40+// Re-export data classes from the Effect core that users need
41+export {
42+ ToolRegistration,
43+ ToolInvocationResult,
44+ ToolMetadata,
45+ ToolSchema,
46+ ToolAnnotations,
47+ ToolListFilter,
48+ ToolId,
49+ SecretId,
50+ ScopeId,
51+ PolicyId,
52+ Source,
53+ SourceDetectionResult,
54+ SecretRef,
55+ Policy,
56+ Scope,
57+ FormElicitation,
58+ UrlElicitation,
59+ type ElicitationContext,
60+ type ElicitationRequest,
61+ // Errors
62+ ToolNotFoundError,
63+ ToolInvocationError,
64+ SecretNotFoundError,
65+ SecretResolutionError,
66+ PolicyDeniedError,
67+ ElicitationDeclinedError,
68+} from "./index";
packages/core/sdk/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^effect/, /^@effect\//],
13+});
packages/core/storage-postgres/package.json+2−0
@@ -8,6 +8,8 @@ · 7 unmodified lines
88 "./schema": "./src/schema.ts"
99 },
1010 "dependencies": {
11+ "@effect/sql": "catalog:",
12+ "@effect/sql-pg": "^0.28.0",
1113 "@executor/sdk": "workspace:*",
1214 "drizzle-orm": "catalog:",
1315 "effect": "catalog:",
packages/hosts/mcp/package.json+1−1
@@ -13,8 +13,8 @@ · 12 unmodified lines
1313 },
1414 "dependencies": {
1515 "@cfworker/json-schema": "^4.1.1",
16− "@executor/execution": "workspace:*",
1716 "@executor/sdk": "workspace:*",
17+ "@executor/execution": "workspace:*",
1818 "@modelcontextprotocol/sdk": "^1.12.1",
1919 "effect": "catalog:",
2020 "zod": "^4.3.0"
packages/plugins/file-secrets/README.md+59−0
@@ -0,0 +1,59 @@
1+# @executor/plugin-file-secrets
2+
3+File-backed secret store for the executor. Persists secrets to a single JSON file at an XDG-compliant path so they survive between process restarts — useful for local development, CLIs, and scripts where a system keychain isn't available.
4+
5+## Install
6+
7+```sh
8+bun add @executor/sdk @executor/plugin-file-secrets
9+# or
10+npm install @executor/sdk @executor/plugin-file-secrets
11+```
12+
13+## Usage
14+
15+```ts
16+import { createExecutor } from "@executor/sdk";
17+import { fileSecretsPlugin } from "@executor/plugin-file-secrets";
18+
19+const executor = await createExecutor({
20+ scope: { name: "my-app" },
21+ plugins: [fileSecretsPlugin()] as const,
22+});
23+
24+// Write a secret — persisted to the backing file
25+await executor.secrets.set({
26+ id: "api-key",
27+ name: "My API Key",
28+ value: "secret123",
29+ purpose: "authentication",
30+});
31+
32+// Read it back
33+const value = await executor.secrets.resolve("api-key");
34+
35+// Check where it's stored
36+console.log("Secret file:", executor.fileSecrets.filePath);
37+```
38+
39+Secrets written through `executor.secrets.set(...)` become available to every other plugin that resolves them, so you can (for example) store a GitHub token here and have `@executor/plugin-openapi` or `@executor/plugin-graphql` pick it up via `{ secretId, prefix }` headers.
40+
41+## Using with Effect
42+
43+If you're building on `@executor/sdk` (the raw Effect entry), import this plugin from its `/core` subpath instead:
44+
45+```ts
46+import { fileSecretsPlugin } from "@executor/plugin-file-secrets";
47+```
48+
49+## Security note
50+
51+Secrets are stored unencrypted in a plain JSON file. Use [`@executor/plugin-keychain`](https://www.npmjs.com/package/@executor/plugin-keychain) for OS-keychain-backed storage, or [`@executor/plugin-onepassword`](https://www.npmjs.com/package/@executor/plugin-onepassword) for 1Password-backed storage when you need encryption at rest.
52+
53+## Status
54+
55+Pre-`1.0`. APIs may still change between beta releases. Part of the [executor monorepo](https://github.com/RhysSullivan/executor).
56+
57+## License
58+
59+MIT
packages/plugins/file-secrets/package.json+37−5
@@ -1,12 +1,23 @@
11 {
22 "name": "@executor/plugin-file-secrets",
3− "private": true,
43 "type": "module",
5− "version": "1.4.2",
4+ "version": "0.0.1-beta.5",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/plugins/file-secrets"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/file-secrets",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
7− ".": "./src/index.ts"
16+ ".": "./src/index.ts",
17+ "./promise": "./src/promise.ts"
818 },
919 "scripts": {
20+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1021 "typecheck": "bunx tsc --noEmit -p tsconfig.json",
1122 "test": "vitest run",
1223 "test:watch": "vitest"
@@ -18,6 +29,27 @@ · 5 unmodified lines
1829 "devDependencies": {
1930 "@types/node": "catalog:",
2031 "bun-types": "catalog:",
21− "vitest": "catalog:"
22− }
32+ "vitest": "catalog:",
33+ "tsup": "catalog:"
34+ },
35+ "publishConfig": {
36+ "access": "public",
37+ "exports": {
38+ ".": {
39+ "import": {
40+ "types": "./dist/promise.d.ts",
41+ "default": "./dist/index.js"
42+ }
43+ },
44+ "./core": {
45+ "import": {
46+ "types": "./dist/index.d.ts",
47+ "default": "./dist/core.js"
48+ }
49+ }
50+ }
51+ },
52+ "files": [
53+ "dist"
54+ ]
2355 }
packages/plugins/file-secrets/src/promise.ts+7−0
@@ -0,0 +1,7 @@
1+import { fileSecretsPlugin as fileSecretsPluginEffect } from "./index";
2+
3+export type { FileSecretsPluginConfig } from "./index";
4+
5+export const fileSecretsPlugin = (
6+ config?: { readonly directory?: string },
7+) => fileSecretsPluginEffect(config);
packages/plugins/file-secrets/tsconfig.json+29−1
@@ -1 +1,29 @@
1−{"compilerOptions":{"target":"ES2022","module":"ESNext","moduleResolution":"Bundler","strict":true,"skipLibCheck":true,"noEmit":true,"lib":["ES2022"],"types":["bun-types","node"],"noUnusedLocals":true,"noImplicitOverride":true,"plugins":[{"name":"@effect/language-service","diagnosticSeverity":{"preferSchemaOverJson":"off"}}]},"include":["src/**/*.ts"]}
1+{
2+ "compilerOptions": {
3+ "target": "ES2022",
4+ "module": "ESNext",
5+ "moduleResolution": "Bundler",
6+ "strict": true,
7+ "skipLibCheck": true,
8+ "lib": [
9+ "ES2022"
10+ ],
11+ "types": [
12+ "bun-types",
13+ "node"
14+ ],
15+ "noUnusedLocals": true,
16+ "noImplicitOverride": true,
17+ "plugins": [
18+ {
19+ "name": "@effect/language-service",
20+ "diagnosticSeverity": {
21+ "preferSchemaOverJson": "off"
22+ }
23+ }
24+ ]
25+ },
26+ "include": [
27+ "src/**/*.ts"
28+ ]
29+}
packages/plugins/file-secrets/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^@executor\//, /^effect/, /^@effect\//],
13+});
packages/plugins/google-discovery/README.md+60−0
@@ -0,0 +1,60 @@
1+# @executor/plugin-google-discovery
2+
3+Turn any [Google Discovery API](https://developers.google.com/discovery) (Calendar, Gmail, Drive, Sheets, etc.) into a set of executor tools. Handles the discovery document, OAuth flow, and per-request token binding.
4+
5+## Install
6+
7+```sh
8+bun add @executor/sdk @executor/plugin-google-discovery
9+# or
10+npm install @executor/sdk @executor/plugin-google-discovery
11+```
12+
13+## Usage
14+
15+```ts
16+import { createExecutor } from "@executor/sdk";
17+import { googleDiscoveryPlugin } from "@executor/plugin-google-discovery";
18+
19+const executor = await createExecutor({
20+ scope: { name: "my-app" },
21+ plugins: [googleDiscoveryPlugin()] as const,
22+});
23+
24+await executor.googleDiscovery.addSource({
25+ name: "Google Calendar",
26+ discoveryUrl: "https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest",
27+ namespace: "calendar",
28+ auth: {
29+ kind: "oauth2",
30+ clientId: "...",
31+ redirectUrl: "...",
32+ },
33+});
34+
35+const tools = await executor.tools.list();
36+```
37+
38+## Presets
39+
40+A curated set of common Google APIs is available from the `/presets` subpath:
41+
42+```ts
43+import { googleDiscoveryPresets } from "@executor/plugin-google-discovery/presets";
44+```
45+
46+## Using with Effect
47+
48+If you're building on `@executor/sdk` (the raw Effect entry), import this plugin from its `/core` subpath instead:
49+
50+```ts
51+import { googleDiscoveryPlugin } from "@executor/plugin-google-discovery";
52+```
53+
54+## Status
55+
56+Pre-`1.0`. APIs may still change between beta releases. Part of the [executor monorepo](https://github.com/RhysSullivan/executor).
57+
58+## License
59+
60+MIT
packages/plugins/google-discovery/package.json+36−4
@@ -1,15 +1,26 @@
11 {
22 "name": "@executor/plugin-google-discovery",
3− "private": true,
43 "type": "module",
5− "version": "1.4.2",
4+ "version": "0.0.1-beta.5",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/plugins/google-discovery"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/google-discovery",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
716 ".": "./src/sdk/index.ts",
17+ "./promise": "./src/promise.ts",
818 "./api": "./src/api/index.ts",
919 "./react": "./src/react/index.ts",
1020 "./presets": "./src/sdk/presets.ts"
1121 },
1222 "scripts": {
23+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1324 "typecheck": "bunx tsc --noEmit -p tsconfig.json",
1425 "test": "vitest run",
1526 "test:watch": "vitest"
@@ -47,6 +58,27 @@ · 31 unmodified lines
4758 "@types/react": "catalog:",
4859 "bun-types": "catalog:",
4960 "react": "catalog:",
50− "vitest": "catalog:"
51− }
61+ "vitest": "catalog:",
62+ "tsup": "catalog:"
63+ },
64+ "publishConfig": {
65+ "access": "public",
66+ "exports": {
67+ ".": {
68+ "import": {
69+ "types": "./dist/promise.d.ts",
70+ "default": "./dist/index.js"
71+ }
72+ },
73+ "./core": {
74+ "import": {
75+ "types": "./dist/sdk/index.d.ts",
76+ "default": "./dist/core.js"
77+ }
78+ }
79+ }
80+ },
81+ "files": [
82+ "dist"
83+ ]
5284 }
packages/plugins/google-discovery/src/promise.ts+20−0
@@ -0,0 +1,20 @@
1+import { googleDiscoveryPlugin as googleDiscoveryPluginEffect } from "./sdk/plugin";
2+
3+export type {
4+ GoogleDiscoveryAddSourceInput,
5+ GoogleDiscoveryProbeResult,
6+ GoogleDiscoveryOAuthStartInput,
7+ GoogleDiscoveryOAuthStartResponse,
8+ GoogleDiscoveryOAuthCompleteInput,
9+ GoogleDiscoveryOAuthAuthResult,
10+} from "./sdk/plugin";
11+
12+export type { GoogleDiscoveryBindingStore } from "./sdk/binding-store";
13+
14+export interface GoogleDiscoveryPluginOptions {
15+ readonly bindingStore?: import("./sdk/binding-store").GoogleDiscoveryBindingStore;
16+}
17+
18+export const googleDiscoveryPlugin = (
19+ options?: GoogleDiscoveryPluginOptions,
20+) => googleDiscoveryPluginEffect(options);
packages/plugins/google-discovery/tsconfig.json+9−5
@@ -5,17 +5,21 @@ · 4 unmodified lines
55 "moduleResolution": "Bundler",
66 "strict": true,
77 "skipLibCheck": true,
8− "noEmit": true,
9− "lib": ["ES2022", "DOM"],
10− "types": ["bun-types", "node"],
8+ "lib": [
9+ "ES2022",
10+ "DOM"
11+ ],
12+ "types": [
13+ "bun-types",
14+ "node"
15+ ],
1116 "noUnusedLocals": true,
1217 "noImplicitOverride": true,
1318 "jsx": "react-jsx",
1419 "plugins": [
1520 {
1621 "name": "@effect/language-service",
17− "diagnosticSeverity": {
18− }
22+ "diagnosticSeverity": {}
1923 }
2024 ]
2125 },
packages/plugins/google-discovery/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/sdk/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^@executor\//, /^effect/, /^@effect\//],
13+});
packages/plugins/graphql/README.md+71−0
@@ -0,0 +1,71 @@
1+# @executor/plugin-graphql
2+
3+Introspect a GraphQL endpoint and expose its queries and mutations as invokable tools on an executor.
4+
5+## Install
6+
7+```sh
8+bun add @executor/sdk @executor/plugin-graphql
9+# or
10+npm install @executor/sdk @executor/plugin-graphql
11+```
12+
13+## Usage
14+
15+```ts
16+import { createExecutor } from "@executor/sdk";
17+import { graphqlPlugin } from "@executor/plugin-graphql";
18+
19+const executor = await createExecutor({
20+ scope: { name: "my-app" },
21+ plugins: [graphqlPlugin()] as const,
22+});
23+
24+// Public endpoint — no auth
25+await executor.graphql.addSource({
26+ endpoint: "https://graphql.anilist.co",
27+ namespace: "anilist",
28+});
29+
30+const tools = await executor.tools.list();
31+const result = await executor.tools.invoke(
32+ "anilist.Media",
33+ { search: "Frieren" },
34+ { onElicitation: "accept-all" },
35+);
36+```
37+
38+## Secret-backed auth
39+
40+```ts
41+await executor.secrets.set({
42+ id: "github-token",
43+ name: "GitHub Token",
44+ value: "ghp_...",
45+ purpose: "authentication",
46+});
47+
48+await executor.graphql.addSource({
49+ endpoint: "https://api.github.com/graphql",
50+ namespace: "github",
51+ headers: {
52+ Authorization: { secretId: "github-token", prefix: "Bearer " },
53+ },
54+});
55+```
56+
57+## Using with Effect
58+
59+If you're building on `@executor/sdk` (the raw Effect entry), import this plugin from its `/core` subpath instead:
60+
61+```ts
62+import { graphqlPlugin } from "@executor/plugin-graphql";
63+```
64+
65+## Status
66+
67+Pre-`1.0`. APIs may still change between beta releases. Part of the [executor monorepo](https://github.com/RhysSullivan/executor).
68+
69+## License
70+
71+MIT
packages/plugins/graphql/package.json+37−4
@@ -1,21 +1,33 @@
11 {
22 "name": "@executor/plugin-graphql",
3− "private": true,
43 "type": "module",
5− "version": "1.4.2",
4+ "version": "0.0.1-beta.5",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/plugins/graphql"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/graphql",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
716 ".": "./src/sdk/index.ts",
17+ "./promise": "./src/promise.ts",
818 "./api": "./src/api/index.ts",
919 "./react": "./src/react/index.ts",
1020 "./presets": "./src/sdk/presets.ts"
1121 },
1222 "scripts": {
23+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1324 "typecheck": "bunx tsc --noEmit -p tsconfig.json",
1425 "test": "vitest run",
1526 "test:watch": "vitest"
1627 },
1728 "dependencies": {
1829 "@effect/platform": "catalog:",
30+ "@effect/platform-node": "catalog:",
1931 "@executor/sdk": "workspace:*",
2032 "effect": "catalog:"
2133 },
@@ -52,6 +64,27 @@ · 30 unmodified lines
5264 "@effect/vitest": "catalog:",
5365 "@types/node": "catalog:",
5466 "bun-types": "catalog:",
55− "vitest": "catalog:"
56− }
67+ "vitest": "catalog:",
68+ "tsup": "catalog:"
69+ },
70+ "publishConfig": {
71+ "access": "public",
72+ "exports": {
73+ ".": {
74+ "import": {
75+ "types": "./dist/promise.d.ts",
76+ "default": "./dist/index.js"
77+ }
78+ },
79+ "./core": {
80+ "import": {
81+ "types": "./dist/sdk/index.d.ts",
82+ "default": "./dist/core.js"
83+ }
84+ }
85+ }
86+ },
87+ "files": [
88+ "dist"
89+ ]
5790 }
packages/plugins/graphql/src/promise.ts+12−0
@@ -0,0 +1,12 @@
1+import { graphqlPlugin as graphqlPluginEffect } from "./sdk/plugin";
2+
3+export type { GraphqlSourceConfig } from "./sdk/plugin";
4+export type { HeaderValue } from "./sdk/types";
5+export type { GraphqlOperationStore } from "./sdk/operation-store";
6+
7+export interface GraphqlPluginOptions {
8+ readonly operationStore?: import("./sdk/operation-store").GraphqlOperationStore;
9+}
10+
11+export const graphqlPlugin = (options?: GraphqlPluginOptions) =>
12+ graphqlPluginEffect(options);
packages/plugins/graphql/tsconfig.json+8−3
@@ -5,9 +5,14 @@ · 4 unmodified lines
55 "moduleResolution": "Bundler",
66 "strict": true,
77 "skipLibCheck": true,
8− "noEmit": true,
9− "lib": ["ES2022", "DOM"],
10− "types": ["bun-types", "node"],
8+ "lib": [
9+ "ES2022",
10+ "DOM"
11+ ],
12+ "types": [
13+ "bun-types",
14+ "node"
15+ ],
1116 "noUnusedLocals": true,
1217 "noImplicitOverride": true,
1318 "jsx": "react-jsx",
packages/plugins/graphql/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/sdk/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^@executor\//, /^effect/, /^@effect\//],
13+});
packages/plugins/keychain/README.md+59−0
@@ -0,0 +1,59 @@
1+# @executor/plugin-keychain
2+
3+OS-keychain-backed secret store for the executor. Reads and writes secrets to:
4+
5+- **macOS / iOS** — Keychain
6+- **Linux** — Secret Service (GNOME Keyring, KWallet)
7+- **Windows** — Credential Manager
8+
9+Secrets are encrypted at rest by the operating system and never touch your project's filesystem.
10+
11+## Install
12+
13+```sh
14+bun add @executor/sdk @executor/plugin-keychain
15+# or
16+npm install @executor/sdk @executor/plugin-keychain
17+```
18+
19+## Usage
20+
21+```ts
22+import { createExecutor } from "@executor/sdk";
23+import { keychainPlugin } from "@executor/plugin-keychain";
24+
25+const executor = await createExecutor({
26+ scope: { name: "my-app" },
27+ plugins: [keychainPlugin()] as const,
28+});
29+
30+// Check whether the current OS has a supported keychain
31+if (executor.keychain.isSupported) {
32+ await executor.secrets.set({
33+ id: "github-token",
34+ name: "GitHub Token",
35+ value: "ghp_...",
36+ purpose: "authentication",
37+ });
38+
39+ const value = await executor.secrets.resolve("github-token");
40+}
41+```
42+
43+Secrets written through this plugin are available to every other plugin that resolves secrets by ID — so you can store a token once and use it across `@executor/plugin-openapi`, `@executor/plugin-graphql`, etc. via `{ secretId, prefix }` headers.
44+
45+## Using with Effect
46+
47+If you're building on `@executor/sdk` (the raw Effect entry), import this plugin from its `/core` subpath instead:
48+
49+```ts
50+import { keychainPlugin } from "@executor/plugin-keychain";
51+```
52+
53+## Status
54+
55+Pre-`1.0`. APIs may still change between beta releases. Part of the [executor monorepo](https://github.com/RhysSullivan/executor).
56+
57+## License
58+
59+MIT
packages/plugins/keychain/package.json+37−5
@@ -1,12 +1,23 @@
11 {
22 "name": "@executor/plugin-keychain",
3− "private": true,
43 "type": "module",
5− "version": "1.4.2",
4+ "version": "0.0.1-beta.5",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/plugins/keychain"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/keychain",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
7− ".": "./src/index.ts"
16+ ".": "./src/index.ts",
17+ "./promise": "./src/promise.ts"
818 },
919 "scripts": {
20+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1021 "typecheck": "bunx tsc --noEmit -p tsconfig.json",
1122 "test": "vitest run",
1223 "test:watch": "vitest"
@@ -20,6 +31,27 @@ · 7 unmodified lines
2031 "@effect/vitest": "catalog:",
2132 "@types/node": "catalog:",
2233 "bun-types": "catalog:",
23− "vitest": "catalog:"
24− }
34+ "vitest": "catalog:",
35+ "tsup": "catalog:"
36+ },
37+ "publishConfig": {
38+ "access": "public",
39+ "exports": {
40+ ".": {
41+ "import": {
42+ "types": "./dist/promise.d.ts",
43+ "default": "./dist/index.js"
44+ }
45+ },
46+ "./core": {
47+ "import": {
48+ "types": "./dist/index.d.ts",
49+ "default": "./dist/core.js"
50+ }
51+ }
52+ }
53+ },
54+ "files": [
55+ "dist"
56+ ]
2557 }
packages/plugins/keychain/src/promise.ts+7−0
@@ -0,0 +1,7 @@
1+import { keychainPlugin as keychainPluginEffect } from "./index";
2+
3+export type { KeychainPluginConfig } from "./index";
4+
5+export const keychainPlugin = (
6+ config?: { readonly serviceName?: string },
7+) => keychainPluginEffect(config);
packages/plugins/keychain/tsconfig.json+29−1
@@ -1 +1,29 @@
1−{"compilerOptions":{"target":"ES2022","module":"ESNext","moduleResolution":"Bundler","strict":true,"skipLibCheck":true,"noEmit":true,"lib":["ES2022"],"types":["bun-types","node"],"noUnusedLocals":true,"noImplicitOverride":true,"plugins":[{"name":"@effect/language-service","diagnosticSeverity":{"preferSchemaOverJson":"off"}}]},"include":["src/**/*.ts"]}
1+{
2+ "compilerOptions": {
3+ "target": "ES2022",
4+ "module": "ESNext",
5+ "moduleResolution": "Bundler",
6+ "strict": true,
7+ "skipLibCheck": true,
8+ "lib": [
9+ "ES2022"
10+ ],
11+ "types": [
12+ "bun-types",
13+ "node"
14+ ],
15+ "noUnusedLocals": true,
16+ "noImplicitOverride": true,
17+ "plugins": [
18+ {
19+ "name": "@effect/language-service",
20+ "diagnosticSeverity": {
21+ "preferSchemaOverJson": "off"
22+ }
23+ }
24+ ]
25+ },
26+ "include": [
27+ "src/**/*.ts"
28+ ]
29+}
packages/plugins/keychain/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^@executor\//, /^effect/, /^@effect\//],
13+});
packages/plugins/mcp/README.md+63−0
@@ -0,0 +1,63 @@
1+# @executor/plugin-mcp
2+
3+Register [Model Context Protocol](https://modelcontextprotocol.io) servers as tool sources for an executor. Supports both stdio-launched servers and remote (HTTP) servers, with optional OAuth.
4+
5+## Install
6+
7+```sh
8+bun add @executor/sdk @executor/plugin-mcp
9+# or
10+npm install @executor/sdk @executor/plugin-mcp
11+```
12+
13+## Usage
14+
15+```ts
16+import { createExecutor } from "@executor/sdk";
17+import { mcpPlugin } from "@executor/plugin-mcp";
18+
19+const executor = await createExecutor({
20+ scope: { name: "my-app" },
21+ plugins: [mcpPlugin()] as const,
22+});
23+
24+// Remote MCP server
25+await executor.mcp.addSource({
26+ transport: "remote",
27+ name: "Context7",
28+ endpoint: "https://mcp.context7.com/mcp",
29+});
30+
31+// Stdio MCP server
32+await executor.mcp.addSource({
33+ transport: "stdio",
34+ name: "My Server",
35+ command: "npx",
36+ args: ["-y", "@my/mcp-server"],
37+});
38+
39+// Every MCP tool is now part of the unified catalog
40+const tools = await executor.tools.list();
41+
42+const result = await executor.tools.invoke(
43+ "context7.searchLibraries",
44+ { query: "effect-ts" },
45+ { onElicitation: "accept-all" },
46+);
47+```
48+
49+## Using with Effect
50+
51+If you're building on `@executor/sdk` (the raw Effect entry), import this plugin from its `/core` subpath instead:
52+
53+```ts
54+import { mcpPlugin } from "@executor/plugin-mcp";
55+```
56+
57+## Status
58+
59+Pre-`1.0`. APIs may still change between beta releases. Part of the [executor monorepo](https://github.com/RhysSullivan/executor).
60+
61+## License
62+
63+MIT
packages/plugins/mcp/package.json+36−3
@@ -1,21 +1,53 @@
11 {
22 "name": "@executor/plugin-mcp",
3− "private": true,
43 "type": "module",
5− "version": "1.4.2",
4+ "version": "0.0.1-beta.5",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/plugins/mcp"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/mcp",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
716 ".": "./src/sdk/index.ts",
17+ "./promise": "./src/promise.ts",
818 "./api": "./src/api/index.ts",
919 "./react": "./src/react/index.ts",
1020 "./presets": "./src/sdk/presets.ts"
1121 },
22+ "publishConfig": {
23+ "access": "public",
24+ "exports": {
25+ ".": {
26+ "import": {
27+ "types": "./dist/promise.d.ts",
28+ "default": "./dist/index.js"
29+ }
30+ },
31+ "./core": {
32+ "import": {
33+ "types": "./dist/sdk/index.d.ts",
34+ "default": "./dist/core.js"
35+ }
36+ }
37+ }
38+ },
39+ "files": [
40+ "dist"
41+ ],
1242 "scripts": {
43+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1344 "typecheck": "bunx tsc --noEmit -p tsconfig.json",
1445 "test": "vitest run",
1546 "test:watch": "vitest"
1647 },
1748 "dependencies": {
1849 "@effect/platform": "catalog:",
50+ "@effect/platform-node": "catalog:",
1951 "@executor/sdk": "workspace:*",
2052 "@modelcontextprotocol/sdk": "^1.29.0",
2153 "effect": "catalog:"
@@ -54,6 +86,7 @@ · 32 unmodified lines
5486 "@types/node": "catalog:",
5587 "bun-types": "catalog:",
5688 "vitest": "catalog:",
57− "zod": "^4.3.6"
89+ "zod": "^4.3.6",
90+ "tsup": "catalog:"
5891 }
5992 }
packages/plugins/mcp/src/promise.ts+21−0
@@ -0,0 +1,21 @@
1+import { mcpPlugin as mcpPluginEffect } from "./sdk/plugin";
2+
3+export type {
4+ McpSourceConfig,
5+ McpRemoteSourceConfig,
6+ McpStdioSourceConfig,
7+ McpProbeResult,
8+ McpOAuthStartInput,
9+ McpOAuthStartResponse,
10+ McpOAuthCompleteInput,
11+ McpOAuthCompleteResponse,
12+} from "./sdk/plugin";
13+
14+export type { McpBindingStore } from "./sdk/binding-store";
15+
16+export interface McpPluginOptions {
17+ readonly bindingStore?: import("./sdk/binding-store").McpBindingStore;
18+}
19+
20+export const mcpPlugin = (options?: McpPluginOptions) =>
21+ mcpPluginEffect(options);
packages/plugins/mcp/tsconfig.json+8−3
@@ -5,9 +5,14 @@ · 4 unmodified lines
55 "moduleResolution": "Bundler",
66 "strict": true,
77 "skipLibCheck": true,
8− "noEmit": true,
9− "lib": ["ES2022", "DOM"],
10− "types": ["bun-types", "node"],
8+ "lib": [
9+ "ES2022",
10+ "DOM"
11+ ],
12+ "types": [
13+ "bun-types",
14+ "node"
15+ ],
1116 "noUnusedLocals": true,
1217 "noImplicitOverride": true,
1318 "jsx": "react-jsx",
packages/plugins/mcp/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/sdk/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^@executor\//, /^effect/, /^@effect\//],
13+});
packages/plugins/onepassword/README.md+59−0
@@ -0,0 +1,59 @@
1+# @executor/plugin-onepassword
2+
3+[1Password](https://1password.com) integration for the executor. Provides a secret source that resolves values from a 1Password vault, backed by either the desktop app (connect.sock) or a service account token.
4+
5+## Install
6+
7+```sh
8+bun add @executor/sdk @executor/plugin-onepassword
9+# or
10+npm install @executor/sdk @executor/plugin-onepassword
11+```
12+
13+## Usage
14+
15+```ts
16+import { createExecutor } from "@executor/sdk";
17+import { onepasswordPlugin } from "@executor/plugin-onepassword";
18+
19+const executor = await createExecutor({
20+ scope: { name: "my-app" },
21+ plugins: [onepasswordPlugin()] as const,
22+});
23+
24+// Point the plugin at your account
25+await executor.onepassword.configure({
26+ auth: { kind: "desktop-app", accountName: "my-account" },
27+});
28+
29+// Inspect connection / list vaults
30+const status = await executor.onepassword.status();
31+const vaults = await executor.onepassword.listVaults({
32+ kind: "desktop-app",
33+ accountName: "my-account",
34+});
35+```
36+
37+For CI and headless environments, use a service-account token instead of the desktop app:
38+
39+```ts
40+await executor.onepassword.configure({
41+ auth: { kind: "service-account", token: process.env.OP_SERVICE_ACCOUNT_TOKEN! },
42+});
43+```
44+
45+## Using with Effect
46+
47+If you're building on `@executor/sdk` (the raw Effect entry), import this plugin from its `/core` subpath instead:
48+
49+```ts
50+import { onepasswordPlugin } from "@executor/plugin-onepassword";
51+```
52+
53+## Status
54+
55+Pre-`1.0`. APIs may still change between beta releases. Part of the [executor monorepo](https://github.com/RhysSullivan/executor).
56+
57+## License
58+
59+MIT
packages/plugins/onepassword/package.json+36−4
@@ -1,14 +1,25 @@
11 {
22 "name": "@executor/plugin-onepassword",
3− "private": true,
43 "type": "module",
5− "version": "1.4.2",
4+ "version": "0.0.1-beta.5",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/plugins/onepassword"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/onepassword",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
716 ".": "./src/sdk/index.ts",
17+ "./promise": "./src/promise.ts",
818 "./api": "./src/api/index.ts",
919 "./react": "./src/react/index.ts"
1020 },
1121 "scripts": {
22+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1223 "typecheck": "bunx tsc --noEmit -p tsconfig.json",
1324 "test": "vitest run",
1425 "test:watch": "vitest"
@@ -27,7 +38,8 @@ · 12 unmodified lines
2738 "@types/react": "catalog:",
2839 "bun-types": "catalog:",
2940 "react": "catalog:",
30− "vitest": "catalog:"
41+ "vitest": "catalog:",
42+ "tsup": "catalog:"
3143 },
3244 "peerDependencies": {
3345 "react": ">=18",
@@ -44,5 +56,25 @@ · 10 unmodified lines
4456 "@executor/react": {
4557 "optional": true
4658 }
47− }
59+ },
60+ "publishConfig": {
61+ "access": "public",
62+ "exports": {
63+ ".": {
64+ "import": {
65+ "types": "./dist/promise.d.ts",
66+ "default": "./dist/index.js"
67+ }
68+ },
69+ "./core": {
70+ "import": {
71+ "types": "./dist/sdk/index.d.ts",
72+ "default": "./dist/core.js"
73+ }
74+ }
75+ }
76+ },
77+ "files": [
78+ "dist"
79+ ]
4880 }
packages/plugins/onepassword/src/promise.ts+7−0
@@ -0,0 +1,7 @@
1+export { onepasswordPlugin } from "./sdk/plugin";
2+export type {
3+ OnePasswordExtension,
4+ OnePasswordPluginOptions,
5+} from "./sdk/plugin";
6+export { OnePasswordConfig, ConnectionStatus, Vault, OnePasswordAuth, DesktopAppAuth, ServiceAccountAuth } from "./sdk/types";
7+export { OnePasswordError } from "./sdk/errors";
packages/plugins/onepassword/tsconfig.json+29−1
@@ -1 +1,29 @@
1−{"compilerOptions":{"target":"ES2022","module":"ESNext","moduleResolution":"Bundler","strict":true,"skipLibCheck":true,"noEmit":true,"lib":["ES2022"],"types":["node"],"noUnusedLocals":true,"noImplicitOverride":true,"plugins":[{"name":"@effect/language-service","diagnosticSeverity":{"preferSchemaOverJson":"off"}}]},"include":["src/api/**/*.ts","src/sdk/**/*.ts"]}
1+{
2+ "compilerOptions": {
3+ "target": "ES2022",
4+ "module": "ESNext",
5+ "moduleResolution": "Bundler",
6+ "strict": true,
7+ "skipLibCheck": true,
8+ "lib": [
9+ "ES2022"
10+ ],
11+ "types": [
12+ "node"
13+ ],
14+ "noUnusedLocals": true,
15+ "noImplicitOverride": true,
16+ "plugins": [
17+ {
18+ "name": "@effect/language-service",
19+ "diagnosticSeverity": {
20+ "preferSchemaOverJson": "off"
21+ }
22+ }
23+ ]
24+ },
25+ "include": [
26+ "src/api/**/*.ts",
27+ "src/sdk/**/*.ts"
28+ ]
29+}
packages/plugins/onepassword/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/sdk/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^@executor\//, /^effect/, /^@effect\//],
13+});
packages/plugins/openapi/README.md+82−0
@@ -0,0 +1,82 @@
1+# @executor/plugin-openapi
2+
3+Load [OpenAPI](https://www.openapis.org/) specifications into an executor. Every operation in the spec becomes an invokable tool with a JSON-Schema input, automatic request building, and optional secret-backed auth.
4+
5+## Install
6+
7+```sh
8+bun add @executor/sdk @executor/plugin-openapi
9+# or
10+npm install @executor/sdk @executor/plugin-openapi
11+```
12+
13+## Usage
14+
15+```ts
16+import { createExecutor } from "@executor/sdk";
17+import { openApiPlugin } from "@executor/plugin-openapi";
18+
19+const executor = await createExecutor({
20+ scope: { name: "my-app" },
21+ plugins: [openApiPlugin()] as const,
22+});
23+
24+// Load a spec by URL (JSON or YAML, remote or file://)
25+await executor.openapi.addSpec({
26+ spec: "https://petstore3.swagger.io/api/v3/openapi.json",
27+ namespace: "petstore",
28+});
29+
30+// List and invoke tools like any other plugin
31+const tools = await executor.tools.list();
32+const result = await executor.tools.invoke(
33+ "petstore.listPets",
34+ {},
35+ { onElicitation: "accept-all" },
36+);
37+```
38+
39+## Secret-backed auth headers
40+
41+Wire API keys or bearer tokens through the executor's secret store — never hard-code them in source configs:
42+
43+```ts
44+await executor.secrets.set({
45+ id: "stripe-key",
46+ name: "Stripe Key",
47+ value: "sk_live_...",
48+ purpose: "authentication",
49+});
50+
51+await executor.openapi.addSpec({
52+ spec: "https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json",
53+ namespace: "stripe",
54+ headers: {
55+ Authorization: { secretId: "stripe-key", prefix: "Bearer " },
56+ },
57+});
58+```
59+
60+## Presets
61+
62+Common public APIs are available as presets from the `/presets` subpath:
63+
64+```ts
65+import { openApiPresets } from "@executor/plugin-openapi/presets";
66+```
67+
68+## Effect entry point
69+
70+If you're using `@executor/core` directly, import from the `/core` subpath:
71+
72+```ts
73+import { openApiPlugin } from "@executor/plugin-openapi";
74+```
75+
76+## Status
77+
78+Pre-`1.0`. APIs may still change between beta releases. Part of the [executor monorepo](https://github.com/RhysSullivan/executor).
79+
80+## License
81+
82+MIT
packages/plugins/openapi/package.json+36−4
@@ -1,15 +1,26 @@
11 {
22 "name": "@executor/plugin-openapi",
3− "private": true,
43 "type": "module",
5− "version": "1.4.2",
4+ "version": "0.0.1-beta.5",
5+ "license": "MIT",
6+ "repository": {
7+ "type": "git",
8+ "url": "git+https://github.com/RhysSullivan/executor.git",
9+ "directory": "packages/plugins/openapi"
10+ },
11+ "homepage": "https://github.com/RhysSullivan/executor/tree/main/packages/plugins/openapi",
12+ "bugs": {
13+ "url": "https://github.com/RhysSullivan/executor/issues"
14+ },
615 "exports": {
716 ".": "./src/sdk/index.ts",
17+ "./promise": "./src/promise.ts",
818 "./api": "./src/api/index.ts",
919 "./react": "./src/react/index.ts",
1020 "./presets": "./src/sdk/presets.ts"
1121 },
1222 "scripts": {
23+ "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)",
1324 "typecheck": "bunx tsc --noEmit -p tsconfig.json",
1425 "test": "vitest run",
1526 "test:watch": "vitest"
@@ -56,6 +67,27 @@ · 40 unmodified lines
5667 "@effect/vitest": "catalog:",
5768 "@types/node": "catalog:",
5869 "bun-types": "catalog:",
59− "vitest": "catalog:"
60− }
70+ "vitest": "catalog:",
71+ "tsup": "catalog:"
72+ },
73+ "publishConfig": {
74+ "access": "public",
75+ "exports": {
76+ ".": {
77+ "import": {
78+ "types": "./dist/promise.d.ts",
79+ "default": "./dist/index.js"
80+ }
81+ },
82+ "./core": {
83+ "import": {
84+ "types": "./dist/sdk/index.d.ts",
85+ "default": "./dist/core.js"
86+ }
87+ }
88+ }
89+ },
90+ "files": [
91+ "dist"
92+ ]
6193 }
packages/plugins/openapi/src/promise.ts+11−0
@@ -0,0 +1,11 @@
1+import { openApiPlugin as openApiPluginEffect } from "./sdk/plugin";
2+
3+export type { OpenApiSpecConfig } from "./sdk/plugin";
4+export type { OpenApiOperationStore } from "./sdk/operation-store";
5+
6+export interface OpenApiPluginOptions {
7+ readonly operationStore?: import("./sdk/operation-store").OpenApiOperationStore;
8+}
9+
10+export const openApiPlugin = (options?: OpenApiPluginOptions) =>
11+ openApiPluginEffect(options);
packages/plugins/openapi/tsconfig.json+9−5
@@ -5,17 +5,21 @@ · 4 unmodified lines
55 "moduleResolution": "Bundler",
66 "strict": true,
77 "skipLibCheck": true,
8− "noEmit": true,
9− "lib": ["ES2022", "DOM"],
10− "types": ["bun-types", "node"],
8+ "lib": [
9+ "ES2022",
10+ "DOM"
11+ ],
12+ "types": [
13+ "bun-types",
14+ "node"
15+ ],
1116 "noUnusedLocals": true,
1217 "noImplicitOverride": true,
1318 "jsx": "react-jsx",
1419 "plugins": [
1520 {
1621 "name": "@effect/language-service",
17− "diagnosticSeverity": {
18− }
22+ "diagnosticSeverity": {}
1923 }
2024 ]
2125 },
packages/plugins/openapi/tsup.config.ts+13−0
@@ -0,0 +1,13 @@
1+import { defineConfig } from "tsup";
2+
3+export default defineConfig({
4+ entry: {
5+ index: "src/promise.ts",
6+ core: "src/sdk/index.ts",
7+ },
8+ format: ["esm"],
9+ dts: false,
10+ sourcemap: true,
11+ clean: true,
12+ external: [/^@executor\//, /^effect/, /^@effect\//],
13+});
packages/react/package.json+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020 "@executor/api": "workspace:*",
2121 "@executor/sdk": "workspace:*",
2222 "@tanstack/react-router": "catalog:",
23+ "@hookform/resolvers": "^5.2.2",
2324 "@shikijs/langs": "^4.0.2",
2425 "@shikijs/themes": "^4.0.2",
2526 "class-variance-authority": "^0.7.1",
packages/react/src/components/tool-detail.tsx+3−0
@@ -2,6 +2,9 @@ import { useMemo, useState } from "react"; · 1 unmodified line
22 import { useAtomValue, Result } from "@effect-atom/atom-react";
33 import { toolSchemaAtom } from "../api/atoms";
44 import { ScopeId, ToolId } from "@executor/sdk";
5+import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "./accordion";
6+import { Badge } from "./badge";
7+import { CodeBlock } from "./code-block";
58 import { Markdown } from "./markdown";
69 import { SchemaExplorer } from "./schema-explorer";
710 import { ExpandableCodeBlock } from "./expandable-code-block";
scripts/publish-packages.ts+357−0
@@ -0,0 +1,357 @@
1+#!/usr/bin/env bun
2+/**
3+ * Publishes the public @executor-js/* workspace packages to npm.
4+ *
5+ * Walks a hard-coded list of publishable package directories, determines the
6+ * dist-tag from the version string (anything containing `-` is treated as beta),
7+ * and packs + publishes each package whose current version is not already on npm.
8+ *
9+ * Invoked from `.github/workflows/release.yml` via the `publish:` input on
10+ * changesets/action after the Version Packages PR has been merged, and locally
11+ * via `bun run release:publish:packages` (or `--dry-run`).
12+ */
13+import { $ } from "bun";
14+import { existsSync } from "node:fs";
15+import { readdir, readFile, rm, stat, writeFile } from "node:fs/promises";
16+import { dirname, join, resolve } from "node:path";
17+import { fileURLToPath } from "node:url";
18+
19+type Channel = "latest" | "beta";
20+
21+const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
22+
23+/**
24+ * The repo uses `@executor/*` internally (matching historical package names
25+ * and the workspace graph) but publishes under `@executor-js/*` because the
26+ * short scope was taken on npm. At pack time we rewrite package manifests and
27+ * compiled `dist/` artifacts so the tarball ships with the public scope —
28+ * source code stays unchanged. Only package names in `PUBLIC_PACKAGE_DIRS`
29+ * are rewritten; unpublished peer deps like `@executor/api` / `@executor/react`
30+ * are left alone (they're optional peers and users who don't install them
31+ * just see a warning).
32+ */
33+const INTERNAL_SCOPE = "@executor";
34+const PUBLISHED_SCOPE = "@executor-js";
35+
36+/**
37+ * Workspace-relative paths of the public packages. Kept explicit so a new
38+ * directory under `packages/plugins/` does not accidentally ship to npm.
39+ */
40+const PUBLIC_PACKAGE_DIRS = [
41+ "packages/core/sdk",
42+ "packages/plugins/file-secrets",
43+ "packages/plugins/google-discovery",
44+ "packages/plugins/graphql",
45+ "packages/plugins/keychain",
46+ "packages/plugins/mcp",
47+ "packages/plugins/onepassword",
48+ "packages/plugins/openapi",
49+] as const;
50+
51+const parseArgs = (argv: ReadonlyArray<string>): { dryRun: boolean } => {
52+ let dryRun = false;
53+ for (const arg of argv) {
54+ if (arg === "--dry-run") {
55+ dryRun = true;
56+ continue;
57+ }
58+ throw new Error(`Unknown argument: ${arg}`);
59+ }
60+ return { dryRun };
61+};
62+
63+const resolveChannel = (version: string): Channel =>
64+ version.includes("-") ? "beta" : "latest";
65+
66+const readPackageMeta = async (pkgDir: string) => {
67+ const pkgJsonPath = join(pkgDir, "package.json");
68+ const pkg = await Bun.file(pkgJsonPath).json() as {
69+ name?: string;
70+ version?: string;
71+ private?: boolean;
72+ };
73+
74+ if (!pkg.name || !pkg.version) {
75+ throw new Error(`Missing name/version in ${pkgJsonPath}`);
76+ }
77+ if (pkg.private === true) {
78+ throw new Error(`${pkg.name} is marked private and cannot be published`);
79+ }
80+
81+ return { name: pkg.name, version: pkg.version };
82+};
83+
84+const packageAlreadyPublished = async (name: string, version: string): Promise<boolean> => {
85+ const proc = Bun.spawn(["npm", "view", `${name}@${version}`, "version"], {
86+ stdio: ["ignore", "ignore", "ignore"],
87+ });
88+ return (await proc.exited) === 0;
89+};
90+
91+type DependencyBlock = Record<string, string>;
92+type MutablePackageJson = {
93+ name?: string;
94+ dependencies?: DependencyBlock;
95+ devDependencies?: DependencyBlock;
96+ peerDependencies?: DependencyBlock;
97+ optionalDependencies?: DependencyBlock;
98+ [key: string]: unknown;
99+};
100+
101+/**
102+ * Rewrites the internal `@executor/*` scope to the published `@executor-js/*`
103+ * scope for the given set of names, inside both `package.json` (name +
104+ * dep blocks) and compiled `dist/` artifacts (`.js`, `.d.ts`). Also resolves
105+ * `workspace:*` dep references to concrete versions, since `bun pm pack`
106+ * can't resolve workspace specifiers that no longer match any workspace name
107+ * (after the rename). Returns a restore function that reverts every file we
108+ * touched. Only names in `publishable` are rewritten — `@executor/api` and
109+ * `@executor/react` are left alone because they're unpublished optional peers.
110+ */
111+const applyScopeRename = async (
112+ pkgDir: string,
113+ publishable: ReadonlySet<string>,
114+ publishableVersions: ReadonlyMap<string, string>,
115+): Promise<() => Promise<void>> => {
116+ const toPublished = (internal: string): string =>
117+ internal.replace(`${INTERNAL_SCOPE}/`, `${PUBLISHED_SCOPE}/`);
118+ const toInternal = (published: string): string =>
119+ published.replace(`${PUBLISHED_SCOPE}/`, `${INTERNAL_SCOPE}/`);
120+
121+ const publishableInternalNames = new Set<string>();
122+ for (const published of publishable) publishableInternalNames.add(toInternal(published));
123+
124+ const renameDepBlock = (block: DependencyBlock | undefined): DependencyBlock | undefined => {
125+ if (!block) return block;
126+ const next: DependencyBlock = {};
127+ let mutated = false;
128+ for (const [key, value] of Object.entries(block)) {
129+ if (publishableInternalNames.has(key)) {
130+ const newKey = toPublished(key);
131+ // Resolve workspace:* to the concrete version of the published package.
132+ const newValue = value.startsWith("workspace:")
133+ ? publishableVersions.get(newKey) ?? value
134+ : value;
135+ next[newKey] = newValue;
136+ mutated = true;
137+ } else {
138+ next[key] = value;
139+ }
140+ }
141+ return mutated ? next : block;
142+ };
143+
144+ const snapshots = new Map<string, string>();
145+ const writeIfChanged = async (absPath: string, next: string): Promise<void> => {
146+ const original = await readFile(absPath, "utf8");
147+ if (next === original) return;
148+ snapshots.set(absPath, original);
149+ await writeFile(absPath, next);
150+ };
151+
152+ // 1. package.json — rewrite `name` and every dep block structurally so we
153+ // can also resolve workspace specifiers while we're here.
154+ const pkgJsonPath = join(pkgDir, "package.json");
155+ const pkgRaw = await readFile(pkgJsonPath, "utf8");
156+ const pkg = JSON.parse(pkgRaw) as MutablePackageJson;
157+ if (pkg.name && publishableInternalNames.has(pkg.name)) {
158+ pkg.name = toPublished(pkg.name);
159+ }
160+ pkg.dependencies = renameDepBlock(pkg.dependencies);
161+ pkg.devDependencies = renameDepBlock(pkg.devDependencies);
162+ pkg.peerDependencies = renameDepBlock(pkg.peerDependencies);
163+ pkg.optionalDependencies = renameDepBlock(pkg.optionalDependencies);
164+ const pkgNext = `${JSON.stringify(pkg, null, 2)}\n`;
165+ if (pkgNext !== pkgRaw) {
166+ snapshots.set(pkgJsonPath, pkgRaw);
167+ await writeFile(pkgJsonPath, pkgNext);
168+ }
169+
170+ // 2. dist/**/*.{js,d.ts} — plain string replace of import specifiers, one
171+ // package name at a time. Longest-first avoids partial matches.
172+ const orderedInternal = [...publishableInternalNames].sort((a, b) => b.length - a.length);
173+ const replaceAllInText = (text: string): string => {
174+ let out = text;
175+ for (const internal of orderedInternal) {
176+ out = out.split(internal).join(toPublished(internal));
177+ }
178+ return out;
179+ };
180+ const distDir = join(pkgDir, "dist");
181+ if (existsSync(distDir)) {
182+ const walk = async (dir: string): Promise<void> => {
183+ const entries = await readdir(dir);
184+ for (const entry of entries) {
185+ const abs = join(dir, entry);
186+ const info = await stat(abs);
187+ if (info.isDirectory()) {
188+ await walk(abs);
189+ continue;
190+ }
191+ if (entry.endsWith(".js") || entry.endsWith(".d.ts")) {
192+ const original = await readFile(abs, "utf8");
193+ await writeIfChanged(abs, replaceAllInText(original));
194+ }
195+ }
196+ };
197+ await walk(distDir);
198+ }
199+
200+ return async () => {
201+ for (const [path, original] of snapshots) {
202+ await writeFile(path, original);
203+ }
204+ };
205+};
206+
207+/**
208+ * Applies `publishConfig` field overrides to package.json in place, returning a
209+ * function that restores the original file. `bun pm pack` does not substitute
210+ * `publishConfig.exports` / `publishConfig.main` etc at pack time (npm does,
211+ * but only for a subset of fields and only for `npm pack`), so we rewrite the
212+ * file ourselves so the packed tarball has the correct `exports` pointing at
213+ * `dist/` instead of the dev-time `src/index.ts`.
214+ */
215+const applyPublishConfig = async (pkgDir: string): Promise<() => Promise<void>> => {
216+ const pkgJsonPath = join(pkgDir, "package.json");
217+ const original = await readFile(pkgJsonPath, "utf8");
218+ const parsed = JSON.parse(original) as {
219+ publishConfig?: Record<string, unknown>;
220+ [key: string]: unknown;
221+ };
222+
223+ const publishConfig = parsed.publishConfig;
224+ if (!publishConfig || typeof publishConfig !== "object") {
225+ return async () => {};
226+ }
227+
228+ // Fields we allow publishConfig to override. `access`/`tag`/`registry` are
229+ // real npm publish-time config keys — they must NOT be hoisted into the
230+ // top-level manifest.
231+ const overridable = new Set([
232+ "exports",
233+ "main",
234+ "module",
235+ "types",
236+ "typings",
237+ "bin",
238+ "browser",
239+ "files",
240+ ]);
241+
242+ const nextPublishConfig: Record<string, unknown> = {};
243+ let mutated = false;
244+ for (const [key, value] of Object.entries(publishConfig)) {
245+ if (overridable.has(key)) {
246+ parsed[key] = value;
247+ mutated = true;
248+ } else {
249+ nextPublishConfig[key] = value;
250+ }
251+ }
252+
253+ if (!mutated) {
254+ return async () => {};
255+ }
256+
257+ if (Object.keys(nextPublishConfig).length === 0) {
258+ delete parsed.publishConfig;
259+ } else {
260+ parsed.publishConfig = nextPublishConfig;
261+ }
262+
263+ await writeFile(pkgJsonPath, `${JSON.stringify(parsed, null, 2)}\n`);
264+ return async () => {
265+ await writeFile(pkgJsonPath, original);
266+ };
267+};
268+
269+const publishPackage = async (
270+ pkgDir: string,
271+ channel: Channel,
272+ dryRun: boolean,
273+ publishable: ReadonlySet<string>,
274+ publishableVersions: ReadonlyMap<string, string>,
275+) => {
276+ const { name: internalName, version } = await readPackageMeta(pkgDir);
277+ const publishedName = internalName.replace(`${INTERNAL_SCOPE}/`, `${PUBLISHED_SCOPE}/`);
278+
279+ if (!existsSync(join(pkgDir, "dist"))) {
280+ throw new Error(`Missing dist/ in ${pkgDir}. Did you run 'bun run build:packages'?`);
281+ }
282+
283+ if (await packageAlreadyPublished(publishedName, version)) {
284+ console.log(`[skip] ${publishedName}@${version} already on npm`);
285+ return;
286+ }
287+
288+ console.log(`[publish] ${publishedName}@${version} (${channel})${dryRun ? " [dry-run]" : ""}`);
289+
290+ // Clean any stale tarballs from previous runs so our readdir finds exactly
291+ // the archive produced by the pack below.
292+ const stale = (await readdir(pkgDir)).filter((entry) => entry.endsWith(".tgz"));
293+ for (const entry of stale) {
294+ await rm(join(pkgDir, entry), { force: true });
295+ }
296+
297+ // Order matters: rename the scope first so publishConfig sees the final
298+ // package.json, then apply publishConfig on top. Restore in reverse.
299+ const restoreScope = await applyScopeRename(pkgDir, publishable, publishableVersions);
300+ const restorePublishConfig = await applyPublishConfig(pkgDir);
301+ try {
302+ await $`bun pm pack`.cwd(pkgDir);
303+ } finally {
304+ await restorePublishConfig();
305+ await restoreScope();
306+ }
307+
308+ const produced = (await readdir(pkgDir)).filter((entry) => entry.endsWith(".tgz"));
309+ if (produced.length !== 1) {
310+ throw new Error(`Expected exactly 1 .tgz in ${pkgDir}, found ${produced.length}: ${produced.join(", ")}`);
311+ }
312+ const tarball = produced[0]!;
313+
314+ if (dryRun) {
315+ return;
316+ }
317+
318+ const args = ["publish", tarball, "--access", "public", "--tag", channel];
319+ if (process.env.GITHUB_ACTIONS === "true") {
320+ args.push("--provenance");
321+ }
322+ await $`npm ${args}`.cwd(pkgDir);
323+};
324+
325+const main = async () => {
326+ const { dryRun } = parseArgs(process.argv.slice(2));
327+
328+ // Use the sdk package version as the source of truth for the channel. All
329+ // published packages version together (they're not in the changeset ignore
330+ // list), so they share a release channel.
331+ const sdkMeta = await readPackageMeta(join(repoRoot, "packages/core/sdk"));
332+ const channel = resolveChannel(sdkMeta.version);
333+ console.log(`Publishing ${PUBLISHED_SCOPE} packages (${channel})${dryRun ? " [dry-run]" : ""}`);
334+
335+ await $`bun run build:packages`.cwd(repoRoot);
336+
337+ // Snapshot the internal package names and versions up front so
338+ // applyScopeRename knows (a) which `@executor/*` references to rewrite
339+ // (vs. unpublished peer deps like `@executor/api` that should be left
340+ // alone) and (b) how to resolve `workspace:*` dep specifiers after the
341+ // rename — `bun pm pack` can no longer resolve them itself once the name
342+ // doesn't match any workspace.
343+ const publishable = new Set<string>();
344+ const publishableVersions = new Map<string, string>();
345+ for (const relDir of PUBLIC_PACKAGE_DIRS) {
346+ const pkg = await readPackageMeta(join(repoRoot, relDir));
347+ const publishedName = pkg.name.replace(`${INTERNAL_SCOPE}/`, `${PUBLISHED_SCOPE}/`);
348+ publishable.add(publishedName);
349+ publishableVersions.set(publishedName, pkg.version);
350+ }
351+
352+ for (const relDir of PUBLIC_PACKAGE_DIRS) {
353+ await publishPackage(join(repoRoot, relDir), channel, dryRun, publishable, publishableVersions);
354+ }
355+};
356+
357+await main();