@rudderhq/server 0.2.7-canary.12 → 0.2.7-canary.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundled-plugins/plugin-linear/dist/worker.js +18 -0
- package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +2 -2
- package/dist/routes/chats.d.ts.map +1 -1
- package/dist/routes/chats.js +129 -3
- package/dist/routes/chats.js.map +1 -1
- package/dist/services/chat-assistant.helpers.d.ts +1 -1
- package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
- package/dist/services/chat-assistant.helpers.js +25 -2
- package/dist/services/chat-assistant.helpers.js.map +1 -1
- package/package.json +13 -13
- package/ui-dist/assets/{_basePickBy-CW5jQSnw.js → _basePickBy-BoTmmDLZ.js} +1 -1
- package/ui-dist/assets/{_baseUniq-BCk_4DNG.js → _baseUniq-DtWyMVpl.js} +1 -1
- package/ui-dist/assets/{arc-BLKpFlM8.js → arc-CNSLv_Eq.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-2XIMDMQ5-DjfZcbhc.js → architectureDiagram-2XIMDMQ5-BI0iEGP4.js} +1 -1
- package/ui-dist/assets/{blockDiagram-WCTKOSBZ-B9rkOf8h.js → blockDiagram-WCTKOSBZ-BPITHoWa.js} +1 -1
- package/ui-dist/assets/{c4Diagram-IC4MRINW-_kUpl0VO.js → c4Diagram-IC4MRINW-5k6-UEfE.js} +1 -1
- package/ui-dist/assets/channel-CM0obZv8.js +1 -0
- package/ui-dist/assets/{chunk-4BX2VUAB-DcswXSaJ.js → chunk-4BX2VUAB-wUizlEvT.js} +1 -1
- package/ui-dist/assets/{chunk-55IACEB6-DG-xbcYf.js → chunk-55IACEB6-zWRoQVij.js} +1 -1
- package/ui-dist/assets/{chunk-FMBD7UC4-CTWKJ6SW.js → chunk-FMBD7UC4-DAYQWzzN.js} +1 -1
- package/ui-dist/assets/{chunk-JSJVCQXG-zfITcjUe.js → chunk-JSJVCQXG-CuNFkbPX.js} +1 -1
- package/ui-dist/assets/{chunk-KX2RTZJC-D3c3zs7c.js → chunk-KX2RTZJC-fuS0RZ1D.js} +1 -1
- package/ui-dist/assets/{chunk-NQ4KR5QH-D909DoD-.js → chunk-NQ4KR5QH-9LzNmH8D.js} +1 -1
- package/ui-dist/assets/{chunk-QZHKN3VN-B0rjnvZv.js → chunk-QZHKN3VN-Bje5JHtM.js} +1 -1
- package/ui-dist/assets/{chunk-WL4C6EOR-BvuMtKr_.js → chunk-WL4C6EOR-uvUFJ7sw.js} +1 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-CIH7tMda.js +1 -0
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-CIH7tMda.js +1 -0
- package/ui-dist/assets/clone-COr_9b0H.js +1 -0
- package/ui-dist/assets/{cose-bilkent-S5V4N54A-ymiSq74f.js → cose-bilkent-S5V4N54A-CVK-LJDd.js} +1 -1
- package/ui-dist/assets/{dagre-KLK3FWXG-DZGUOkP4.js → dagre-KLK3FWXG-Cc1E6WTP.js} +1 -1
- package/ui-dist/assets/{diagram-E7M64L7V-B36vEbCI.js → diagram-E7M64L7V-CdS1acC_.js} +1 -1
- package/ui-dist/assets/{diagram-IFDJBPK2-DH-794ne.js → diagram-IFDJBPK2-DoRG0vWf.js} +1 -1
- package/ui-dist/assets/{diagram-P4PSJMXO-C4Q4XeAg.js → diagram-P4PSJMXO-M_WLbl6z.js} +1 -1
- package/ui-dist/assets/{erDiagram-INFDFZHY-CnfxxOSr.js → erDiagram-INFDFZHY-PoBsEvPJ.js} +1 -1
- package/ui-dist/assets/{flowDiagram-PKNHOUZH-BGJjG5Gt.js → flowDiagram-PKNHOUZH-DXE3Datp.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-A5KZAMGK-pa8qAJp9.js → ganttDiagram-A5KZAMGK-jlFAI87z.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-K3NZZRJ6-CSmoEGbz.js → gitGraphDiagram-K3NZZRJ6-hJNX9C54.js} +1 -1
- package/ui-dist/assets/{graph-BhXIa3PN.js → graph-Dz4-RGXZ.js} +1 -1
- package/ui-dist/assets/{index-Ppj1w8Cl.js → index-6iGstoQ1.js} +1 -1
- package/ui-dist/assets/{index-sG7rFXnW.js → index-B4RQ5aO0.js} +1 -1
- package/ui-dist/assets/{index-D-LyEn94.js → index-BVTFjtOb.js} +1 -1
- package/ui-dist/assets/{index-xnPuzxVq.js → index-BkPIp6Lt.js} +1 -1
- package/ui-dist/assets/{index-Dp8FtlDC.js → index-ByVbyr9n.js} +1 -1
- package/ui-dist/assets/{index-DeYdf2dG.js → index-C2X0CAM2.js} +1 -1
- package/ui-dist/assets/{index-HpnMq3RK.js → index-CL4bT7aF.js} +1 -1
- package/ui-dist/assets/{index-DOoWjh3r.js → index-CSiVGadE.js} +1 -1
- package/ui-dist/assets/{index-hsefSanv.js → index-CWQspatC.js} +1 -1
- package/ui-dist/assets/{index-B36abERe.js → index-Cai232O5.js} +1 -1
- package/ui-dist/assets/{index-BHPgg5nH.js → index-CnLtqLgw.js} +1 -1
- package/ui-dist/assets/{index-Bz0RBlk3.js → index-CyZorfLe.js} +148 -148
- package/ui-dist/assets/{index-C-BoqbZZ.js → index-D62XmpSG.js} +1 -1
- package/ui-dist/assets/{index-CZAZtR9y.js → index-DHssWRAR.js} +1 -1
- package/ui-dist/assets/{index-tZrLD62F.js → index-DgbKE284.js} +1 -1
- package/ui-dist/assets/{index-CAN3G8nr.js → index-DjjffGim.js} +1 -1
- package/ui-dist/assets/{index-CXEj1pxJ.js → index-DptDamKQ.js} +1 -1
- package/ui-dist/assets/{index-eeyFmg5a.js → index-H4IBeJdt.js} +1 -1
- package/ui-dist/assets/{index-Dy__L_UE.js → index-IYmnGThi.js} +1 -1
- package/ui-dist/assets/{index-BuiAsFSw.js → index-LfPFAWSJ.js} +1 -1
- package/ui-dist/assets/{index-D9BvbNaI.js → index-UYX_NusT.js} +1 -1
- package/ui-dist/assets/{index-NQ7W1fVx.js → index-YRMtF6yt.js} +1 -1
- package/ui-dist/assets/{index-DFUZunT4.js → index-vLw8ePcI.js} +1 -1
- package/ui-dist/assets/{infoDiagram-LFFYTUFH-gH2pB9Z5.js → infoDiagram-LFFYTUFH-BiGZfi6t.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-PHBUUO56-_YYgDJmL.js → ishikawaDiagram-PHBUUO56-xFLxqe7m.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-4ABVD52K-BP16ThZh.js → journeyDiagram-4ABVD52K-Dhdi3zLq.js} +1 -1
- package/ui-dist/assets/{kanban-definition-K7BYSVSG-Bb2jO2ip.js → kanban-definition-K7BYSVSG-1PFKwhyR.js} +1 -1
- package/ui-dist/assets/{layout-Dyt3Stou.js → layout-D-RdDLxB.js} +1 -1
- package/ui-dist/assets/{linear-DGoUa7H3.js → linear-CM_hKyXh.js} +1 -1
- package/ui-dist/assets/{mermaid.core-C9bwu5DH.js → mermaid.core-kcWOo-vw.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-YRQLILUH-B8dXWLWg.js → mindmap-definition-YRQLILUH-_FMmdxut.js} +1 -1
- package/ui-dist/assets/{pieDiagram-SKSYHLDU-HFm9Hlkx.js → pieDiagram-SKSYHLDU-BB4YKm_Z.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-337W2JSQ-DInXRuNk.js → quadrantDiagram-337W2JSQ-B5FjfpaZ.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-Z7DCOOCP-BVGcY8jr.js → requirementDiagram-Z7DCOOCP-P2DTinVN.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-WA2Y5GQK-CK7fGzIz.js → sankeyDiagram-WA2Y5GQK-B3JFw9p8.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-2WXFIKYE-DYM0BQ8r.js → sequenceDiagram-2WXFIKYE-BAoe0hQh.js} +1 -1
- package/ui-dist/assets/{stateDiagram-RAJIS63D-CpGw55Jr.js → stateDiagram-RAJIS63D-CqIVM0ML.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-Bap8bgc0.js +1 -0
- package/ui-dist/assets/{timeline-definition-YZTLITO2-qMn0Wu78.js → timeline-definition-YZTLITO2-bWN-PBLQ.js} +1 -1
- package/ui-dist/assets/{treemap-KZPCXAKY-BFnIvDVd.js → treemap-KZPCXAKY-DOjysPKc.js} +1 -1
- package/ui-dist/assets/{vennDiagram-LZ73GAT5-CNXH2jvg.js → vennDiagram-LZ73GAT5-C3Ox1wH7.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-JWTSCODW-BdWvspZ8.js → xychartDiagram-JWTSCODW-KjKGmpdD.js} +1 -1
- package/ui-dist/index.html +1 -1
- package/ui-dist/assets/channel-DF0aDYe6.js +0 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-cpGCFxCY.js +0 -1
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-cpGCFxCY.js +0 -1
- package/ui-dist/assets/clone-CxaKW7-X.js +0 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-Cz3uYiP4.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../sdk/src/define-plugin.ts", "../../../sdk/src/worker-rpc-host.ts", "../../../sdk/src/protocol.ts", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js", "../../../../shared/src/constants.ts", "../../../../shared/src/validators/instance.ts", "../../../../shared/src/validators/budget.ts", "../../../../shared/src/validators/organization.ts", "../../../../shared/src/validators/secret.ts", "../../../../shared/src/validators/model-fallbacks.ts", "../../../../shared/src/validators/organization-intelligence-profile.ts", "../../../../shared/src/validators/resource.ts", "../../../../shared/src/validators/chat.ts", "../../../../shared/src/validators/organization-skill.ts", "../../../../shared/src/validators/adapter-skills.ts", "../../../../shared/src/validators/organization-portability.ts", "../../../../shared/src/validators/agent.ts", "../../../../shared/src/validators/project.ts", "../../../../shared/src/validators/issue.ts", "../../../../shared/src/validators/work-product.ts", "../../../../shared/src/validators/execution-workspace.ts", "../../../../shared/src/validators/workspace-backup.ts", "../../../../shared/src/validators/goal.ts", "../../../../shared/src/validators/approval.ts", "../../../../shared/src/validators/automation.ts", "../../../../shared/src/validators/calendar.ts", "../../../../shared/src/validators/cost.ts", "../../../../shared/src/validators/finance.ts", "../../../../shared/src/validators/asset.ts", "../../../../shared/src/validators/access.ts", "../../../../shared/src/validators/plugin.ts", "../../../../shared/src/api.ts", "../../../../shared/src/organization-skill-reference.ts", "../../../../shared/src/project-mentions.ts", "../../../../shared/src/config-schema.ts", "../src/constants.ts", "../src/linear-api.ts", "../src/worker.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * `definePlugin` \u2014 the top-level helper for authoring a Rudder plugin.\n *\n * Plugin authors call `definePlugin()` and export the result as the default\n * export from their worker entrypoint. The host imports the worker module,\n * calls `setup()` with a `PluginContext`, and from that point the plugin\n * responds to events, jobs, webhooks, and UI requests through the context.\n *\n * @see PLUGIN_SPEC.md \u00A714.1 \u2014 Example SDK Shape\n *\n * @example\n * ```ts\n * // dist/worker.ts\n * import { definePlugin } from \"@rudderhq/plugin-sdk\";\n *\n * export default definePlugin({\n * async setup(ctx) {\n * ctx.logger.info(\"Linear sync plugin starting\");\n *\n * // Subscribe to events\n * ctx.events.on(\"issue.created\", async (event) => {\n * const config = await ctx.config.get();\n * await ctx.http.fetch(`https://api.linear.app/...`, {\n * method: \"POST\",\n * headers: { Authorization: `Bearer ${await ctx.secrets.resolve(config.apiKeyRef as string)}` },\n * body: JSON.stringify({ title: event.payload.title }),\n * });\n * });\n *\n * // Register a job handler\n * ctx.jobs.register(\"full-sync\", async (job) => {\n * ctx.logger.info(\"Running full-sync job\", { runId: job.runId });\n * // ... sync logic\n * });\n *\n * // Register data for the UI\n * ctx.data.register(\"sync-health\", async ({ orgId }) => {\n * const state = await ctx.state.get({\n * scopeKind: \"company\",\n * scopeId: String(orgId),\n * stateKey: \"last-sync\",\n * });\n * return { lastSync: state };\n * });\n * },\n * });\n * ```\n */\n\nimport type { PluginContext } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Health check result\n// ---------------------------------------------------------------------------\n\n/**\n * Optional plugin-reported diagnostics returned from the `health()` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.2 \u2014 `health`\n */\nexport interface PluginHealthDiagnostics {\n /** Machine-readable status: `\"ok\"` | `\"degraded\"` | `\"error\"`. */\n status: \"ok\" | \"degraded\" | \"error\";\n /** Human-readable description of the current health state. */\n message?: string;\n /** Plugin-reported key-value diagnostics (e.g. connection status, queue depth). */\n details?: Record<string, unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// Config validation result\n// ---------------------------------------------------------------------------\n\n/**\n * Result returned from the `validateConfig()` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.3 \u2014 `validateConfig`\n */\nexport interface PluginConfigValidationResult {\n /** Whether the config is valid. */\n ok: boolean;\n /** Non-fatal warnings about the config. */\n warnings?: string[];\n /** Validation errors (populated when `ok` is `false`). */\n errors?: string[];\n}\n\n// ---------------------------------------------------------------------------\n// Webhook handler input\n// ---------------------------------------------------------------------------\n\n/**\n * Input received by the plugin worker's `handleWebhook` handler.\n *\n * @see PLUGIN_SPEC.md \u00A713.7 \u2014 `handleWebhook`\n */\nexport interface PluginWebhookInput {\n /** Endpoint key matching the manifest declaration. */\n endpointKey: string;\n /** Inbound request headers. */\n headers: Record<string, string | string[]>;\n /** Raw request body as a UTF-8 string. */\n rawBody: string;\n /** Parsed JSON body (if applicable and parseable). */\n parsedBody?: unknown;\n /** Unique request identifier for idempotency checks. */\n requestId: string;\n}\n\n// ---------------------------------------------------------------------------\n// Plugin definition\n// ---------------------------------------------------------------------------\n\n/**\n * The plugin definition shape passed to `definePlugin()`.\n *\n * The only required field is `setup`, which receives the `PluginContext` and\n * is where the plugin registers its handlers (events, jobs, data, actions,\n * tools, etc.).\n *\n * All other lifecycle hooks are optional. If a hook is not implemented the\n * host applies default behaviour (e.g. restarting the worker on config change\n * instead of calling `onConfigChanged`).\n *\n * @see PLUGIN_SPEC.md \u00A713 \u2014 Host-Worker Protocol\n */\nexport interface PluginDefinition {\n /**\n * Called once when the plugin worker starts up, after `initialize` completes.\n *\n * This is where the plugin registers all its handlers: event subscriptions,\n * job handlers, data/action handlers, and tool registrations. Registration\n * must be synchronous after `setup` resolves \u2014 do not register handlers\n * inside async callbacks that may resolve after `setup` returns.\n *\n * @param ctx - The full plugin context provided by the host\n */\n setup(ctx: PluginContext): Promise<void>;\n\n /**\n * Called when the host wants to know if the plugin is healthy.\n *\n * The host polls this on a regular interval and surfaces the result in the\n * plugin health dashboard. If not implemented, the host infers health from\n * worker process liveness.\n *\n * @see PLUGIN_SPEC.md \u00A713.2 \u2014 `health`\n */\n onHealth?(): Promise<PluginHealthDiagnostics>;\n\n /**\n * Called when the operator updates the plugin's instance configuration at\n * runtime, without restarting the worker.\n *\n * If not implemented, the host restarts the worker to apply the new config.\n *\n * @param newConfig - The newly resolved configuration\n * @see PLUGIN_SPEC.md \u00A713.4 \u2014 `configChanged`\n */\n onConfigChanged?(newConfig: Record<string, unknown>): Promise<void>;\n\n /**\n * Called when the host is about to shut down the plugin worker.\n *\n * The worker has at most 10 seconds (configurable via plugin config) to\n * finish in-flight work and resolve this promise. After the deadline the\n * host sends SIGTERM, then SIGKILL.\n *\n * @see PLUGIN_SPEC.md \u00A712.5 \u2014 Graceful Shutdown Policy\n */\n onShutdown?(): Promise<void>;\n\n /**\n * Called to validate the current plugin configuration.\n *\n * The host calls this:\n * - after the plugin starts (to surface config errors immediately)\n * - after the operator saves a new config (to validate before persisting)\n * - via the \"Test Connection\" button in the settings UI\n *\n * @param config - The configuration to validate\n * @see PLUGIN_SPEC.md \u00A713.3 \u2014 `validateConfig`\n */\n onValidateConfig?(config: Record<string, unknown>): Promise<PluginConfigValidationResult>;\n\n /**\n * Called to handle an inbound webhook delivery.\n *\n * The host routes `POST /api/plugins/:pluginId/webhooks/:endpointKey` to\n * this handler. The plugin is responsible for signature verification using\n * a resolved secret ref.\n *\n * If not implemented but webhooks are declared in the manifest, the host\n * returns HTTP 501 for webhook deliveries.\n *\n * @param input - Webhook delivery metadata and payload\n * @see PLUGIN_SPEC.md \u00A713.7 \u2014 `handleWebhook`\n */\n onWebhook?(input: PluginWebhookInput): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// PaperclipPlugin \u2014 the sealed object returned by definePlugin()\n// ---------------------------------------------------------------------------\n\n/**\n * The sealed plugin object returned by `definePlugin()`.\n *\n * Plugin authors export this as the default export from their worker\n * entrypoint. The host imports it and calls the lifecycle methods.\n *\n * @see PLUGIN_SPEC.md \u00A714 \u2014 SDK Surface\n */\nexport interface PaperclipPlugin {\n /** The original plugin definition passed to `definePlugin()`. */\n readonly definition: PluginDefinition;\n}\n\n// ---------------------------------------------------------------------------\n// definePlugin \u2014 top-level factory\n// ---------------------------------------------------------------------------\n\n/**\n * Define a Rudder plugin.\n *\n * Call this function in your worker entrypoint and export the result as the\n * default export. The host will import the module and call lifecycle methods\n * on the returned object.\n *\n * @param definition - Plugin lifecycle handlers\n * @returns A sealed `PaperclipPlugin` object for the host to consume\n *\n * @example\n * ```ts\n * import { definePlugin } from \"@rudderhq/plugin-sdk\";\n *\n * export default definePlugin({\n * async setup(ctx) {\n * ctx.logger.info(\"Plugin started\");\n * ctx.events.on(\"issue.created\", async (event) => {\n * // handle event\n * });\n * },\n *\n * async onHealth() {\n * return { status: \"ok\" };\n * },\n * });\n * ```\n *\n * @see PLUGIN_SPEC.md \u00A714.1 \u2014 Example SDK Shape\n */\nexport function definePlugin(definition: PluginDefinition): PaperclipPlugin {\n return Object.freeze({ definition });\n}\n", "/**\n * Worker-side RPC host \u2014 runs inside the child process spawned by the host.\n *\n * This module is the worker-side counterpart to the server's\n * `PluginWorkerManager`. It:\n *\n * 1. Reads newline-delimited JSON-RPC 2.0 requests from **stdin**\n * 2. Dispatches them to the appropriate plugin handler (events, jobs, tools, \u2026)\n * 3. Writes JSON-RPC 2.0 responses back on **stdout**\n * 4. Provides a concrete `PluginContext` whose SDK client methods (e.g.\n * `ctx.state.get()`, `ctx.events.emit()`) send JSON-RPC requests to the\n * host on stdout and await responses on stdin.\n *\n * ## Message flow\n *\n * ```\n * Host (parent) Worker (this module)\n * | |\n * |--- request(initialize) -------------> | \u2192 calls plugin.setup(ctx)\n * |<-- response(ok:true) ---------------- |\n * | |\n * |--- notification(onEvent) -----------> | \u2192 dispatches to registered handler\n * | |\n * |<-- request(state.get) --------------- | \u2190 SDK client call from plugin code\n * |--- response(result) ----------------> |\n * | |\n * |--- request(shutdown) ---------------> | \u2192 calls plugin.onShutdown()\n * |<-- response(void) ------------------ |\n * | (process exits)\n * ```\n *\n * @see PLUGIN_SPEC.md \u00A712 \u2014 Process Model\n * @see PLUGIN_SPEC.md \u00A713 \u2014 Host-Worker Protocol\n * @see PLUGIN_SPEC.md \u00A714 \u2014 SDK Surface\n */\n\nimport path from \"node:path\";\nimport { createInterface, type Interface as ReadlineInterface } from \"node:readline\";\nimport { fileURLToPath } from \"node:url\";\n\nimport type { PaperclipPluginManifestV1 } from \"@rudderhq/shared\";\n\nimport type { PaperclipPlugin } from \"./define-plugin.js\";\nimport type {\n PluginHealthDiagnostics,\n PluginConfigValidationResult,\n PluginWebhookInput,\n} from \"./define-plugin.js\";\nimport type {\n PluginContext,\n PluginEvent,\n PluginJobContext,\n PluginLauncherRegistration,\n ScopeKey,\n ToolRunContext,\n ToolResult,\n EventFilter,\n AgentSessionEvent,\n} from \"./types.js\";\nimport type {\n JsonRpcId,\n JsonRpcRequest,\n JsonRpcResponse,\n InitializeParams,\n InitializeResult,\n ConfigChangedParams,\n ValidateConfigParams,\n OnEventParams,\n RunJobParams,\n GetDataParams,\n PerformActionParams,\n ExecuteToolParams,\n WorkerToHostMethodName,\n WorkerToHostMethods,\n} from \"./protocol.js\";\nimport {\n JSONRPC_VERSION,\n JSONRPC_ERROR_CODES,\n PLUGIN_RPC_ERROR_CODES,\n createRequest,\n createSuccessResponse,\n createErrorResponse,\n createNotification,\n parseMessage,\n serializeMessage,\n isJsonRpcRequest,\n isJsonRpcResponse,\n isJsonRpcNotification,\n isJsonRpcSuccessResponse,\n isJsonRpcErrorResponse,\n JsonRpcParseError,\n JsonRpcCallError,\n} from \"./protocol.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/**\n * Options for starting the worker-side RPC host.\n */\nexport interface WorkerRpcHostOptions {\n /**\n * The plugin definition returned by `definePlugin()`.\n *\n * The worker entrypoint should import its plugin and pass it here.\n */\n plugin: PaperclipPlugin;\n\n /**\n * Input stream to read JSON-RPC messages from.\n * Defaults to `process.stdin`.\n */\n stdin?: NodeJS.ReadableStream;\n\n /**\n * Output stream to write JSON-RPC messages to.\n * Defaults to `process.stdout`.\n */\n stdout?: NodeJS.WritableStream;\n\n /**\n * Default timeout (ms) for worker\u2192host RPC calls.\n * Defaults to 30 000 ms.\n */\n rpcTimeoutMs?: number;\n}\n\n/**\n * A running worker RPC host instance.\n *\n * Returned by `startWorkerRpcHost()`. Callers (usually just the worker\n * bootstrap) hold a reference so they can inspect status or force-stop.\n */\nexport interface WorkerRpcHost {\n /** Whether the host is currently running and listening for messages. */\n readonly running: boolean;\n\n /**\n * Stop the RPC host immediately. Closes readline, rejects pending\n * outbound calls, and does NOT call the plugin's shutdown hook (that\n * should have already been called via the `shutdown` RPC method).\n */\n stop(): void;\n}\n\n// ---------------------------------------------------------------------------\n// Internal: event registration\n// ---------------------------------------------------------------------------\n\ninterface EventRegistration {\n name: string;\n filter?: EventFilter;\n fn: (event: PluginEvent) => Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Default timeout for worker\u2192host RPC calls. */\nconst DEFAULT_RPC_TIMEOUT_MS = 30_000;\n\n// ---------------------------------------------------------------------------\n// startWorkerRpcHost\n// ---------------------------------------------------------------------------\n\n/**\n * Options for runWorker when testing (optional stdio to avoid using process streams).\n * When both stdin and stdout are provided, the \"is main module\" check is skipped\n * and the host is started with these streams. Used by tests.\n */\nexport interface RunWorkerOptions {\n stdin?: NodeJS.ReadableStream;\n stdout?: NodeJS.WritableStream;\n}\n\n/**\n * Start the worker when this module is the process entrypoint.\n *\n * Call this at the bottom of your worker file so that when the host runs\n * `node dist/worker.js`, the RPC host starts and the process stays alive.\n * When the module is imported (e.g. for re-exports or tests), nothing runs.\n *\n * When `options.stdin` and `options.stdout` are provided (e.g. in tests),\n * the main-module check is skipped and the host is started with those streams.\n *\n * @example\n * ```ts\n * const plugin = definePlugin({ ... });\n * export default plugin;\n * runWorker(plugin, import.meta.url);\n * ```\n */\nexport function runWorker(\n plugin: PaperclipPlugin,\n moduleUrl: string,\n options?: RunWorkerOptions,\n): WorkerRpcHost | void {\n if (\n options?.stdin != null &&\n options?.stdout != null\n ) {\n return startWorkerRpcHost({\n plugin,\n stdin: options.stdin,\n stdout: options.stdout,\n });\n }\n const entry = process.argv[1];\n if (typeof entry !== \"string\") return;\n const thisFile = path.resolve(fileURLToPath(moduleUrl));\n const entryPath = path.resolve(entry);\n if (thisFile === entryPath) {\n startWorkerRpcHost({ plugin });\n }\n}\n\n/**\n * Start the worker-side RPC host.\n *\n * This function is typically called from a thin bootstrap script that is the\n * actual entrypoint of the child process:\n *\n * ```ts\n * // worker-bootstrap.ts\n * import plugin from \"./worker.js\";\n * import { startWorkerRpcHost } from \"@rudderhq/plugin-sdk\";\n *\n * startWorkerRpcHost({ plugin });\n * ```\n *\n * The host begins listening on stdin immediately. It does NOT call\n * `plugin.definition.setup()` yet \u2014 that happens when the host sends the\n * `initialize` RPC.\n *\n * @returns A handle for inspecting or stopping the RPC host\n */\nexport function startWorkerRpcHost(options: WorkerRpcHostOptions): WorkerRpcHost {\n const { plugin } = options;\n const stdinStream = options.stdin ?? process.stdin;\n const stdoutStream = options.stdout ?? process.stdout;\n const rpcTimeoutMs = options.rpcTimeoutMs ?? DEFAULT_RPC_TIMEOUT_MS;\n\n // -----------------------------------------------------------------------\n // State\n // -----------------------------------------------------------------------\n\n let running = true;\n let initialized = false;\n let manifest: PaperclipPluginManifestV1 | null = null;\n let currentConfig: Record<string, unknown> = {};\n\n // Plugin handler registrations (populated during setup())\n const eventHandlers: EventRegistration[] = [];\n const jobHandlers = new Map<string, (job: PluginJobContext) => Promise<void>>();\n const launcherRegistrations = new Map<string, PluginLauncherRegistration>();\n const dataHandlers = new Map<string, (params: Record<string, unknown>) => Promise<unknown>>();\n const actionHandlers = new Map<string, (params: Record<string, unknown>) => Promise<unknown>>();\n const toolHandlers = new Map<string, {\n declaration: Pick<import(\"@rudderhq/shared\").PluginToolDeclaration, \"displayName\" | \"description\" | \"parametersSchema\">;\n fn: (params: unknown, runCtx: ToolRunContext) => Promise<ToolResult>;\n }>();\n\n // Agent session event callbacks (populated by sendMessage, cleared by close)\n const sessionEventCallbacks = new Map<string, (event: AgentSessionEvent) => void>();\n\n // Pending outbound (worker\u2192host) requests\n const pendingRequests = new Map<string | number, {\n resolve: (response: JsonRpcResponse) => void;\n timer: ReturnType<typeof setTimeout>;\n }>();\n let nextOutboundId = 1;\n const MAX_OUTBOUND_ID = Number.MAX_SAFE_INTEGER - 1;\n\n // -----------------------------------------------------------------------\n // Outbound messaging (worker \u2192 host)\n // -----------------------------------------------------------------------\n\n function sendMessage(message: unknown): void {\n if (!running) return;\n const serialized = serializeMessage(message as any);\n stdoutStream.write(serialized);\n }\n\n /**\n * Send a typed JSON-RPC request to the host and await the response.\n */\n function callHost<M extends WorkerToHostMethodName>(\n method: M,\n params: WorkerToHostMethods[M][0],\n timeoutMs?: number,\n ): Promise<WorkerToHostMethods[M][1]> {\n return new Promise<WorkerToHostMethods[M][1]>((resolve, reject) => {\n if (!running) {\n reject(new Error(`Cannot call \"${method}\" \u2014 worker RPC host is not running`));\n return;\n }\n\n if (nextOutboundId >= MAX_OUTBOUND_ID) {\n nextOutboundId = 1;\n }\n const id = nextOutboundId++;\n const timeout = timeoutMs ?? rpcTimeoutMs;\n let settled = false;\n\n const settle = <T>(fn: (value: T) => void, value: T): void => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n pendingRequests.delete(id);\n fn(value);\n };\n\n const timer = setTimeout(() => {\n settle(\n reject,\n new JsonRpcCallError({\n code: PLUGIN_RPC_ERROR_CODES.TIMEOUT,\n message: `Worker\u2192host call \"${method}\" timed out after ${timeout}ms`,\n }),\n );\n }, timeout);\n\n pendingRequests.set(id, {\n resolve: (response: JsonRpcResponse) => {\n if (isJsonRpcSuccessResponse(response)) {\n settle(resolve, response.result as WorkerToHostMethods[M][1]);\n } else if (isJsonRpcErrorResponse(response)) {\n settle(reject, new JsonRpcCallError(response.error));\n } else {\n settle(reject, new Error(`Unexpected response format for \"${method}\"`));\n }\n },\n timer,\n });\n\n try {\n const request = createRequest(method, params, id);\n sendMessage(request);\n } catch (err) {\n settle(reject, err instanceof Error ? err : new Error(String(err)));\n }\n });\n }\n\n /**\n * Send a JSON-RPC notification to the host (fire-and-forget).\n */\n function notifyHost(method: string, params: unknown): void {\n try {\n sendMessage(createNotification(method, params));\n } catch {\n // Swallow \u2014 the host may have closed stdin\n }\n }\n\n // -----------------------------------------------------------------------\n // Build the PluginContext (SDK surface for plugin code)\n // -----------------------------------------------------------------------\n\n function buildContext(): PluginContext {\n return {\n get manifest() {\n if (!manifest) throw new Error(\"Plugin context accessed before initialization\");\n return manifest;\n },\n\n config: {\n async get() {\n return callHost(\"config.get\", {} as Record<string, never>);\n },\n },\n\n events: {\n on(\n name: string,\n filterOrFn: EventFilter | ((event: PluginEvent) => Promise<void>),\n maybeFn?: (event: PluginEvent) => Promise<void>,\n ): () => void {\n let registration: EventRegistration;\n if (typeof filterOrFn === \"function\") {\n registration = { name, fn: filterOrFn };\n } else {\n if (!maybeFn) throw new Error(\"Event handler function is required\");\n registration = { name, filter: filterOrFn, fn: maybeFn };\n }\n eventHandlers.push(registration);\n // Register subscription on the host so events are forwarded to this worker\n void callHost(\"events.subscribe\", { eventPattern: name, filter: registration.filter ?? null }).catch((err) => {\n notifyHost(\"log\", {\n level: \"warn\",\n message: `Failed to subscribe to event \"${name}\" on host: ${err instanceof Error ? err.message : String(err)}`,\n });\n });\n return () => {\n const idx = eventHandlers.indexOf(registration);\n if (idx !== -1) eventHandlers.splice(idx, 1);\n };\n },\n\n async emit(name: string, orgId: string, payload: unknown): Promise<void> {\n await callHost(\"events.emit\", { name, orgId, payload });\n },\n },\n\n jobs: {\n register(key: string, fn: (job: PluginJobContext) => Promise<void>): void {\n jobHandlers.set(key, fn);\n },\n },\n\n launchers: {\n register(launcher: PluginLauncherRegistration): void {\n launcherRegistrations.set(launcher.id, launcher);\n },\n },\n\n http: {\n async fetch(url: string, init?: RequestInit): Promise<Response> {\n const serializedInit: Record<string, unknown> = {};\n if (init) {\n if (init.method) serializedInit.method = init.method;\n if (init.headers) {\n // Normalize headers to a plain object\n if (init.headers instanceof Headers) {\n const obj: Record<string, string> = {};\n init.headers.forEach((v, k) => { obj[k] = v; });\n serializedInit.headers = obj;\n } else if (Array.isArray(init.headers)) {\n const obj: Record<string, string> = {};\n for (const [k, v] of init.headers) obj[k] = v;\n serializedInit.headers = obj;\n } else {\n serializedInit.headers = init.headers;\n }\n }\n if (init.body !== undefined && init.body !== null) {\n serializedInit.body = typeof init.body === \"string\"\n ? init.body\n : String(init.body);\n }\n }\n\n const result = await callHost(\"http.fetch\", {\n url,\n init: Object.keys(serializedInit).length > 0 ? serializedInit : undefined,\n });\n\n // Reconstruct a Response-like object from the serialized result\n return new Response(result.body, {\n status: result.status,\n statusText: result.statusText,\n headers: result.headers,\n });\n },\n },\n\n secrets: {\n async resolve(secretRef: string): Promise<string> {\n return callHost(\"secrets.resolve\", { secretRef });\n },\n },\n\n activity: {\n async log(entry): Promise<void> {\n await callHost(\"activity.log\", {\n orgId: entry.orgId,\n message: entry.message,\n entityType: entry.entityType,\n entityId: entry.entityId,\n metadata: entry.metadata,\n });\n },\n },\n\n state: {\n async get(input: ScopeKey): Promise<unknown> {\n return callHost(\"state.get\", {\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n namespace: input.namespace,\n stateKey: input.stateKey,\n });\n },\n\n async set(input: ScopeKey, value: unknown): Promise<void> {\n await callHost(\"state.set\", {\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n namespace: input.namespace,\n stateKey: input.stateKey,\n value,\n });\n },\n\n async delete(input: ScopeKey): Promise<void> {\n await callHost(\"state.delete\", {\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n namespace: input.namespace,\n stateKey: input.stateKey,\n });\n },\n },\n\n entities: {\n async upsert(input) {\n return callHost(\"entities.upsert\", {\n entityType: input.entityType,\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n externalId: input.externalId,\n title: input.title,\n status: input.status,\n data: input.data,\n });\n },\n\n async list(query) {\n return callHost(\"entities.list\", {\n entityType: query.entityType,\n scopeKind: query.scopeKind,\n scopeId: query.scopeId,\n externalId: query.externalId,\n limit: query.limit,\n offset: query.offset,\n });\n },\n },\n\n projects: {\n async list(input) {\n return callHost(\"projects.list\", {\n orgId: input.orgId,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(projectId: string, orgId: string) {\n return callHost(\"projects.get\", { projectId, orgId });\n },\n\n async listWorkspaces(projectId: string, orgId: string) {\n return callHost(\"projects.listWorkspaces\", { projectId, orgId });\n },\n\n async getPrimaryWorkspace(projectId: string, orgId: string) {\n return callHost(\"projects.getPrimaryWorkspace\", { projectId, orgId });\n },\n\n async getWorkspaceForIssue(issueId: string, orgId: string) {\n return callHost(\"projects.getWorkspaceForIssue\", { issueId, orgId });\n },\n },\n\n organizations: {\n async list(input) {\n return callHost(\"organizations.list\", {\n limit: input?.limit,\n offset: input?.offset,\n });\n },\n\n async get(orgId: string) {\n return callHost(\"organizations.get\", { orgId });\n },\n },\n\n issues: {\n async list(input) {\n return callHost(\"issues.list\", {\n orgId: input.orgId,\n projectId: input.projectId,\n assigneeAgentId: input.assigneeAgentId,\n reviewerAgentId: input.reviewerAgentId,\n reviewerUserId: input.reviewerUserId,\n status: input.status,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(issueId: string, orgId: string) {\n return callHost(\"issues.get\", { issueId, orgId });\n },\n\n async create(input) {\n return callHost(\"issues.create\", {\n orgId: input.orgId,\n projectId: input.projectId,\n goalId: input.goalId,\n parentId: input.parentId,\n title: input.title,\n description: input.description,\n status: input.status,\n priority: input.priority,\n assigneeAgentId: input.assigneeAgentId,\n reviewerAgentId: input.reviewerAgentId,\n reviewerUserId: input.reviewerUserId,\n });\n },\n\n async update(issueId: string, patch, orgId: string) {\n return callHost(\"issues.update\", {\n issueId,\n patch: patch as Record<string, unknown>,\n orgId,\n });\n },\n\n async listComments(issueId: string, orgId: string) {\n return callHost(\"issues.listComments\", { issueId, orgId });\n },\n\n async createComment(issueId: string, body: string, orgId: string) {\n return callHost(\"issues.createComment\", { issueId, body, orgId });\n },\n\n documents: {\n async list(issueId: string, orgId: string) {\n return callHost(\"issues.documents.list\", { issueId, orgId });\n },\n\n async get(issueId: string, key: string, orgId: string) {\n return callHost(\"issues.documents.get\", { issueId, key, orgId });\n },\n\n async upsert(input) {\n return callHost(\"issues.documents.upsert\", {\n issueId: input.issueId,\n key: input.key,\n body: input.body,\n orgId: input.orgId,\n title: input.title,\n format: input.format,\n changeSummary: input.changeSummary,\n });\n },\n\n async delete(issueId: string, key: string, orgId: string) {\n return callHost(\"issues.documents.delete\", { issueId, key, orgId });\n },\n },\n },\n\n agents: {\n async list(input) {\n return callHost(\"agents.list\", {\n orgId: input.orgId,\n status: input.status,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(agentId: string, orgId: string) {\n return callHost(\"agents.get\", { agentId, orgId });\n },\n\n async pause(agentId: string, orgId: string) {\n return callHost(\"agents.pause\", { agentId, orgId });\n },\n\n async resume(agentId: string, orgId: string) {\n return callHost(\"agents.resume\", { agentId, orgId });\n },\n\n async invoke(agentId: string, orgId: string, opts: { prompt: string; reason?: string }) {\n return callHost(\"agents.invoke\", { agentId, orgId, prompt: opts.prompt, reason: opts.reason });\n },\n\n sessions: {\n async create(agentId: string, orgId: string, opts?: { taskKey?: string; reason?: string }) {\n return callHost(\"agents.sessions.create\", {\n agentId,\n orgId,\n taskKey: opts?.taskKey,\n reason: opts?.reason,\n });\n },\n\n async list(agentId: string, orgId: string) {\n return callHost(\"agents.sessions.list\", { agentId, orgId });\n },\n\n async sendMessage(sessionId: string, orgId: string, opts: {\n prompt: string;\n reason?: string;\n onEvent?: (event: AgentSessionEvent) => void;\n }) {\n if (opts.onEvent) {\n sessionEventCallbacks.set(sessionId, opts.onEvent);\n }\n try {\n return await callHost(\"agents.sessions.sendMessage\", {\n sessionId,\n orgId,\n prompt: opts.prompt,\n reason: opts.reason,\n });\n } catch (err) {\n sessionEventCallbacks.delete(sessionId);\n throw err;\n }\n },\n\n async close(sessionId: string, orgId: string) {\n sessionEventCallbacks.delete(sessionId);\n await callHost(\"agents.sessions.close\", { sessionId, orgId });\n },\n },\n },\n\n goals: {\n async list(input) {\n return callHost(\"goals.list\", {\n orgId: input.orgId,\n level: input.level,\n status: input.status,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(goalId: string, orgId: string) {\n return callHost(\"goals.get\", { goalId, orgId });\n },\n\n async create(input) {\n return callHost(\"goals.create\", {\n orgId: input.orgId,\n title: input.title,\n description: input.description,\n level: input.level,\n status: input.status,\n parentId: input.parentId,\n ownerAgentId: input.ownerAgentId,\n });\n },\n\n async update(goalId: string, patch, orgId: string) {\n return callHost(\"goals.update\", {\n goalId,\n patch: patch as Record<string, unknown>,\n orgId,\n });\n },\n },\n\n data: {\n register(key: string, handler: (params: Record<string, unknown>) => Promise<unknown>): void {\n dataHandlers.set(key, handler);\n },\n },\n\n actions: {\n register(key: string, handler: (params: Record<string, unknown>) => Promise<unknown>): void {\n actionHandlers.set(key, handler);\n },\n },\n\n streams: (() => {\n // Track channel \u2192 orgId so emit/close don't require orgId\n const channelOrganizationMap = new Map<string, string>();\n return {\n open(channel: string, orgId: string): void {\n channelOrganizationMap.set(channel, orgId);\n notifyHost(\"streams.open\", { channel, orgId });\n },\n emit(channel: string, event: unknown): void {\n const orgId = channelOrganizationMap.get(channel) ?? \"\";\n notifyHost(\"streams.emit\", { channel, orgId, event });\n },\n close(channel: string): void {\n const orgId = channelOrganizationMap.get(channel) ?? \"\";\n channelOrganizationMap.delete(channel);\n notifyHost(\"streams.close\", { channel, orgId });\n },\n };\n })(),\n\n tools: {\n register(\n name: string,\n declaration: Pick<import(\"@rudderhq/shared\").PluginToolDeclaration, \"displayName\" | \"description\" | \"parametersSchema\">,\n fn: (params: unknown, runCtx: ToolRunContext) => Promise<ToolResult>,\n ): void {\n toolHandlers.set(name, { declaration, fn });\n },\n },\n\n metrics: {\n async write(name: string, value: number, tags?: Record<string, string>): Promise<void> {\n await callHost(\"metrics.write\", { name, value, tags });\n },\n },\n\n logger: {\n info(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"info\", message, meta });\n },\n warn(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"warn\", message, meta });\n },\n error(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"error\", message, meta });\n },\n debug(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"debug\", message, meta });\n },\n },\n };\n }\n\n const ctx = buildContext();\n\n // -----------------------------------------------------------------------\n // Inbound message handling (host \u2192 worker)\n // -----------------------------------------------------------------------\n\n /**\n * Handle an incoming JSON-RPC request from the host.\n *\n * Dispatches to the correct handler based on the method name.\n */\n async function handleHostRequest(request: JsonRpcRequest): Promise<void> {\n const { id, method, params } = request;\n\n try {\n const result = await dispatchMethod(method, params);\n sendMessage(createSuccessResponse(id, result ?? null));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n // Propagate specific error codes from handler errors (e.g.\n // METHOD_NOT_FOUND, METHOD_NOT_IMPLEMENTED) \u2014 fall back to\n // WORKER_ERROR for untyped exceptions.\n const errorCode =\n typeof (err as any)?.code === \"number\"\n ? (err as any).code\n : PLUGIN_RPC_ERROR_CODES.WORKER_ERROR;\n\n sendMessage(createErrorResponse(id, errorCode, errorMessage));\n }\n }\n\n /**\n * Dispatch a host\u2192worker method call to the appropriate handler.\n */\n async function dispatchMethod(method: string, params: unknown): Promise<unknown> {\n switch (method) {\n case \"initialize\":\n return handleInitialize(params as InitializeParams);\n\n case \"health\":\n return handleHealth();\n\n case \"shutdown\":\n return handleShutdown();\n\n case \"validateConfig\":\n return handleValidateConfig(params as ValidateConfigParams);\n\n case \"configChanged\":\n return handleConfigChanged(params as ConfigChangedParams);\n\n case \"onEvent\":\n return handleOnEvent(params as OnEventParams);\n\n case \"runJob\":\n return handleRunJob(params as RunJobParams);\n\n case \"handleWebhook\":\n return handleWebhook(params as PluginWebhookInput);\n\n case \"getData\":\n return handleGetData(params as GetDataParams);\n\n case \"performAction\":\n return handlePerformAction(params as PerformActionParams);\n\n case \"executeTool\":\n return handleExecuteTool(params as ExecuteToolParams);\n\n default:\n throw Object.assign(\n new Error(`Unknown method: ${method}`),\n { code: JSONRPC_ERROR_CODES.METHOD_NOT_FOUND },\n );\n }\n }\n\n // -----------------------------------------------------------------------\n // Host\u2192Worker method handlers\n // -----------------------------------------------------------------------\n\n async function handleInitialize(params: InitializeParams): Promise<InitializeResult> {\n if (initialized) {\n throw new Error(\"Worker already initialized\");\n }\n\n manifest = params.manifest;\n currentConfig = params.config;\n\n // Call the plugin's setup function\n await plugin.definition.setup(ctx);\n\n initialized = true;\n\n // Report which optional methods this plugin implements\n const supportedMethods: string[] = [];\n if (plugin.definition.onValidateConfig) supportedMethods.push(\"validateConfig\");\n if (plugin.definition.onConfigChanged) supportedMethods.push(\"configChanged\");\n if (plugin.definition.onHealth) supportedMethods.push(\"health\");\n if (plugin.definition.onShutdown) supportedMethods.push(\"shutdown\");\n\n return { ok: true, supportedMethods };\n }\n\n async function handleHealth(): Promise<PluginHealthDiagnostics> {\n if (plugin.definition.onHealth) {\n return plugin.definition.onHealth();\n }\n // Default: report OK if the worker is alive\n return { status: \"ok\" };\n }\n\n async function handleShutdown(): Promise<void> {\n if (plugin.definition.onShutdown) {\n await plugin.definition.onShutdown();\n }\n\n // Schedule cleanup after we send the response.\n // Use setImmediate to let the response flush before exiting.\n // Only call process.exit() when running with real process streams.\n // When custom streams are provided (tests), just clean up.\n setImmediate(() => {\n cleanup();\n if (!options.stdin && !options.stdout) {\n process.exit(0);\n }\n });\n }\n\n async function handleValidateConfig(\n params: ValidateConfigParams,\n ): Promise<PluginConfigValidationResult> {\n if (!plugin.definition.onValidateConfig) {\n throw Object.assign(\n new Error(\"validateConfig is not implemented by this plugin\"),\n { code: PLUGIN_RPC_ERROR_CODES.METHOD_NOT_IMPLEMENTED },\n );\n }\n return plugin.definition.onValidateConfig(params.config);\n }\n\n async function handleConfigChanged(params: ConfigChangedParams): Promise<void> {\n if (!plugin.definition.onConfigChanged) {\n throw Object.assign(\n new Error(\"configChanged is not implemented by this plugin\"),\n { code: PLUGIN_RPC_ERROR_CODES.METHOD_NOT_IMPLEMENTED },\n );\n }\n\n currentConfig = params.config;\n await plugin.definition.onConfigChanged(params.config);\n }\n\n async function handleOnEvent(params: OnEventParams): Promise<void> {\n const event = params.event;\n\n for (const registration of eventHandlers) {\n // Check event type match\n const exactMatch = registration.name === event.eventType;\n const wildcardPluginAll =\n registration.name === \"plugin.*\" &&\n event.eventType.startsWith(\"plugin.\");\n const wildcardPluginOne =\n registration.name.endsWith(\".*\") &&\n event.eventType.startsWith(registration.name.slice(0, -1));\n\n if (!exactMatch && !wildcardPluginAll && !wildcardPluginOne) continue;\n\n // Check filter\n if (registration.filter && !allowsEvent(registration.filter, event)) continue;\n\n try {\n await registration.fn(event);\n } catch (err) {\n // Log error but continue processing other handlers so one failing\n // handler doesn't prevent the rest from running.\n notifyHost(\"log\", {\n level: \"error\",\n message: `Event handler for \"${registration.name}\" failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n meta: { eventType: event.eventType, stack: err instanceof Error ? err.stack : undefined },\n });\n }\n }\n }\n\n async function handleRunJob(params: RunJobParams): Promise<void> {\n const handler = jobHandlers.get(params.job.jobKey);\n if (!handler) {\n throw new Error(`No handler registered for job \"${params.job.jobKey}\"`);\n }\n await handler(params.job);\n }\n\n async function handleWebhook(params: PluginWebhookInput): Promise<void> {\n if (!plugin.definition.onWebhook) {\n throw Object.assign(\n new Error(\"handleWebhook is not implemented by this plugin\"),\n { code: PLUGIN_RPC_ERROR_CODES.METHOD_NOT_IMPLEMENTED },\n );\n }\n await plugin.definition.onWebhook(params);\n }\n\n async function handleGetData(params: GetDataParams): Promise<unknown> {\n const handler = dataHandlers.get(params.key);\n if (!handler) {\n throw new Error(`No data handler registered for key \"${params.key}\"`);\n }\n return handler(\n params.renderEnvironment === undefined\n ? params.params\n : { ...params.params, renderEnvironment: params.renderEnvironment },\n );\n }\n\n async function handlePerformAction(params: PerformActionParams): Promise<unknown> {\n const handler = actionHandlers.get(params.key);\n if (!handler) {\n throw new Error(`No action handler registered for key \"${params.key}\"`);\n }\n return handler(\n params.renderEnvironment === undefined\n ? params.params\n : { ...params.params, renderEnvironment: params.renderEnvironment },\n );\n }\n\n async function handleExecuteTool(params: ExecuteToolParams): Promise<ToolResult> {\n const entry = toolHandlers.get(params.toolName);\n if (!entry) {\n throw new Error(`No tool handler registered for \"${params.toolName}\"`);\n }\n return entry.fn(params.parameters, params.runContext);\n }\n\n // -----------------------------------------------------------------------\n // Event filter helper\n // -----------------------------------------------------------------------\n\n function allowsEvent(filter: EventFilter, event: PluginEvent): boolean {\n const payload = event.payload as Record<string, unknown> | undefined;\n\n if (filter.orgId !== undefined) {\n const orgId = event.orgId ?? String(payload?.orgId ?? \"\");\n if (orgId !== filter.orgId) return false;\n }\n\n if (filter.projectId !== undefined) {\n const projectId = event.entityType === \"project\"\n ? event.entityId\n : String(payload?.projectId ?? \"\");\n if (projectId !== filter.projectId) return false;\n }\n\n if (filter.agentId !== undefined) {\n const agentId = event.entityType === \"agent\"\n ? event.entityId\n : String(payload?.agentId ?? \"\");\n if (agentId !== filter.agentId) return false;\n }\n\n return true;\n }\n\n // -----------------------------------------------------------------------\n // Inbound response handling (host \u2192 worker, response to our outbound call)\n // -----------------------------------------------------------------------\n\n function handleHostResponse(response: JsonRpcResponse): void {\n const id = response.id;\n if (id === null || id === undefined) return;\n\n const pending = pendingRequests.get(id);\n if (!pending) return;\n\n clearTimeout(pending.timer);\n pendingRequests.delete(id);\n pending.resolve(response);\n }\n\n // -----------------------------------------------------------------------\n // Incoming line handler\n // -----------------------------------------------------------------------\n\n function handleLine(line: string): void {\n if (!line.trim()) return;\n\n let message: unknown;\n try {\n message = parseMessage(line);\n } catch (err) {\n if (err instanceof JsonRpcParseError) {\n // Send parse error response\n sendMessage(\n createErrorResponse(\n null,\n JSONRPC_ERROR_CODES.PARSE_ERROR,\n `Parse error: ${err.message}`,\n ),\n );\n }\n return;\n }\n\n if (isJsonRpcResponse(message)) {\n // This is a response to one of our outbound worker\u2192host calls\n handleHostResponse(message);\n } else if (isJsonRpcRequest(message)) {\n // This is a host\u2192worker RPC call \u2014 dispatch it\n handleHostRequest(message as JsonRpcRequest).catch((err) => {\n // Unhandled error in the async handler \u2014 send error response\n const errorMessage = err instanceof Error ? err.message : String(err);\n const errorCode = (err as any)?.code ?? PLUGIN_RPC_ERROR_CODES.WORKER_ERROR;\n try {\n sendMessage(\n createErrorResponse(\n (message as JsonRpcRequest).id,\n typeof errorCode === \"number\" ? errorCode : PLUGIN_RPC_ERROR_CODES.WORKER_ERROR,\n errorMessage,\n ),\n );\n } catch {\n // Cannot send response, stdout may be closed\n }\n });\n } else if (isJsonRpcNotification(message)) {\n // Dispatch host\u2192worker push notifications\n const notif = message as { method: string; params?: unknown };\n if (notif.method === \"agents.sessions.event\" && notif.params) {\n const event = notif.params as AgentSessionEvent;\n const cb = sessionEventCallbacks.get(event.sessionId);\n if (cb) cb(event);\n } else if (notif.method === \"onEvent\" && notif.params) {\n // Plugin event bus notifications \u2014 dispatch to registered event handlers\n handleOnEvent(notif.params as OnEventParams).catch((err) => {\n notifyHost(\"log\", {\n level: \"error\",\n message: `Failed to handle event notification: ${err instanceof Error ? err.message : String(err)}`,\n });\n });\n }\n }\n }\n\n // -----------------------------------------------------------------------\n // Cleanup\n // -----------------------------------------------------------------------\n\n function cleanup(): void {\n running = false;\n\n // Close readline\n if (readline) {\n readline.close();\n readline = null;\n }\n\n // Reject all pending outbound calls\n for (const [id, pending] of pendingRequests) {\n clearTimeout(pending.timer);\n pending.resolve(\n createErrorResponse(\n id,\n PLUGIN_RPC_ERROR_CODES.WORKER_UNAVAILABLE,\n \"Worker RPC host is shutting down\",\n ) as JsonRpcResponse,\n );\n }\n pendingRequests.clear();\n sessionEventCallbacks.clear();\n }\n\n // -----------------------------------------------------------------------\n // Bootstrap: wire up stdin readline\n // -----------------------------------------------------------------------\n\n let readline: ReadlineInterface | null = createInterface({\n input: stdinStream as NodeJS.ReadableStream,\n crlfDelay: Infinity,\n });\n\n readline.on(\"line\", handleLine);\n\n // If stdin closes, we should exit gracefully\n readline.on(\"close\", () => {\n if (running) {\n cleanup();\n if (!options.stdin && !options.stdout) {\n process.exit(0);\n }\n }\n });\n\n // Handle uncaught errors in the worker process.\n // Only install these when using the real process streams (not in tests\n // where the caller provides custom streams).\n if (!options.stdin && !options.stdout) {\n process.on(\"uncaughtException\", (err) => {\n notifyHost(\"log\", {\n level: \"error\",\n message: `Uncaught exception: ${err.message}`,\n meta: { stack: err.stack },\n });\n // Give the notification a moment to flush, then exit\n setTimeout(() => process.exit(1), 100);\n });\n\n process.on(\"unhandledRejection\", (reason) => {\n const message = reason instanceof Error ? reason.message : String(reason);\n const stack = reason instanceof Error ? reason.stack : undefined;\n notifyHost(\"log\", {\n level: \"error\",\n message: `Unhandled rejection: ${message}`,\n meta: { stack },\n });\n });\n }\n\n // -----------------------------------------------------------------------\n // Return the handle\n // -----------------------------------------------------------------------\n\n return {\n get running() {\n return running;\n },\n\n stop() {\n cleanup();\n },\n };\n}\n", "/**\n * JSON-RPC 2.0 message types and protocol helpers for the host \u2194 worker IPC\n * channel.\n *\n * The Rudder plugin runtime uses JSON-RPC 2.0 over stdio to communicate\n * between the host process and each plugin worker process. This module defines:\n *\n * - Core JSON-RPC 2.0 envelope types (request, response, notification, error)\n * - Standard and plugin-specific error codes\n * - Typed method maps for host\u2192worker and worker\u2192host calls\n * - Helper functions for creating well-formed messages\n *\n * @see PLUGIN_SPEC.md \u00A712.1 \u2014 Process Model\n * @see PLUGIN_SPEC.md \u00A713 \u2014 Host-Worker Protocol\n * @see https://www.jsonrpc.org/specification\n */\n\nimport type {\n PaperclipPluginManifestV1,\n PluginLauncherBounds,\n PluginLauncherRenderContextSnapshot,\n PluginLauncherRenderEnvironment,\n PluginStateScopeKind,\n Organization,\n Project,\n Issue,\n IssueComment,\n IssueDocument,\n IssueDocumentSummary,\n Agent,\n Goal,\n} from \"@rudderhq/shared\";\nexport type { PluginLauncherRenderContextSnapshot } from \"@rudderhq/shared\";\n\nimport type {\n PluginEvent,\n PluginJobContext,\n PluginWorkspace,\n ToolRunContext,\n ToolResult,\n} from \"./types.js\";\nimport type {\n PluginHealthDiagnostics,\n PluginConfigValidationResult,\n PluginWebhookInput,\n} from \"./define-plugin.js\";\n\n// ---------------------------------------------------------------------------\n// JSON-RPC 2.0 \u2014 Core Protocol Types\n// ---------------------------------------------------------------------------\n\n/** The JSON-RPC protocol version. Always `\"2.0\"`. */\nexport const JSONRPC_VERSION = \"2.0\" as const;\n\n/**\n * A unique request identifier. JSON-RPC 2.0 allows strings or numbers;\n * we use strings (UUIDs or monotonic counters) for all Rudder messages.\n */\nexport type JsonRpcId = string | number;\n\n/**\n * A JSON-RPC 2.0 request message.\n *\n * The host sends requests to the worker (or vice versa) and expects a\n * matching response with the same `id`.\n */\nexport interface JsonRpcRequest<\n TMethod extends string = string,\n TParams = unknown,\n> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n /** Unique request identifier. Must be echoed in the response. */\n readonly id: JsonRpcId;\n /** The RPC method name to invoke. */\n readonly method: TMethod;\n /** Structured parameters for the method call. */\n readonly params: TParams;\n}\n\n/**\n * A JSON-RPC 2.0 success response.\n */\nexport interface JsonRpcSuccessResponse<TResult = unknown> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n /** Echoed request identifier. */\n readonly id: JsonRpcId;\n /** The method return value. */\n readonly result: TResult;\n readonly error?: never;\n}\n\n/**\n * A JSON-RPC 2.0 error object embedded in an error response.\n */\nexport interface JsonRpcError<TData = unknown> {\n /** Machine-readable error code. */\n readonly code: number;\n /** Human-readable error message. */\n readonly message: string;\n /** Optional structured error data. */\n readonly data?: TData;\n}\n\n/**\n * A JSON-RPC 2.0 error response.\n */\nexport interface JsonRpcErrorResponse<TData = unknown> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n /** Echoed request identifier. */\n readonly id: JsonRpcId | null;\n readonly result?: never;\n /** The error object. */\n readonly error: JsonRpcError<TData>;\n}\n\n/**\n * A JSON-RPC 2.0 response \u2014 either success or error.\n */\nexport type JsonRpcResponse<TResult = unknown, TData = unknown> =\n | JsonRpcSuccessResponse<TResult>\n | JsonRpcErrorResponse<TData>;\n\n/**\n * A JSON-RPC 2.0 notification (a request with no `id`).\n *\n * Notifications are fire-and-forget \u2014 no response is expected.\n */\nexport interface JsonRpcNotification<\n TMethod extends string = string,\n TParams = unknown,\n> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n readonly id?: never;\n /** The notification method name. */\n readonly method: TMethod;\n /** Structured parameters for the notification. */\n readonly params: TParams;\n}\n\n/**\n * Any well-formed JSON-RPC 2.0 message (request, response, or notification).\n */\nexport type JsonRpcMessage =\n | JsonRpcRequest\n | JsonRpcResponse\n | JsonRpcNotification;\n\n// ---------------------------------------------------------------------------\n// Error Codes\n// ---------------------------------------------------------------------------\n\n/**\n * Standard JSON-RPC 2.0 error codes.\n *\n * @see https://www.jsonrpc.org/specification#error_object\n */\nexport const JSONRPC_ERROR_CODES = {\n /** Invalid JSON was received by the server. */\n PARSE_ERROR: -32700,\n /** The JSON sent is not a valid Request object. */\n INVALID_REQUEST: -32600,\n /** The method does not exist or is not available. */\n METHOD_NOT_FOUND: -32601,\n /** Invalid method parameter(s). */\n INVALID_PARAMS: -32602,\n /** Internal JSON-RPC error. */\n INTERNAL_ERROR: -32603,\n} as const;\n\nexport type JsonRpcErrorCode =\n (typeof JSONRPC_ERROR_CODES)[keyof typeof JSONRPC_ERROR_CODES];\n\n/**\n * Rudder plugin-specific error codes.\n *\n * These live in the JSON-RPC \"server error\" reserved range (-32000 to -32099)\n * as specified by JSON-RPC 2.0 for implementation-defined server errors.\n *\n * @see PLUGIN_SPEC.md \u00A719.7 \u2014 Error Propagation Through The Bridge\n */\nexport const PLUGIN_RPC_ERROR_CODES = {\n /** The worker process is not running or not reachable. */\n WORKER_UNAVAILABLE: -32000,\n /** The plugin does not have the required capability for this operation. */\n CAPABILITY_DENIED: -32001,\n /** The worker reported an unhandled error during method execution. */\n WORKER_ERROR: -32002,\n /** The method call timed out waiting for the worker response. */\n TIMEOUT: -32003,\n /** The worker does not implement the requested optional method. */\n METHOD_NOT_IMPLEMENTED: -32004,\n /** A catch-all for errors that do not fit other categories. */\n UNKNOWN: -32099,\n} as const;\n\nexport type PluginRpcErrorCode =\n (typeof PLUGIN_RPC_ERROR_CODES)[keyof typeof PLUGIN_RPC_ERROR_CODES];\n\n// ---------------------------------------------------------------------------\n// Host \u2192 Worker Method Signatures (\u00A713 Host-Worker Protocol)\n// ---------------------------------------------------------------------------\n\n/**\n * Input for the `initialize` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.1 \u2014 `initialize`\n */\nexport interface InitializeParams {\n /** Full plugin manifest snapshot. */\n manifest: PaperclipPluginManifestV1;\n /** Resolved operator configuration (validated against `instanceConfigSchema`). */\n config: Record<string, unknown>;\n /** Instance-level metadata. */\n instanceInfo: {\n /** UUID of this Rudder instance. */\n instanceId: string;\n /** Semver version of the running Rudder host. */\n hostVersion: string;\n };\n /** Host API version. */\n apiVersion: number;\n}\n\n/**\n * Result returned by the `initialize` RPC method.\n */\nexport interface InitializeResult {\n /** Whether initialization succeeded. */\n ok: boolean;\n /** Optional methods the worker has implemented (e.g. \"validateConfig\", \"onEvent\"). */\n supportedMethods?: string[];\n}\n\n/**\n * Input for the `configChanged` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.4 \u2014 `configChanged`\n */\nexport interface ConfigChangedParams {\n /** The newly resolved configuration. */\n config: Record<string, unknown>;\n}\n\n/**\n * Input for the `validateConfig` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.3 \u2014 `validateConfig`\n */\nexport interface ValidateConfigParams {\n /** The configuration to validate. */\n config: Record<string, unknown>;\n}\n\n/**\n * Input for the `onEvent` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.5 \u2014 `onEvent`\n */\nexport interface OnEventParams {\n /** The domain event to deliver. */\n event: PluginEvent;\n}\n\n/**\n * Input for the `runJob` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.6 \u2014 `runJob`\n */\nexport interface RunJobParams {\n /** Job execution context. */\n job: PluginJobContext;\n}\n\n/**\n * Input for the `getData` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.8 \u2014 `getData`\n */\nexport interface GetDataParams {\n /** Plugin-defined data key (e.g. `\"sync-health\"`). */\n key: string;\n /** Context and query parameters from the UI. */\n params: Record<string, unknown>;\n /** Optional launcher/container metadata from the host render environment. */\n renderEnvironment?: PluginLauncherRenderContextSnapshot | null;\n}\n\n/**\n * Input for the `performAction` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.9 \u2014 `performAction`\n */\nexport interface PerformActionParams {\n /** Plugin-defined action key (e.g. `\"resync\"`). */\n key: string;\n /** Action parameters from the UI. */\n params: Record<string, unknown>;\n /** Optional launcher/container metadata from the host render environment. */\n renderEnvironment?: PluginLauncherRenderContextSnapshot | null;\n}\n\n/**\n * Input for the `executeTool` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.10 \u2014 `executeTool`\n */\nexport interface ExecuteToolParams {\n /** Tool name (without plugin namespace prefix). */\n toolName: string;\n /** Parsed parameters matching the tool's declared schema. */\n parameters: unknown;\n /** Agent run context. */\n runContext: ToolRunContext;\n}\n\n// ---------------------------------------------------------------------------\n// UI launcher / modal host interaction payloads\n// ---------------------------------------------------------------------------\n\n/**\n * Bounds request issued by a plugin UI running inside a host-managed launcher\n * container such as a modal, drawer, or popover.\n */\nexport interface PluginModalBoundsRequest {\n /** High-level size preset requested from the host. */\n bounds: PluginLauncherBounds;\n /** Optional explicit width override in CSS pixels. */\n width?: number;\n /** Optional explicit height override in CSS pixels. */\n height?: number;\n /** Optional lower bounds for host resizing decisions. */\n minWidth?: number;\n minHeight?: number;\n /** Optional upper bounds for host resizing decisions. */\n maxWidth?: number;\n maxHeight?: number;\n}\n\n/**\n * Reason metadata supplied by host-managed close lifecycle callbacks.\n */\nexport interface PluginRenderCloseEvent {\n reason:\n | \"escapeKey\"\n | \"backdrop\"\n | \"hostNavigation\"\n | \"programmatic\"\n | \"submit\"\n | \"unknown\";\n nativeEvent?: unknown;\n}\n\n/**\n * Map of host\u2192worker RPC method names to their `[params, result]` types.\n *\n * This type is the single source of truth for all methods the host can call\n * on a worker. Used by both the host dispatcher and the worker handler to\n * ensure type safety across the IPC boundary.\n */\nexport interface HostToWorkerMethods {\n /** @see PLUGIN_SPEC.md \u00A713.1 */\n initialize: [params: InitializeParams, result: InitializeResult];\n /** @see PLUGIN_SPEC.md \u00A713.2 */\n health: [params: Record<string, never>, result: PluginHealthDiagnostics];\n /** @see PLUGIN_SPEC.md \u00A712.5 */\n shutdown: [params: Record<string, never>, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.3 */\n validateConfig: [params: ValidateConfigParams, result: PluginConfigValidationResult];\n /** @see PLUGIN_SPEC.md \u00A713.4 */\n configChanged: [params: ConfigChangedParams, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.5 */\n onEvent: [params: OnEventParams, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.6 */\n runJob: [params: RunJobParams, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.7 */\n handleWebhook: [params: PluginWebhookInput, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.8 */\n getData: [params: GetDataParams, result: unknown];\n /** @see PLUGIN_SPEC.md \u00A713.9 */\n performAction: [params: PerformActionParams, result: unknown];\n /** @see PLUGIN_SPEC.md \u00A713.10 */\n executeTool: [params: ExecuteToolParams, result: ToolResult];\n}\n\n/** Union of all host\u2192worker method names. */\nexport type HostToWorkerMethodName = keyof HostToWorkerMethods;\n\n/** Required methods the worker MUST implement. */\nexport const HOST_TO_WORKER_REQUIRED_METHODS: readonly HostToWorkerMethodName[] = [\n \"initialize\",\n \"health\",\n \"shutdown\",\n] as const;\n\n/** Optional methods the worker MAY implement. */\nexport const HOST_TO_WORKER_OPTIONAL_METHODS: readonly HostToWorkerMethodName[] = [\n \"validateConfig\",\n \"configChanged\",\n \"onEvent\",\n \"runJob\",\n \"handleWebhook\",\n \"getData\",\n \"performAction\",\n \"executeTool\",\n] as const;\n\n// ---------------------------------------------------------------------------\n// Worker \u2192 Host Method Signatures (SDK client calls)\n// ---------------------------------------------------------------------------\n\n/**\n * Map of worker\u2192host RPC method names to their `[params, result]` types.\n *\n * These represent the SDK client calls that the worker makes back to the\n * host to access platform services (state, entities, config, etc.).\n */\nexport interface WorkerToHostMethods {\n // Config\n \"config.get\": [params: Record<string, never>, result: Record<string, unknown>];\n\n // State\n \"state.get\": [\n params: { scopeKind: string; scopeId?: string; namespace?: string; stateKey: string },\n result: unknown,\n ];\n \"state.set\": [\n params: { scopeKind: string; scopeId?: string; namespace?: string; stateKey: string; value: unknown },\n result: void,\n ];\n \"state.delete\": [\n params: { scopeKind: string; scopeId?: string; namespace?: string; stateKey: string },\n result: void,\n ];\n\n // Entities\n \"entities.upsert\": [\n params: {\n entityType: string;\n scopeKind: PluginStateScopeKind;\n scopeId?: string;\n externalId?: string;\n title?: string;\n status?: string;\n data: Record<string, unknown>;\n },\n result: {\n id: string;\n entityType: string;\n scopeKind: PluginStateScopeKind;\n scopeId: string | null;\n externalId: string | null;\n title: string | null;\n status: string | null;\n data: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n },\n ];\n \"entities.list\": [\n params: {\n entityType?: string;\n scopeKind?: PluginStateScopeKind;\n scopeId?: string;\n externalId?: string;\n limit?: number;\n offset?: number;\n },\n result: Array<{\n id: string;\n entityType: string;\n scopeKind: PluginStateScopeKind;\n scopeId: string | null;\n externalId: string | null;\n title: string | null;\n status: string | null;\n data: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n }>,\n ];\n\n // Events\n \"events.emit\": [\n params: { name: string; orgId: string; payload: unknown },\n result: void,\n ];\n \"events.subscribe\": [\n params: { eventPattern: string; filter?: Record<string, unknown> | null },\n result: void,\n ];\n\n // HTTP\n \"http.fetch\": [\n params: { url: string; init?: Record<string, unknown> },\n result: { status: number; statusText: string; headers: Record<string, string>; body: string },\n ];\n\n // Secrets\n \"secrets.resolve\": [\n params: { secretRef: string },\n result: string,\n ];\n\n // Activity\n \"activity.log\": [\n params: {\n orgId: string;\n message: string;\n entityType?: string;\n entityId?: string;\n metadata?: Record<string, unknown>;\n },\n result: void,\n ];\n\n // Metrics\n \"metrics.write\": [\n params: { name: string; value: number; tags?: Record<string, string> },\n result: void,\n ];\n\n // Logger\n \"log\": [\n params: { level: \"info\" | \"warn\" | \"error\" | \"debug\"; message: string; meta?: Record<string, unknown> },\n result: void,\n ];\n\n // Companies (read)\n \"organizations.list\": [\n params: { limit?: number; offset?: number },\n result: Organization[],\n ];\n \"organizations.get\": [\n params: { orgId: string },\n result: Organization | null,\n ];\n\n // Projects (read)\n \"projects.list\": [\n params: { orgId: string; limit?: number; offset?: number },\n result: Project[],\n ];\n \"projects.get\": [\n params: { projectId: string; orgId: string },\n result: Project | null,\n ];\n \"projects.listWorkspaces\": [\n params: { projectId: string; orgId: string },\n result: PluginWorkspace[],\n ];\n \"projects.getPrimaryWorkspace\": [\n params: { projectId: string; orgId: string },\n result: PluginWorkspace | null,\n ];\n \"projects.getWorkspaceForIssue\": [\n params: { issueId: string; orgId: string },\n result: PluginWorkspace | null,\n ];\n\n // Issues\n \"issues.list\": [\n params: {\n orgId: string;\n projectId?: string;\n assigneeAgentId?: string;\n reviewerAgentId?: string;\n reviewerUserId?: string;\n status?: string;\n limit?: number;\n offset?: number;\n },\n result: Issue[],\n ];\n \"issues.get\": [\n params: { issueId: string; orgId: string },\n result: Issue | null,\n ];\n \"issues.create\": [\n params: {\n orgId: string;\n projectId?: string;\n goalId?: string;\n parentId?: string;\n title: string;\n description?: string;\n status?: string;\n priority?: string;\n assigneeAgentId?: string;\n reviewerAgentId?: string;\n reviewerUserId?: string;\n },\n result: Issue,\n ];\n \"issues.update\": [\n params: {\n issueId: string;\n patch: Record<string, unknown>;\n orgId: string;\n },\n result: Issue,\n ];\n \"issues.listComments\": [\n params: { issueId: string; orgId: string },\n result: IssueComment[],\n ];\n \"issues.createComment\": [\n params: { issueId: string; body: string; orgId: string },\n result: IssueComment,\n ];\n\n // Issue Documents\n \"issues.documents.list\": [\n params: { issueId: string; orgId: string },\n result: IssueDocumentSummary[],\n ];\n \"issues.documents.get\": [\n params: { issueId: string; key: string; orgId: string },\n result: IssueDocument | null,\n ];\n \"issues.documents.upsert\": [\n params: {\n issueId: string;\n key: string;\n body: string;\n orgId: string;\n title?: string;\n format?: string;\n changeSummary?: string;\n },\n result: IssueDocument,\n ];\n \"issues.documents.delete\": [\n params: { issueId: string; key: string; orgId: string },\n result: void,\n ];\n\n // Agents (read)\n \"agents.list\": [\n params: { orgId: string; status?: string; limit?: number; offset?: number },\n result: Agent[],\n ];\n \"agents.get\": [\n params: { agentId: string; orgId: string },\n result: Agent | null,\n ];\n\n // Agents (write)\n \"agents.pause\": [\n params: { agentId: string; orgId: string },\n result: Agent,\n ];\n \"agents.resume\": [\n params: { agentId: string; orgId: string },\n result: Agent,\n ];\n \"agents.invoke\": [\n params: { agentId: string; orgId: string; prompt: string; reason?: string },\n result: { runId: string },\n ];\n\n // Agent Sessions\n \"agents.sessions.create\": [\n params: { agentId: string; orgId: string; taskKey?: string; reason?: string },\n result: { sessionId: string; agentId: string; orgId: string; status: \"active\" | \"closed\"; createdAt: string },\n ];\n \"agents.sessions.list\": [\n params: { agentId: string; orgId: string },\n result: Array<{ sessionId: string; agentId: string; orgId: string; status: \"active\" | \"closed\"; createdAt: string }>,\n ];\n \"agents.sessions.sendMessage\": [\n params: { sessionId: string; orgId: string; prompt: string; reason?: string },\n result: { runId: string },\n ];\n \"agents.sessions.close\": [\n params: { sessionId: string; orgId: string },\n result: void,\n ];\n\n // Goals\n \"goals.list\": [\n params: { orgId: string; level?: string; status?: string; limit?: number; offset?: number },\n result: Goal[],\n ];\n \"goals.get\": [\n params: { goalId: string; orgId: string },\n result: Goal | null,\n ];\n \"goals.create\": [\n params: {\n orgId: string;\n title: string;\n description?: string;\n level?: string;\n status?: string;\n parentId?: string;\n ownerAgentId?: string;\n },\n result: Goal,\n ];\n \"goals.update\": [\n params: {\n goalId: string;\n patch: Record<string, unknown>;\n orgId: string;\n },\n result: Goal,\n ];\n}\n\n/** Union of all worker\u2192host method names. */\nexport type WorkerToHostMethodName = keyof WorkerToHostMethods;\n\n// ---------------------------------------------------------------------------\n// Worker\u2192Host Notification Types (fire-and-forget, no response)\n// ---------------------------------------------------------------------------\n\n/**\n * Typed parameter shapes for worker\u2192host JSON-RPC notifications.\n *\n * Notifications are fire-and-forget \u2014 the worker does not wait for a response.\n * These are used for streaming events and logging, not for request-response RPCs.\n */\nexport interface WorkerToHostNotifications {\n /**\n * Forward a stream event to connected SSE clients.\n *\n * Emitted by the worker for each event on a stream channel. The host\n * publishes to the PluginStreamBus, which fans out to all SSE clients\n * subscribed to the (pluginId, channel, orgId) tuple.\n *\n * The `event` payload is JSON-serializable and sent as SSE `data:`.\n * The default SSE event type is `\"message\"`.\n */\n \"streams.emit\": {\n channel: string;\n orgId: string;\n event: unknown;\n };\n\n /**\n * Signal that a stream channel has been opened.\n *\n * Emitted when the worker calls `ctx.streams.open(channel, orgId)`.\n * UI clients may use this to display a \"connected\" indicator or begin\n * buffering input. The host tracks open channels so it can emit synthetic\n * close events if the worker crashes.\n */\n \"streams.open\": {\n channel: string;\n orgId: string;\n };\n\n /**\n * Signal that a stream channel has been closed.\n *\n * Emitted when the worker calls `ctx.streams.close(channel)`, or\n * synthetically by the host when a worker process exits with channels\n * still open. UI clients should treat this as terminal and disconnect\n * the SSE connection.\n */\n \"streams.close\": {\n channel: string;\n orgId: string;\n };\n}\n\n/** Union of all worker\u2192host notification method names. */\nexport type WorkerToHostNotificationName = keyof WorkerToHostNotifications;\n\n// ---------------------------------------------------------------------------\n// Typed Request / Response Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * A typed JSON-RPC request for a specific host\u2192worker method.\n */\nexport type HostToWorkerRequest<M extends HostToWorkerMethodName> =\n JsonRpcRequest<M, HostToWorkerMethods[M][0]>;\n\n/**\n * A typed JSON-RPC success response for a specific host\u2192worker method.\n */\nexport type HostToWorkerResponse<M extends HostToWorkerMethodName> =\n JsonRpcSuccessResponse<HostToWorkerMethods[M][1]>;\n\n/**\n * A typed JSON-RPC request for a specific worker\u2192host method.\n */\nexport type WorkerToHostRequest<M extends WorkerToHostMethodName> =\n JsonRpcRequest<M, WorkerToHostMethods[M][0]>;\n\n/**\n * A typed JSON-RPC success response for a specific worker\u2192host method.\n */\nexport type WorkerToHostResponse<M extends WorkerToHostMethodName> =\n JsonRpcSuccessResponse<WorkerToHostMethods[M][1]>;\n\n// ---------------------------------------------------------------------------\n// Message Factory Functions\n// ---------------------------------------------------------------------------\n\n/** Counter for generating unique request IDs when no explicit ID is provided. */\nlet _nextId = 1;\n\n/** Wrap around before reaching Number.MAX_SAFE_INTEGER to prevent precision loss. */\nconst MAX_SAFE_RPC_ID = Number.MAX_SAFE_INTEGER - 1;\n\n/**\n * Create a JSON-RPC 2.0 request message.\n *\n * @param method - The RPC method name\n * @param params - Structured parameters\n * @param id - Optional explicit request ID (auto-generated if omitted)\n */\nexport function createRequest<TMethod extends string>(\n method: TMethod,\n params: unknown,\n id?: JsonRpcId,\n): JsonRpcRequest<TMethod> {\n if (_nextId >= MAX_SAFE_RPC_ID) {\n _nextId = 1;\n }\n return {\n jsonrpc: JSONRPC_VERSION,\n id: id ?? _nextId++,\n method,\n params,\n };\n}\n\n/**\n * Create a JSON-RPC 2.0 success response.\n *\n * @param id - The request ID being responded to\n * @param result - The result value\n */\nexport function createSuccessResponse<TResult>(\n id: JsonRpcId,\n result: TResult,\n): JsonRpcSuccessResponse<TResult> {\n return {\n jsonrpc: JSONRPC_VERSION,\n id,\n result,\n };\n}\n\n/**\n * Create a JSON-RPC 2.0 error response.\n *\n * @param id - The request ID being responded to (null if the request ID could not be determined)\n * @param code - Machine-readable error code\n * @param message - Human-readable error message\n * @param data - Optional structured error data\n */\nexport function createErrorResponse<TData = unknown>(\n id: JsonRpcId | null,\n code: number,\n message: string,\n data?: TData,\n): JsonRpcErrorResponse<TData> {\n const response: JsonRpcErrorResponse<TData> = {\n jsonrpc: JSONRPC_VERSION,\n id,\n error: data !== undefined\n ? { code, message, data }\n : { code, message } as JsonRpcError<TData>,\n };\n return response;\n}\n\n/**\n * Create a JSON-RPC 2.0 notification (fire-and-forget, no response expected).\n *\n * @param method - The notification method name\n * @param params - Structured parameters\n */\nexport function createNotification<TMethod extends string>(\n method: TMethod,\n params: unknown,\n): JsonRpcNotification<TMethod> {\n return {\n jsonrpc: JSONRPC_VERSION,\n method,\n params,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Type Guards\n// ---------------------------------------------------------------------------\n\n/**\n * Check whether a value is a well-formed JSON-RPC 2.0 request.\n *\n * A request has `jsonrpc: \"2.0\"`, a string `method`, and an `id`.\n */\nexport function isJsonRpcRequest(value: unknown): value is JsonRpcRequest {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n return (\n obj.jsonrpc === JSONRPC_VERSION &&\n typeof obj.method === \"string\" &&\n \"id\" in obj &&\n obj.id !== undefined &&\n obj.id !== null\n );\n}\n\n/**\n * Check whether a value is a well-formed JSON-RPC 2.0 notification.\n *\n * A notification has `jsonrpc: \"2.0\"`, a string `method`, but no `id`.\n */\nexport function isJsonRpcNotification(\n value: unknown,\n): value is JsonRpcNotification {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n return (\n obj.jsonrpc === JSONRPC_VERSION &&\n typeof obj.method === \"string\" &&\n !(\"id\" in obj)\n );\n}\n\n/**\n * Check whether a value is a well-formed JSON-RPC 2.0 response (success or error).\n */\nexport function isJsonRpcResponse(value: unknown): value is JsonRpcResponse {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n return (\n obj.jsonrpc === JSONRPC_VERSION &&\n \"id\" in obj &&\n (\"result\" in obj || \"error\" in obj)\n );\n}\n\n/**\n * Check whether a JSON-RPC response is a success response.\n */\nexport function isJsonRpcSuccessResponse(\n response: JsonRpcResponse,\n): response is JsonRpcSuccessResponse {\n return \"result\" in response && !(\"error\" in response && response.error !== undefined);\n}\n\n/**\n * Check whether a JSON-RPC response is an error response.\n */\nexport function isJsonRpcErrorResponse(\n response: JsonRpcResponse,\n): response is JsonRpcErrorResponse {\n return \"error\" in response && response.error !== undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Serialization Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Line delimiter for JSON-RPC messages over stdio.\n *\n * Each message is a single line of JSON terminated by a newline character.\n * This follows the newline-delimited JSON (NDJSON) convention.\n */\nexport const MESSAGE_DELIMITER = \"\\n\" as const;\n\n/**\n * Serialize a JSON-RPC message to a newline-delimited string for transmission\n * over stdio.\n *\n * @param message - Any JSON-RPC message (request, response, or notification)\n * @returns The JSON string terminated with a newline\n */\nexport function serializeMessage(message: JsonRpcMessage): string {\n return JSON.stringify(message) + MESSAGE_DELIMITER;\n}\n\n/**\n * Parse a JSON string into a JSON-RPC message.\n *\n * Returns the parsed message or throws a `JsonRpcParseError` if the input\n * is not valid JSON or does not conform to the JSON-RPC 2.0 structure.\n *\n * @param line - A single line of JSON text (with or without trailing newline)\n * @returns The parsed JSON-RPC message\n * @throws {JsonRpcParseError} If parsing fails\n */\nexport function parseMessage(line: string): JsonRpcMessage {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n throw new JsonRpcParseError(\"Empty message\");\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n throw new JsonRpcParseError(`Invalid JSON: ${trimmed.slice(0, 200)}`);\n }\n\n if (typeof parsed !== \"object\" || parsed === null) {\n throw new JsonRpcParseError(\"Message must be a JSON object\");\n }\n\n const obj = parsed as Record<string, unknown>;\n\n if (obj.jsonrpc !== JSONRPC_VERSION) {\n throw new JsonRpcParseError(\n `Invalid or missing jsonrpc version (expected \"${JSONRPC_VERSION}\", got ${JSON.stringify(obj.jsonrpc)})`,\n );\n }\n\n // It's a valid JSON-RPC 2.0 envelope \u2014 return as-is and let the caller\n // use the type guards for more specific classification.\n return parsed as JsonRpcMessage;\n}\n\n// ---------------------------------------------------------------------------\n// Error Classes\n// ---------------------------------------------------------------------------\n\n/**\n * Error thrown when a JSON-RPC message cannot be parsed.\n */\nexport class JsonRpcParseError extends Error {\n override readonly name = \"JsonRpcParseError\";\n constructor(message: string) {\n super(message);\n }\n}\n\n/**\n * Error thrown when a JSON-RPC call fails with a structured error response.\n *\n * Captures the full `JsonRpcError` so callers can inspect the code and data.\n */\nexport class JsonRpcCallError extends Error {\n override readonly name = \"JsonRpcCallError\";\n /** The JSON-RPC error code. */\n readonly code: number;\n /** Optional structured error data from the response. */\n readonly data: unknown;\n\n constructor(error: JsonRpcError) {\n super(error.message);\n this.code = error.code;\n this.data = error.data;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Reset helper (testing only)\n// ---------------------------------------------------------------------------\n\n/**\n * Reset the internal request ID counter. **For testing only.**\n *\n * @internal\n */\nexport function _resetIdCounter(): void {\n _nextId = 1;\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "export const ORGANIZATION_STATUSES = [\"active\", \"paused\", \"archived\"] as const;\nexport type OrganizationStatus = (typeof ORGANIZATION_STATUSES)[number];\n\nexport const ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES = [\"lightweight\", \"reasoning\"] as const;\nexport type OrganizationIntelligenceProfilePurpose = (typeof ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES)[number];\n\nexport const ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES = [\"configured\", \"disabled\", \"invalid\"] as const;\nexport type OrganizationIntelligenceProfileStatus = (typeof ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES)[number];\n\nexport const DEPLOYMENT_MODES = [\"local_trusted\", \"authenticated\"] as const;\nexport type DeploymentMode = (typeof DEPLOYMENT_MODES)[number];\n\nexport const DEPLOYMENT_EXPOSURES = [\"private\", \"public\"] as const;\nexport type DeploymentExposure = (typeof DEPLOYMENT_EXPOSURES)[number];\n\nexport const AUTH_BASE_URL_MODES = [\"auto\", \"explicit\"] as const;\nexport type AuthBaseUrlMode = (typeof AUTH_BASE_URL_MODES)[number];\n\nexport const AGENT_STATUSES = [\n \"active\",\n \"paused\",\n \"idle\",\n \"running\",\n \"error\",\n \"pending_approval\",\n \"terminated\",\n] as const;\nexport type AgentStatus = (typeof AGENT_STATUSES)[number];\n\nexport const AGENT_RUN_CONCURRENCY_DEFAULT = 3;\nexport const AGENT_RUN_CONCURRENCY_MIN = 1;\nexport const AGENT_RUN_CONCURRENCY_MAX = 10;\n\nexport const AGENT_RUNTIME_TYPES = [\n \"process\",\n \"http\",\n \"claude_local\",\n \"codex_local\",\n \"gemini_local\",\n \"opencode_local\",\n \"pi_local\",\n \"cursor\",\n \"openclaw_gateway\",\n \"hermes_local\",\n] as const;\nexport type AgentRuntimeType = (typeof AGENT_RUNTIME_TYPES)[number];\n\nexport const AGENT_ROLES = [\n \"ceo\",\n \"cto\",\n \"cmo\",\n \"cfo\",\n \"engineer\",\n \"designer\",\n \"pm\",\n \"qa\",\n \"devops\",\n \"researcher\",\n \"general\",\n] as const;\nexport type AgentRole = (typeof AGENT_ROLES)[number];\n\nexport const AGENT_ROLE_LABELS: Record<AgentRole, string> = {\n ceo: \"CEO\",\n cto: \"CTO\",\n cmo: \"CMO\",\n cfo: \"CFO\",\n engineer: \"Engineer\",\n designer: \"Designer\",\n pm: \"PM\",\n qa: \"QA\",\n devops: \"DevOps\",\n researcher: \"Researcher\",\n general: \"General\",\n};\n\nexport const AGENT_ICON_NAMES = [\n \"bot\",\n \"cpu\",\n \"brain\",\n \"zap\",\n \"rocket\",\n \"code\",\n \"terminal\",\n \"shield\",\n \"eye\",\n \"search\",\n \"wrench\",\n \"hammer\",\n \"lightbulb\",\n \"sparkles\",\n \"star\",\n \"heart\",\n \"flame\",\n \"bug\",\n \"cog\",\n \"database\",\n \"globe\",\n \"lock\",\n \"mail\",\n \"message-square\",\n \"file-code\",\n \"git-branch\",\n \"package\",\n \"puzzle\",\n \"target\",\n \"wand\",\n \"atom\",\n \"circuit-board\",\n \"radar\",\n \"swords\",\n \"telescope\",\n \"microscope\",\n \"crown\",\n \"gem\",\n \"hexagon\",\n \"pentagon\",\n \"fingerprint\",\n] as const;\nexport type AgentIconName = (typeof AGENT_ICON_NAMES)[number];\n\nexport const AGENT_DICEBEAR_NOTIONISTS_ICON_PREFIX = \"dicebear:notionists:\" as const;\n\nexport const AGENT_AVATAR_BACKGROUND_PRESET_IDS = [\n \"mist\",\n \"slate\",\n \"sky\",\n \"mint\",\n \"peach\",\n \"violet\",\n] as const;\nexport type AgentAvatarBackgroundPresetId = (typeof AGENT_AVATAR_BACKGROUND_PRESET_IDS)[number];\n\nexport const ISSUE_STATUSES = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n] as const;\nexport type IssueStatus = (typeof ISSUE_STATUSES)[number];\n\nexport const ISSUE_PRIORITIES = [\"critical\", \"high\", \"medium\", \"low\"] as const;\nexport type IssuePriority = (typeof ISSUE_PRIORITIES)[number];\n\nexport const ISSUE_ORIGIN_KINDS = [\"manual\", \"automation_execution\"] as const;\nexport type IssueOriginKind = (typeof ISSUE_ORIGIN_KINDS)[number];\n\nexport const CALENDAR_SOURCE_TYPES = [\"rudder_local\", \"google_calendar\", \"agent_work\", \"system\"] as const;\nexport type CalendarSourceType = (typeof CALENDAR_SOURCE_TYPES)[number];\n\nexport const CALENDAR_OWNER_TYPES = [\"user\", \"agent\", \"system\"] as const;\nexport type CalendarOwnerType = (typeof CALENDAR_OWNER_TYPES)[number];\n\nexport const CALENDAR_VISIBILITIES = [\"full\", \"busy_only\", \"private\"] as const;\nexport type CalendarVisibility = (typeof CALENDAR_VISIBILITIES)[number];\n\nexport const CALENDAR_SOURCE_STATUSES = [\"active\", \"paused\", \"disconnected\", \"error\"] as const;\nexport type CalendarSourceStatus = (typeof CALENDAR_SOURCE_STATUSES)[number];\n\nexport const CALENDAR_EVENT_KINDS = [\"human_event\", \"agent_work_block\", \"external_event\", \"system_event\"] as const;\nexport type CalendarEventKind = (typeof CALENDAR_EVENT_KINDS)[number];\n\nexport const CALENDAR_EVENT_STATUSES = [\"planned\", \"in_progress\", \"actual\", \"cancelled\", \"external\", \"projected\"] as const;\nexport type CalendarEventStatus = (typeof CALENDAR_EVENT_STATUSES)[number];\n\nexport const CALENDAR_SOURCE_MODES = [\"manual\", \"derived\", \"imported\"] as const;\nexport type CalendarSourceMode = (typeof CALENDAR_SOURCE_MODES)[number];\n\nexport const CHAT_CONVERSATION_STATUSES = [\"active\", \"resolved\", \"archived\"] as const;\nexport type ChatConversationStatus = (typeof CHAT_CONVERSATION_STATUSES)[number];\n\nexport const CHAT_ISSUE_CREATION_MODES = [\"manual_approval\", \"auto_create\"] as const;\nexport type ChatIssueCreationMode = (typeof CHAT_ISSUE_CREATION_MODES)[number];\n\nexport const CHAT_MESSAGE_ROLES = [\"user\", \"assistant\", \"system\"] as const;\nexport type ChatMessageRole = (typeof CHAT_MESSAGE_ROLES)[number];\n\nexport const CHAT_MESSAGE_KINDS = [\n \"message\",\n \"ask_user\",\n \"issue_proposal\",\n \"operation_proposal\",\n \"system_event\",\n] as const;\nexport type ChatMessageKind = (typeof CHAT_MESSAGE_KINDS)[number];\n\nexport const CHAT_MESSAGE_STATUSES = [\"streaming\", \"completed\", \"stopped\", \"failed\", \"interrupted\"] as const;\nexport type ChatMessageStatus = (typeof CHAT_MESSAGE_STATUSES)[number];\n\nexport const CHAT_CONTEXT_ENTITY_TYPES = [\"issue\", \"project\", \"agent\"] as const;\nexport type ChatContextEntityType = (typeof CHAT_CONTEXT_ENTITY_TYPES)[number];\n\nexport const MESSENGER_THREAD_KINDS = [\n \"chat\",\n \"issues\",\n \"approvals\",\n \"failed-runs\",\n \"budget-alerts\",\n \"join-requests\",\n] as const;\nexport type MessengerThreadKind = (typeof MESSENGER_THREAD_KINDS)[number];\n\nexport const MESSENGER_SYSTEM_THREAD_KINDS = [\n \"failed-runs\",\n \"budget-alerts\",\n \"join-requests\",\n] as const;\nexport type MessengerSystemThreadKind = (typeof MESSENGER_SYSTEM_THREAD_KINDS)[number];\n\nexport const GOAL_LEVELS = [\"organization\", \"team\", \"agent\", \"task\"] as const;\nexport type GoalLevel = (typeof GOAL_LEVELS)[number];\n\nexport const GOAL_STATUSES = [\"planned\", \"active\", \"achieved\", \"cancelled\"] as const;\nexport type GoalStatus = (typeof GOAL_STATUSES)[number];\n\nexport const PROJECT_STATUSES = [\n \"backlog\",\n \"planned\",\n \"in_progress\",\n \"completed\",\n \"cancelled\",\n] as const;\nexport type ProjectStatus = (typeof PROJECT_STATUSES)[number];\n\nexport const ORGANIZATION_RESOURCE_KINDS = [\n \"file\",\n \"directory\",\n \"url\",\n \"connector_object\",\n] as const;\nexport type OrganizationResourceKind = (typeof ORGANIZATION_RESOURCE_KINDS)[number];\n\nexport const PROJECT_RESOURCE_ATTACHMENT_ROLES = [\n \"working_set\",\n \"reference\",\n \"tracking\",\n \"deliverable\",\n \"background\",\n] as const;\nexport type ProjectResourceAttachmentRole = (typeof PROJECT_RESOURCE_ATTACHMENT_ROLES)[number];\n\nexport const AUTOMATION_STATUSES = [\"active\", \"paused\"] as const;\nexport type AutomationStatus = (typeof AUTOMATION_STATUSES)[number];\n\nexport const AUTOMATION_CONCURRENCY_POLICIES = [\"coalesce_if_active\", \"always_enqueue\", \"skip_if_active\"] as const;\nexport type AutomationConcurrencyPolicy = (typeof AUTOMATION_CONCURRENCY_POLICIES)[number];\n\nexport const AUTOMATION_CATCH_UP_POLICIES = [\"skip_missed\", \"enqueue_missed_with_cap\"] as const;\nexport type AutomationCatchUpPolicy = (typeof AUTOMATION_CATCH_UP_POLICIES)[number];\n\nexport const AUTOMATION_OUTPUT_MODES = [\"track_issue\", \"chat_output\"] as const;\nexport type AutomationOutputMode = (typeof AUTOMATION_OUTPUT_MODES)[number];\n\nexport const AUTOMATION_TRIGGER_KINDS = [\"schedule\", \"webhook\", \"api\"] as const;\nexport type AutomationTriggerKind = (typeof AUTOMATION_TRIGGER_KINDS)[number];\n\nexport const AUTOMATION_TRIGGER_SIGNING_MODES = [\"bearer\", \"hmac_sha256\"] as const;\nexport type AutomationTriggerSigningMode = (typeof AUTOMATION_TRIGGER_SIGNING_MODES)[number];\n\nexport const AUTOMATION_RUN_STATUSES = [\n \"received\",\n \"coalesced\",\n \"skipped\",\n \"issue_created\",\n \"completed\",\n \"failed\",\n ] as const;\nexport type AutomationRunStatus = (typeof AUTOMATION_RUN_STATUSES)[number];\n\nexport const AUTOMATION_RUN_SOURCES = [\"schedule\", \"manual\", \"api\", \"webhook\"] as const;\nexport type AutomationRunSource = (typeof AUTOMATION_RUN_SOURCES)[number];\n\nexport const PAUSE_REASONS = [\"manual\", \"budget\", \"system\"] as const;\nexport type PauseReason = (typeof PAUSE_REASONS)[number];\n\nexport const PROJECT_COLORS = [\n \"linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)\",\n \"linear-gradient(135deg, #7c3aed 0%, #d946ef 100%)\",\n \"linear-gradient(135deg, #db2777 0%, #f97316 100%)\",\n \"linear-gradient(135deg, #ef4444 0%, #f59e0b 100%)\",\n \"linear-gradient(135deg, #f97316 0%, #facc15 100%)\",\n \"linear-gradient(135deg, #10b981 0%, #84cc16 100%)\",\n \"linear-gradient(135deg, #059669 0%, #14b8a6 100%)\",\n \"linear-gradient(135deg, #0d9488 0%, #06b6d4 100%)\",\n \"linear-gradient(135deg, #0284c7 0%, #2563eb 100%)\",\n \"linear-gradient(135deg, #2563eb 0%, #4f46e5 100%)\",\n \"linear-gradient(135deg, #f43f5e 0%, #ec4899 100%)\",\n \"linear-gradient(135deg, #be123c 0%, #7c2d12 100%)\",\n \"linear-gradient(135deg, #a16207 0%, #ca8a04 100%)\",\n \"linear-gradient(135deg, #16a34a 0%, #0f766e 100%)\",\n \"linear-gradient(135deg, #0891b2 0%, #4338ca 100%)\",\n \"linear-gradient(135deg, #6d28d9 0%, #be185d 100%)\",\n \"linear-gradient(135deg, #475569 0%, #0f766e 100%)\",\n \"linear-gradient(135deg, #334155 0%, #7c3aed 100%)\",\n] as const;\n\nexport const APPROVAL_TYPES = [\n \"hire_agent\",\n \"approve_ceo_strategy\",\n \"budget_override_required\",\n \"chat_issue_creation\",\n \"chat_operation\",\n] as const;\nexport type ApprovalType = (typeof APPROVAL_TYPES)[number];\n\nexport const APPROVAL_STATUSES = [\n \"pending\",\n \"revision_requested\",\n \"approved\",\n \"rejected\",\n \"cancelled\",\n] as const;\nexport type ApprovalStatus = (typeof APPROVAL_STATUSES)[number];\n\nexport const SECRET_PROVIDERS = [\n \"local_encrypted\",\n \"aws_secrets_manager\",\n \"gcp_secret_manager\",\n \"vault\",\n] as const;\nexport type SecretProvider = (typeof SECRET_PROVIDERS)[number];\n\nexport const STORAGE_PROVIDERS = [\"local_disk\", \"s3\"] as const;\nexport type StorageProvider = (typeof STORAGE_PROVIDERS)[number];\n\nexport const BILLING_TYPES = [\n \"metered_api\",\n \"subscription_included\",\n \"subscription_overage\",\n \"credits\",\n \"fixed\",\n \"unknown\",\n] as const;\nexport type BillingType = (typeof BILLING_TYPES)[number];\n\nexport const FINANCE_EVENT_KINDS = [\n \"inference_charge\",\n \"platform_fee\",\n \"credit_purchase\",\n \"credit_refund\",\n \"credit_expiry\",\n \"byok_fee\",\n \"gateway_overhead\",\n \"log_storage_charge\",\n \"logpush_charge\",\n \"provisioned_capacity_charge\",\n \"training_charge\",\n \"custom_model_import_charge\",\n \"custom_model_storage_charge\",\n \"manual_adjustment\",\n] as const;\nexport type FinanceEventKind = (typeof FINANCE_EVENT_KINDS)[number];\n\nexport const FINANCE_DIRECTIONS = [\"debit\", \"credit\"] as const;\nexport type FinanceDirection = (typeof FINANCE_DIRECTIONS)[number];\n\nexport const FINANCE_UNITS = [\n \"input_token\",\n \"output_token\",\n \"cached_input_token\",\n \"request\",\n \"credit_usd\",\n \"credit_unit\",\n \"model_unit_minute\",\n \"model_unit_hour\",\n \"gb_month\",\n \"train_token\",\n \"unknown\",\n] as const;\nexport type FinanceUnit = (typeof FINANCE_UNITS)[number];\n\nexport const BUDGET_SCOPE_TYPES = [\"organization\", \"agent\", \"project\"] as const;\nexport type BudgetScopeType = (typeof BUDGET_SCOPE_TYPES)[number];\n\nexport const BUDGET_METRICS = [\"billed_cents\"] as const;\nexport type BudgetMetric = (typeof BUDGET_METRICS)[number];\n\nexport const BUDGET_WINDOW_KINDS = [\"calendar_month_utc\", \"lifetime\"] as const;\nexport type BudgetWindowKind = (typeof BUDGET_WINDOW_KINDS)[number];\n\nexport const BUDGET_THRESHOLD_TYPES = [\"soft\", \"hard\"] as const;\nexport type BudgetThresholdType = (typeof BUDGET_THRESHOLD_TYPES)[number];\n\nexport const BUDGET_INCIDENT_STATUSES = [\"open\", \"resolved\", \"dismissed\"] as const;\nexport type BudgetIncidentStatus = (typeof BUDGET_INCIDENT_STATUSES)[number];\n\nexport const BUDGET_INCIDENT_RESOLUTION_ACTIONS = [\n \"keep_paused\",\n \"raise_budget_and_resume\",\n] as const;\nexport type BudgetIncidentResolutionAction = (typeof BUDGET_INCIDENT_RESOLUTION_ACTIONS)[number];\n\nexport const HEARTBEAT_INVOCATION_SOURCES = [\n \"timer\",\n \"assignment\",\n \"review\",\n \"on_demand\",\n \"automation\",\n] as const;\nexport type HeartbeatInvocationSource = (typeof HEARTBEAT_INVOCATION_SOURCES)[number];\n\nexport const WAKEUP_TRIGGER_DETAILS = [\"manual\", \"ping\", \"callback\", \"system\"] as const;\nexport type WakeupTriggerDetail = (typeof WAKEUP_TRIGGER_DETAILS)[number];\n\nexport const WAKEUP_REQUEST_STATUSES = [\n \"queued\",\n \"deferred_issue_execution\",\n \"deferred_agent_paused\",\n \"claimed\",\n \"coalesced\",\n \"skipped\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type WakeupRequestStatus = (typeof WAKEUP_REQUEST_STATUSES)[number];\n\nexport const HEARTBEAT_RUN_STATUSES = [\n \"queued\",\n \"running\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n \"timed_out\",\n] as const;\nexport type HeartbeatRunStatus = (typeof HEARTBEAT_RUN_STATUSES)[number];\n\nexport const LIVE_EVENT_TYPES = [\n \"heartbeat.run.queued\",\n \"heartbeat.run.status\",\n \"heartbeat.run.event\",\n \"heartbeat.run.log\",\n \"agent.status\",\n \"activity.logged\",\n \"plugin.ui.updated\",\n \"plugin.worker.crashed\",\n \"plugin.worker.restarted\",\n] as const;\nexport type LiveEventType = (typeof LIVE_EVENT_TYPES)[number];\n\nexport const PRINCIPAL_TYPES = [\"user\", \"agent\"] as const;\nexport type PrincipalType = (typeof PRINCIPAL_TYPES)[number];\n\nexport const MEMBERSHIP_STATUSES = [\"pending\", \"active\", \"suspended\"] as const;\nexport type MembershipStatus = (typeof MEMBERSHIP_STATUSES)[number];\n\nexport const INSTANCE_USER_ROLES = [\"instance_admin\"] as const;\nexport type InstanceUserRole = (typeof INSTANCE_USER_ROLES)[number];\n\nexport const INVITE_TYPES = [\"company_join\", \"bootstrap_ceo\"] as const;\nexport type InviteType = (typeof INVITE_TYPES)[number];\n\nexport const INVITE_JOIN_TYPES = [\"human\", \"agent\", \"both\"] as const;\nexport type InviteJoinType = (typeof INVITE_JOIN_TYPES)[number];\n\nexport const JOIN_REQUEST_TYPES = [\"human\", \"agent\"] as const;\nexport type JoinRequestType = (typeof JOIN_REQUEST_TYPES)[number];\n\nexport const JOIN_REQUEST_STATUSES = [\"pending_approval\", \"approved\", \"rejected\"] as const;\nexport type JoinRequestStatus = (typeof JOIN_REQUEST_STATUSES)[number];\n\nexport const PERMISSION_KEYS = [\n \"agents:create\",\n \"users:invite\",\n \"users:manage_permissions\",\n \"tasks:assign\",\n \"tasks:assign_scope\",\n \"joins:approve\",\n] as const;\nexport type PermissionKey = (typeof PERMISSION_KEYS)[number];\n\n// ---------------------------------------------------------------------------\n// Plugin System \u2014 see doc/plugins/PLUGIN_SPEC.md for the full specification\n// ---------------------------------------------------------------------------\n\n/**\n * The current version of the Plugin API contract.\n *\n * Increment this value whenever a breaking change is made to the plugin API\n * so that the host can reject incompatible plugin manifests.\n *\n * @see PLUGIN_SPEC.md \u00A74 \u2014 Versioning\n */\nexport const PLUGIN_API_VERSION = 1 as const;\n\n/**\n * Lifecycle statuses for an installed plugin.\n *\n * State machine: installed \u2192 ready | error, ready \u2192 disabled | error | upgrade_pending | uninstalled,\n * disabled \u2192 ready | uninstalled, error \u2192 ready | uninstalled,\n * upgrade_pending \u2192 ready | error | uninstalled, uninstalled \u2192 installed (reinstall).\n *\n * @see {@link PluginStatus} \u2014 inferred union type\n * @see PLUGIN_SPEC.md \u00A721.3 `plugins.status`\n */\nexport const PLUGIN_STATUSES = [\n \"installed\",\n \"ready\",\n \"disabled\",\n \"error\",\n \"upgrade_pending\",\n \"uninstalled\",\n] as const;\nexport type PluginStatus = (typeof PLUGIN_STATUSES)[number];\n\n/**\n * Plugin classification categories. A plugin declares one or more categories\n * in its manifest to describe its primary purpose.\n *\n * @see PLUGIN_SPEC.md \u00A76.2\n */\nexport const PLUGIN_CATEGORIES = [\n \"connector\",\n \"workspace\",\n \"automation\",\n \"ui\",\n] as const;\nexport type PluginCategory = (typeof PLUGIN_CATEGORIES)[number];\n\n/**\n * Named permissions the host grants to a plugin. Plugins declare required\n * capabilities in their manifest; the host enforces them at runtime via the\n * plugin capability validator.\n *\n * Grouped into: Data Read, Data Write, Plugin State, Runtime/Integration,\n * Agent Tools, and UI.\n *\n * @see PLUGIN_SPEC.md \u00A715 \u2014 Capability Model\n */\nexport const PLUGIN_CAPABILITIES = [\n // Data Read\n \"organizations.read\",\n \"projects.read\",\n \"project.workspaces.read\",\n \"issues.read\",\n \"issue.comments.read\",\n \"issue.documents.read\",\n \"agents.read\",\n \"goals.read\",\n \"goals.create\",\n \"goals.update\",\n \"activity.read\",\n \"costs.read\",\n // Data Write\n \"issues.create\",\n \"issues.update\",\n \"issue.comments.create\",\n \"issue.documents.write\",\n \"agents.pause\",\n \"agents.resume\",\n \"agents.invoke\",\n \"agent.sessions.create\",\n \"agent.sessions.list\",\n \"agent.sessions.send\",\n \"agent.sessions.close\",\n \"activity.log.write\",\n \"metrics.write\",\n // Plugin State\n \"plugin.state.read\",\n \"plugin.state.write\",\n // Runtime / Integration\n \"events.subscribe\",\n \"events.emit\",\n \"jobs.schedule\",\n \"webhooks.receive\",\n \"http.outbound\",\n \"secrets.read-ref\",\n // Agent Tools\n \"agent.tools.register\",\n // UI\n \"instance.settings.register\",\n \"ui.sidebar.register\",\n \"ui.page.register\",\n \"ui.detailTab.register\",\n \"ui.dashboardWidget.register\",\n \"ui.commentAnnotation.register\",\n \"ui.action.register\",\n] as const;\nexport type PluginCapability = (typeof PLUGIN_CAPABILITIES)[number];\n\n/**\n * UI extension slot types. Each slot type corresponds to a mount point in the\n * Rudder UI where plugin components can be rendered.\n *\n * @see PLUGIN_SPEC.md \u00A719 \u2014 UI Extension Model\n */\nexport const PLUGIN_UI_SLOT_TYPES = [\n \"page\",\n \"detailTab\",\n \"taskDetailView\",\n \"dashboardWidget\",\n \"sidebar\",\n \"sidebarPanel\",\n \"projectSidebarItem\",\n \"globalToolbarButton\",\n \"toolbarButton\",\n \"contextMenuItem\",\n \"commentAnnotation\",\n \"commentContextMenuItem\",\n \"settingsPage\",\n] as const;\nexport type PluginUiSlotType = (typeof PLUGIN_UI_SLOT_TYPES)[number];\n\n/**\n * Reserved organization-scoped route segments that plugin page routes may not claim.\n *\n * These map to first-class host pages under `/:organizationPrefix/...`.\n */\nexport const PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS = [\n \"dashboard\",\n \"onboarding\",\n \"organizations\",\n \"organization\",\n \"settings\",\n \"plugins\",\n \"org\",\n \"agents\",\n \"projects\",\n \"issues\",\n \"goals\",\n \"approvals\",\n \"costs\",\n \"activity\",\n \"inbox\",\n \"design-guide\",\n \"tests\",\n] as const;\nexport type PluginReservedCompanyRouteSegment =\n (typeof PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS)[number];\n\n/**\n * Launcher placement zones describe where a plugin-owned launcher can appear\n * in the host UI. These are intentionally aligned with current slot surfaces\n * so manifest authors can describe launch intent without coupling to a single\n * component implementation detail.\n */\nexport const PLUGIN_LAUNCHER_PLACEMENT_ZONES = [\n \"page\",\n \"detailTab\",\n \"taskDetailView\",\n \"dashboardWidget\",\n \"sidebar\",\n \"sidebarPanel\",\n \"projectSidebarItem\",\n \"globalToolbarButton\",\n \"toolbarButton\",\n \"contextMenuItem\",\n \"commentAnnotation\",\n \"commentContextMenuItem\",\n \"settingsPage\",\n] as const;\nexport type PluginLauncherPlacementZone = (typeof PLUGIN_LAUNCHER_PLACEMENT_ZONES)[number];\n\n/**\n * Launcher action kinds describe what the launcher does when activated.\n */\nexport const PLUGIN_LAUNCHER_ACTIONS = [\n \"navigate\",\n \"openModal\",\n \"openDrawer\",\n \"openPopover\",\n \"performAction\",\n \"deepLink\",\n] as const;\nexport type PluginLauncherAction = (typeof PLUGIN_LAUNCHER_ACTIONS)[number];\n\n/**\n * Optional size hints the host can use when rendering plugin-owned launcher\n * destinations such as overlays, drawers, or full page handoffs.\n */\nexport const PLUGIN_LAUNCHER_BOUNDS = [\n \"inline\",\n \"compact\",\n \"default\",\n \"wide\",\n \"full\",\n] as const;\nexport type PluginLauncherBounds = (typeof PLUGIN_LAUNCHER_BOUNDS)[number];\n\n/**\n * Render environments describe the container a launcher expects after it is\n * activated. The current host may map these to concrete UI primitives.\n */\nexport const PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS = [\n \"hostInline\",\n \"hostOverlay\",\n \"hostRoute\",\n \"external\",\n \"iframe\",\n] as const;\nexport type PluginLauncherRenderEnvironment =\n (typeof PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS)[number];\n\n/**\n * Entity types that a `detailTab` UI slot can attach to.\n *\n * @see PLUGIN_SPEC.md \u00A719.3 \u2014 Detail Tabs\n */\nexport const PLUGIN_UI_SLOT_ENTITY_TYPES = [\n \"project\",\n \"issue\",\n \"agent\",\n \"goal\",\n \"run\",\n \"comment\",\n] as const;\nexport type PluginUiSlotEntityType = (typeof PLUGIN_UI_SLOT_ENTITY_TYPES)[number];\n\n/**\n * Scope kinds for plugin state storage. Determines the granularity at which\n * a plugin stores key-value state data.\n *\n * @see PLUGIN_SPEC.md \u00A721.3 `plugin_state.scope_kind`\n */\nexport const PLUGIN_STATE_SCOPE_KINDS = [\n \"instance\",\n \"organization\",\n \"project\",\n \"project_workspace\",\n \"agent\",\n \"issue\",\n \"goal\",\n \"run\",\n] as const;\nexport type PluginStateScopeKind = (typeof PLUGIN_STATE_SCOPE_KINDS)[number];\n\n/** Statuses for a plugin's scheduled job definition. */\nexport const PLUGIN_JOB_STATUSES = [\n \"active\",\n \"paused\",\n \"failed\",\n] as const;\nexport type PluginJobStatus = (typeof PLUGIN_JOB_STATUSES)[number];\n\n/** Statuses for individual job run executions. */\nexport const PLUGIN_JOB_RUN_STATUSES = [\n \"pending\",\n \"queued\",\n \"running\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type PluginJobRunStatus = (typeof PLUGIN_JOB_RUN_STATUSES)[number];\n\n/** What triggered a particular job run. */\nexport const PLUGIN_JOB_RUN_TRIGGERS = [\n \"schedule\",\n \"manual\",\n \"retry\",\n] as const;\nexport type PluginJobRunTrigger = (typeof PLUGIN_JOB_RUN_TRIGGERS)[number];\n\n/** Statuses for inbound webhook deliveries. */\nexport const PLUGIN_WEBHOOK_DELIVERY_STATUSES = [\n \"pending\",\n \"success\",\n \"failed\",\n] as const;\nexport type PluginWebhookDeliveryStatus = (typeof PLUGIN_WEBHOOK_DELIVERY_STATUSES)[number];\n\n/**\n * Core domain event types that plugins can subscribe to via the\n * `events.subscribe` capability.\n *\n * @see PLUGIN_SPEC.md \u00A716 \u2014 Event System\n */\nexport const PLUGIN_EVENT_TYPES = [\n \"organization.created\",\n \"organization.updated\",\n \"project.created\",\n \"project.updated\",\n \"project.workspace_created\",\n \"project.workspace_updated\",\n \"project.workspace_deleted\",\n \"issue.created\",\n \"issue.updated\",\n \"issue.comment.created\",\n \"agent.created\",\n \"agent.updated\",\n \"agent.status_changed\",\n \"agent.run.started\",\n \"agent.run.finished\",\n \"agent.run.failed\",\n \"agent.run.cancelled\",\n \"goal.created\",\n \"goal.updated\",\n \"approval.created\",\n \"approval.decided\",\n \"cost_event.created\",\n \"activity.logged\",\n] as const;\nexport type PluginEventType = (typeof PLUGIN_EVENT_TYPES)[number];\n\n/**\n * Error codes returned by the plugin bridge when a UI \u2192 worker call fails.\n *\n * @see PLUGIN_SPEC.md \u00A719.7 \u2014 Error Propagation Through The Bridge\n */\nexport const PLUGIN_BRIDGE_ERROR_CODES = [\n \"WORKER_UNAVAILABLE\",\n \"CAPABILITY_DENIED\",\n \"WORKER_ERROR\",\n \"TIMEOUT\",\n \"UNKNOWN\",\n] as const;\nexport type PluginBridgeErrorCode = (typeof PLUGIN_BRIDGE_ERROR_CODES)[number];\n", "import { z } from \"zod\";\n\nexport const instanceLocaleSchema = z.enum([\"en\", \"zh-CN\"]);\n\nexport const instanceGeneralSettingsSchema = z.object({\n censorUsernameInLogs: z.boolean().default(false),\n showDeveloperDiagnostics: z.boolean().default(false),\n locale: instanceLocaleSchema.default(\"en\"),\n}).strict();\n\nexport const patchInstanceGeneralSettingsSchema = instanceGeneralSettingsSchema.partial();\n\nexport const instanceNotificationSettingsSchema = z.object({\n desktopInboxNotifications: z.boolean().default(true),\n desktopDockBadge: z.boolean().default(true),\n desktopIssueNotifications: z.boolean().default(true),\n desktopChatNotifications: z.boolean().default(true),\n}).strict();\n\nexport const patchInstanceNotificationSettingsSchema = instanceNotificationSettingsSchema.partial();\n\nexport const instanceLangfuseSettingsSchema = z.object({\n enabled: z.boolean().default(false),\n baseUrl: z.string().url().default(\"http://localhost:3000\"),\n publicKey: z.string().default(\"\"),\n environment: z.string().default(\"\"),\n secretKeyConfigured: z.boolean().default(false),\n managedByEnv: z.boolean().default(false),\n}).strict();\n\nexport const patchInstanceLangfuseSettingsSchema = z.object({\n enabled: z.boolean().optional(),\n baseUrl: z.string().url().optional(),\n publicKey: z.string().optional(),\n secretKey: z.string().optional(),\n environment: z.string().optional(),\n clearSecretKey: z.boolean().optional(),\n}).strict();\n\nexport const OPERATOR_PROFILE_MORE_ABOUT_YOU_MAX_LENGTH = 8000;\n\nexport const operatorProfileSettingsSchema = z.object({\n nickname: z.string().max(80).default(\"\"),\n moreAboutYou: z.string().max(OPERATOR_PROFILE_MORE_ABOUT_YOU_MAX_LENGTH).default(\"\"),\n}).strict();\n\nexport const patchOperatorProfileSettingsSchema = operatorProfileSettingsSchema.partial();\n\nexport const instancePathPickerSelectionTypeSchema = z.enum([\"file\", \"directory\"]);\n\nexport const instancePathPickerRequestSchema = z.object({\n selectionType: instancePathPickerSelectionTypeSchema,\n}).strict();\n\nexport const instancePathPickerResultSchema = z.object({\n path: z.string().nullable(),\n cancelled: z.boolean(),\n}).strict();\n\nexport type InstanceGeneralSettings = z.infer<typeof instanceGeneralSettingsSchema>;\nexport type PatchInstanceGeneralSettings = z.infer<typeof patchInstanceGeneralSettingsSchema>;\nexport type InstanceLangfuseSettings = z.infer<typeof instanceLangfuseSettingsSchema>;\nexport type PatchInstanceLangfuseSettings = z.infer<typeof patchInstanceLangfuseSettingsSchema>;\nexport type InstanceLocale = z.infer<typeof instanceLocaleSchema>;\nexport type OperatorProfileSettings = z.infer<typeof operatorProfileSettingsSchema>;\nexport type PatchOperatorProfileSettings = z.infer<typeof patchOperatorProfileSettingsSchema>;\nexport type InstanceNotificationSettings = z.infer<typeof instanceNotificationSettingsSchema>;\nexport type PatchInstanceNotificationSettings = z.infer<typeof patchInstanceNotificationSettingsSchema>;\nexport type InstancePathPickerSelectionType = z.infer<typeof instancePathPickerSelectionTypeSchema>;\nexport type InstancePathPickerRequest = z.infer<typeof instancePathPickerRequestSchema>;\nexport type InstancePathPickerResult = z.infer<typeof instancePathPickerResultSchema>;\n", "import { z } from \"zod\";\nimport {\n BUDGET_INCIDENT_RESOLUTION_ACTIONS,\n BUDGET_METRICS,\n BUDGET_SCOPE_TYPES,\n BUDGET_WINDOW_KINDS,\n} from \"../constants.js\";\n\nexport const upsertBudgetPolicySchema = z.object({\n scopeType: z.enum(BUDGET_SCOPE_TYPES),\n scopeId: z.string().uuid(),\n metric: z.enum(BUDGET_METRICS).optional().default(\"billed_cents\"),\n windowKind: z.enum(BUDGET_WINDOW_KINDS).optional().default(\"calendar_month_utc\"),\n amount: z.number().int().nonnegative(),\n warnPercent: z.number().int().min(1).max(99).optional().default(80),\n hardStopEnabled: z.boolean().optional().default(true),\n notifyEnabled: z.boolean().optional().default(true),\n isActive: z.boolean().optional().default(true),\n});\n\nexport type UpsertBudgetPolicy = z.infer<typeof upsertBudgetPolicySchema>;\n\nexport const resolveBudgetIncidentSchema = z.object({\n action: z.enum(BUDGET_INCIDENT_RESOLUTION_ACTIONS),\n amount: z.number().int().nonnegative().optional(),\n decisionNote: z.string().optional().nullable(),\n}).superRefine((value, ctx) => {\n if (value.action === \"raise_budget_and_resume\" && typeof value.amount !== \"number\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"amount is required when raising a budget\",\n path: [\"amount\"],\n });\n }\n});\n\nexport type ResolveBudgetIncident = z.infer<typeof resolveBudgetIncidentSchema>;\n", "import { z } from \"zod\";\nimport { CHAT_ISSUE_CREATION_MODES, ORGANIZATION_STATUSES } from \"../constants.js\";\n\nconst logoAssetIdSchema = z.string().uuid().nullable().optional();\nconst brandColorSchema = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();\nexport const createOrganizationSchema = z.object({\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n defaultChatIssueCreationMode: z.enum(CHAT_ISSUE_CREATION_MODES).optional().default(\"manual_approval\"),\n brandColor: brandColorSchema,\n requireBoardApprovalForNewAgents: z.boolean().optional(),\n});\n\nexport type CreateOrganization = z.infer<typeof createOrganizationSchema>;\n\nexport const updateOrganizationSchema = createOrganizationSchema\n .partial()\n .extend({\n status: z.enum(ORGANIZATION_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n requireBoardApprovalForNewAgents: z.boolean().optional(),\n defaultChatIssueCreationMode: z.enum(CHAT_ISSUE_CREATION_MODES).optional(),\n brandColor: brandColorSchema,\n logoAssetId: logoAssetIdSchema,\n });\n\nexport type UpdateOrganization = z.infer<typeof updateOrganizationSchema>;\n\nexport const updateOrganizationBrandingSchema = z\n .object({\n name: z.string().min(1).optional(),\n description: z.string().nullable().optional(),\n brandColor: brandColorSchema,\n logoAssetId: logoAssetIdSchema,\n })\n .strict()\n .refine(\n (value) =>\n value.name !== undefined\n || value.description !== undefined\n || value.brandColor !== undefined\n || value.logoAssetId !== undefined,\n \"At least one branding field must be provided\",\n );\n\nexport type UpdateOrganizationBranding = z.infer<typeof updateOrganizationBrandingSchema>;\n\nexport const updateOrganizationWorkspaceFileSchema = z.object({\n content: z.string(),\n});\n\nexport type UpdateOrganizationWorkspaceFile = z.infer<typeof updateOrganizationWorkspaceFileSchema>;\n", "import { z } from \"zod\";\nimport { SECRET_PROVIDERS } from \"../constants.js\";\n\nexport const envBindingPlainSchema = z.object({\n type: z.literal(\"plain\"),\n value: z.string(),\n});\n\nexport const envBindingSecretRefSchema = z.object({\n type: z.literal(\"secret_ref\"),\n secretId: z.string().uuid(),\n version: z.union([z.literal(\"latest\"), z.number().int().positive()]).optional(),\n});\n\n// Backward-compatible union that accepts legacy inline values.\nexport const envBindingSchema = z.union([\n z.string(),\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n]);\n\nexport const envConfigSchema = z.record(envBindingSchema);\n\nexport const createSecretSchema = z.object({\n name: z.string().min(1),\n provider: z.enum(SECRET_PROVIDERS).optional(),\n value: z.string().min(1),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type CreateSecret = z.infer<typeof createSecretSchema>;\n\nexport const rotateSecretSchema = z.object({\n value: z.string().min(1),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type RotateSecret = z.infer<typeof rotateSecretSchema>;\n\nexport const updateSecretSchema = z.object({\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type UpdateSecret = z.infer<typeof updateSecretSchema>;\n", "import { z } from \"zod\";\nimport { AGENT_RUNTIME_TYPES } from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\n\nconst agentRuntimeTypes = new Set<string>(AGENT_RUNTIME_TYPES);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function validateModelFallbacksConfig(\n value: Record<string, unknown>,\n ctx: z.RefinementCtx,\n pathPrefix: Array<string | number>,\n) {\n const fallbackModels = value.modelFallbacks;\n if (fallbackModels === undefined) return;\n\n if (!Array.isArray(fallbackModels)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks must be an array\",\n path: [...pathPrefix, \"modelFallbacks\"],\n });\n return;\n }\n\n fallbackModels.forEach((fallback, index) => {\n if (typeof fallback === \"string\") {\n if (fallback.trim().length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks string entries must be non-empty\",\n path: [...pathPrefix, \"modelFallbacks\", index],\n });\n }\n return;\n }\n\n if (!isRecord(fallback)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must be strings or runtime/model objects\",\n path: [...pathPrefix, \"modelFallbacks\", index],\n });\n return;\n }\n\n if (typeof fallback.agentRuntimeType !== \"string\" || fallback.agentRuntimeType.trim().length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must include agentRuntimeType\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"agentRuntimeType\"],\n });\n } else if (!agentRuntimeTypes.has(fallback.agentRuntimeType)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must include a valid agentRuntimeType\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"agentRuntimeType\"],\n });\n }\n if (typeof fallback.model !== \"string\" || fallback.model.trim().length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must include model\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"model\"],\n });\n }\n if (fallback.config !== undefined && !isRecord(fallback.config)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entry config must be an object\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"config\"],\n });\n } else if (isRecord(fallback.config) && fallback.config.env !== undefined) {\n const parsed = envConfigSchema.safeParse(fallback.config.env);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entry config.env must be a map of valid env bindings\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"config\", \"env\"],\n });\n }\n }\n });\n}\n", "import { z } from \"zod\";\nimport {\n AGENT_RUNTIME_TYPES,\n ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES,\n ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES,\n} from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\nimport { validateModelFallbacksConfig } from \"./model-fallbacks.js\";\n\nexport const organizationIntelligenceProfilePurposeSchema = z.enum(\n ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES,\n);\n\nexport const organizationIntelligenceProfileStatusSchema = z.enum(\n ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES,\n);\n\nexport const organizationIntelligenceProfileConfigSchema = z.record(z.unknown()).superRefine((value, ctx) => {\n const envValue = value.env;\n if (envValue !== undefined) {\n const parsed = envConfigSchema.safeParse(envValue);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"agentRuntimeConfig.env must be a map of valid env bindings\",\n path: [\"env\"],\n });\n }\n }\n\n validateModelFallbacksConfig(value, ctx, []);\n});\n\nexport const upsertOrganizationIntelligenceProfileSchema = z.object({\n agentRuntimeType: z.enum(AGENT_RUNTIME_TYPES),\n agentRuntimeConfig: organizationIntelligenceProfileConfigSchema.default({}),\n status: organizationIntelligenceProfileStatusSchema.optional().default(\"configured\"),\n});\n\nexport type OrganizationIntelligenceProfilePurposeInput = z.infer<typeof organizationIntelligenceProfilePurposeSchema>;\nexport type UpsertOrganizationIntelligenceProfileInput = z.infer<typeof upsertOrganizationIntelligenceProfileSchema>;\n", "import { z } from \"zod\";\nimport { ORGANIZATION_RESOURCE_KINDS, PROJECT_RESOURCE_ATTACHMENT_ROLES } from \"../constants.js\";\n\nexport const organizationResourceKindSchema = z.enum(ORGANIZATION_RESOURCE_KINDS);\nexport const projectResourceAttachmentRoleSchema = z.enum(PROJECT_RESOURCE_ATTACHMENT_ROLES);\n\nexport const createOrganizationResourceSchema = z.object({\n name: z.string().min(1),\n kind: organizationResourceKindSchema,\n locator: z.string().min(1),\n description: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateOrganizationResource = z.infer<typeof createOrganizationResourceSchema>;\n\nexport const updateOrganizationResourceSchema = z.object({\n name: z.string().min(1).optional(),\n kind: organizationResourceKindSchema.optional(),\n locator: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n}).strict();\n\nexport type UpdateOrganizationResource = z.infer<typeof updateOrganizationResourceSchema>;\n\nexport const projectResourceAttachmentInputSchema = z.object({\n resourceId: z.string().uuid(),\n role: projectResourceAttachmentRoleSchema.optional(),\n note: z.string().optional().nullable(),\n sortOrder: z.number().int().nonnegative().optional(),\n}).strict();\n\nexport type ProjectResourceAttachmentInputPayload = z.infer<typeof projectResourceAttachmentInputSchema>;\n\nexport const updateProjectResourceAttachmentSchema = z.object({\n role: projectResourceAttachmentRoleSchema.optional(),\n note: z.string().optional().nullable(),\n sortOrder: z.number().int().nonnegative().optional(),\n}).strict();\n\nexport type UpdateProjectResourceAttachment = z.infer<typeof updateProjectResourceAttachmentSchema>;\n\nexport const createProjectInlineResourceSchema = createOrganizationResourceSchema.extend({\n role: projectResourceAttachmentRoleSchema.optional(),\n note: z.string().optional().nullable(),\n sortOrder: z.number().int().nonnegative().optional(),\n}).strict();\n\nexport type CreateProjectInlineResource = z.infer<typeof createProjectInlineResourceSchema>;\n", "import { z } from \"zod\";\nimport {\n CHAT_CONTEXT_ENTITY_TYPES,\n CHAT_CONVERSATION_STATUSES,\n CHAT_ISSUE_CREATION_MODES,\n CHAT_MESSAGE_KINDS,\n CHAT_MESSAGE_ROLES,\n CHAT_MESSAGE_STATUSES,\n} from \"../constants.js\";\n\nexport const chatConversationStatusSchema = z.enum(CHAT_CONVERSATION_STATUSES);\nexport const chatIssueCreationModeSchema = z.enum(CHAT_ISSUE_CREATION_MODES);\nexport const chatMessageRoleSchema = z.enum(CHAT_MESSAGE_ROLES);\nexport const chatMessageKindSchema = z.enum(CHAT_MESSAGE_KINDS);\nexport const chatMessageStatusSchema = z.enum(CHAT_MESSAGE_STATUSES);\nexport const chatContextEntityTypeSchema = z.enum(CHAT_CONTEXT_ENTITY_TYPES);\n\nexport const createChatContextLinkSchema = z.object({\n entityType: chatContextEntityTypeSchema,\n entityId: z.string().min(1),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport const createChatConversationSchema = z.object({\n title: z.string().trim().min(1).max(200).optional(),\n summary: z.string().trim().max(5000).optional().nullable(),\n preferredAgentId: z.string().uuid().optional().nullable(),\n issueCreationMode: chatIssueCreationModeSchema.optional(),\n planMode: z.boolean().optional(),\n contextLinks: z.array(createChatContextLinkSchema).optional().default([]),\n});\n\nexport const setChatProjectContextSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n});\n\nexport const updateChatConversationSchema = createChatConversationSchema\n .partial()\n .extend({\n status: chatConversationStatusSchema.optional(),\n routedAgentId: z.string().uuid().optional().nullable(),\n primaryIssueId: z.string().uuid().optional().nullable(),\n resolvedAt: z.string().datetime().optional().nullable(),\n });\n\nexport const addChatMessageSchema = z.object({\n body: z.string().trim().min(1).max(20000),\n editUserMessageId: z.string().uuid().optional().nullable(),\n});\n\nconst chatRichReferenceDisplaySchema = z.enum([\"card\", \"inline\"]);\nconst chatIssueIdentifierSchema = z.string().trim().min(1).max(64).regex(/^[A-Z0-9][A-Z0-9-]*$/i);\nconst chatAskUserIdentifierSchema = z.string().trim().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/);\n\nexport const chatAskUserOptionSchema = z.object({\n id: chatAskUserIdentifierSchema,\n label: z.string().trim().min(1).max(80),\n description: z.string().trim().min(1).max(220).optional(),\n recommended: z.boolean().optional(),\n});\n\nexport const chatAskUserQuestionSchema = z.object({\n id: chatAskUserIdentifierSchema,\n header: z.string().trim().min(1).max(32).optional(),\n question: z.string().trim().min(1).max(240),\n options: z.array(chatAskUserOptionSchema).min(2).max(3),\n selectionMode: z.enum([\"single\", \"multiple\"]).optional(),\n allowFreeform: z.boolean().optional(),\n}).superRefine((question, ctx) => {\n const optionIds = new Set<string>();\n question.options.forEach((option, index) => {\n if (optionIds.has(option.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Option ids must be unique within each question\",\n path: [\"options\", index, \"id\"],\n });\n return;\n }\n optionIds.add(option.id);\n });\n});\n\nexport const chatAskUserRequestSchema = z.object({\n questions: z.array(chatAskUserQuestionSchema).min(1).max(3),\n}).superRefine((request, ctx) => {\n const questionIds = new Set<string>();\n request.questions.forEach((question, index) => {\n if (questionIds.has(question.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Question ids must be unique within requestUserInput\",\n path: [\"questions\", index, \"id\"],\n });\n return;\n }\n questionIds.add(question.id);\n });\n});\n\nconst chatIssueRichReferenceSchema = z.object({\n type: z.literal(\"issue\"),\n issueId: z.string().uuid().optional(),\n identifier: chatIssueIdentifierSchema.optional(),\n display: chatRichReferenceDisplaySchema.optional(),\n}).refine((value) => Boolean(value.issueId || value.identifier), {\n message: \"issueId or identifier is required\",\n});\n\nconst chatIssueCommentRichReferenceSchema = z.object({\n type: z.literal(\"issue_comment\"),\n issueId: z.string().uuid().optional(),\n identifier: chatIssueIdentifierSchema.optional(),\n commentId: z.string().uuid(),\n display: chatRichReferenceDisplaySchema.optional(),\n}).refine((value) => Boolean(value.issueId || value.identifier), {\n message: \"issueId or identifier is required\",\n});\n\nexport const chatRichReferenceSchema = z.union([\n chatIssueRichReferenceSchema,\n chatIssueCommentRichReferenceSchema,\n]);\n\nexport const chatRichReferencesSchema = z.array(chatRichReferenceSchema).max(5);\n\nexport function chatRichReferencesFromStructuredPayload(payload: unknown) {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) return [];\n const rawReferences = (payload as Record<string, unknown>).richReferences;\n if (!Array.isArray(rawReferences)) return [];\n\n return rawReferences\n .map((reference) => chatRichReferenceSchema.safeParse(reference))\n .filter((result): result is z.SafeParseSuccess<z.infer<typeof chatRichReferenceSchema>> => result.success)\n .map((result) => result.data)\n .slice(0, 5);\n}\n\nexport function chatAskUserRequestFromStructuredPayload(payload: unknown) {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n const rawRequest = (payload as Record<string, unknown>).requestUserInput;\n const parsed = chatAskUserRequestSchema.safeParse(rawRequest);\n return parsed.success ? parsed.data : null;\n}\n\nexport function sanitizeChatStructuredPayload(payload: Record<string, unknown> | null | undefined) {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n const next = { ...payload };\n const requestUserInput = chatAskUserRequestFromStructuredPayload(payload);\n if (requestUserInput) {\n next.requestUserInput = requestUserInput;\n } else {\n delete next.requestUserInput;\n }\n const richReferences = chatRichReferencesFromStructuredPayload(payload);\n if (richReferences.length > 0) {\n next.richReferences = richReferences;\n } else {\n delete next.richReferences;\n }\n return Object.keys(next).length > 0 ? next : null;\n}\n\nexport const createChatAttachmentMetadataSchema = z.object({\n messageId: z.string().uuid(),\n});\n\nconst chatIssueProposalSchema = z.object({\n title: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(20000),\n priority: z.enum([\"critical\", \"high\", \"medium\", \"low\"]).optional().default(\"medium\"),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n parentId: z.string().uuid().optional().nullable(),\n assigneeAgentId: z.string().uuid().optional().nullable(),\n assigneeUserId: z.string().trim().optional().nullable(),\n reviewerAgentId: z.string().uuid().optional().nullable(),\n reviewerUserId: z.string().trim().optional().nullable(),\n labelIds: z.array(z.string().uuid()).optional(),\n});\n\nexport const convertChatToIssueSchema = z.object({\n messageId: z.string().uuid().optional().nullable(),\n proposal: chatIssueProposalSchema.optional(),\n});\n\nexport const chatOperationProposalSchema = z.object({\n targetType: z.enum([\"organization\", \"agent\"]),\n targetId: z.string().min(1),\n summary: z.string().trim().min(1).max(500),\n patch: z.record(z.unknown()),\n});\n\nexport const resolveChatOperationProposalSchema = z.object({\n action: z.enum([\"approve\", \"reject\", \"requestRevision\"]),\n decisionNote: z.string().trim().max(5000).optional().nullable(),\n});\n\nexport const updateChatConversationUserStateSchema = z.object({\n pinned: z.boolean().optional(),\n unread: z.boolean().optional(),\n});\n\nexport type ChatConversationStatus = z.infer<typeof chatConversationStatusSchema>;\nexport type ChatIssueCreationMode = z.infer<typeof chatIssueCreationModeSchema>;\nexport type ChatMessageRole = z.infer<typeof chatMessageRoleSchema>;\nexport type ChatMessageKind = z.infer<typeof chatMessageKindSchema>;\nexport type ChatMessageStatus = z.infer<typeof chatMessageStatusSchema>;\nexport type ChatContextEntityType = z.infer<typeof chatContextEntityTypeSchema>;\nexport type CreateChatContextLink = z.infer<typeof createChatContextLinkSchema>;\nexport type CreateChatConversation = z.infer<typeof createChatConversationSchema>;\nexport type SetChatProjectContext = z.infer<typeof setChatProjectContextSchema>;\nexport type UpdateChatConversation = z.infer<typeof updateChatConversationSchema>;\nexport type AddChatMessage = z.infer<typeof addChatMessageSchema>;\nexport type ChatAskUserOption = z.infer<typeof chatAskUserOptionSchema>;\nexport type ChatAskUserQuestion = z.infer<typeof chatAskUserQuestionSchema>;\nexport type ChatAskUserRequest = z.infer<typeof chatAskUserRequestSchema>;\nexport type ChatRichReference = z.infer<typeof chatRichReferenceSchema>;\nexport type CreateChatAttachmentMetadata = z.infer<typeof createChatAttachmentMetadataSchema>;\nexport type ConvertChatToIssue = z.infer<typeof convertChatToIssueSchema>;\nexport type ChatOperationProposal = z.infer<typeof chatOperationProposalSchema>;\nexport type ResolveChatOperationProposal = z.infer<typeof resolveChatOperationProposalSchema>;\nexport type UpdateChatConversationUserState = z.infer<typeof updateChatConversationUserStateSchema>;\n", "import { z } from \"zod\";\n\nexport const organizationSkillSourceTypeSchema = z.enum([\"local_path\", \"github\", \"url\", \"catalog\", \"skills_sh\"]);\nexport const organizationSkillTrustLevelSchema = z.enum([\"markdown_only\", \"assets\", \"scripts_executables\"]);\nexport const organizationSkillCompatibilitySchema = z.enum([\"compatible\", \"unknown\", \"invalid\"]);\nexport const organizationSkillSourceBadgeSchema = z.enum([\n \"rudder\",\n \"community\",\n \"github\",\n \"local\",\n \"url\",\n \"catalog\",\n \"skills_sh\",\n]);\n\nexport const organizationSkillFileInventoryEntrySchema = z.object({\n path: z.string().min(1),\n kind: z.enum([\"skill\", \"markdown\", \"reference\", \"script\", \"asset\", \"other\"]),\n});\n\nexport const organizationSkillSchema = z.object({\n id: z.string().uuid(),\n orgId: z.string().uuid(),\n key: z.string().min(1),\n slug: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullable(),\n markdown: z.string(),\n sourceType: organizationSkillSourceTypeSchema,\n sourceLocator: z.string().nullable(),\n sourceRef: z.string().nullable(),\n trustLevel: organizationSkillTrustLevelSchema,\n compatibility: organizationSkillCompatibilitySchema,\n fileInventory: z.array(organizationSkillFileInventoryEntrySchema).default([]),\n metadata: z.record(z.unknown()).nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\nexport const organizationSkillListItemSchema = organizationSkillSchema.extend({\n attachedAgentCount: z.number().int().nonnegative(),\n editable: z.boolean(),\n editableReason: z.string().nullable(),\n sourceLabel: z.string().nullable(),\n sourceBadge: organizationSkillSourceBadgeSchema,\n sourcePath: z.string().nullable(),\n workspaceEditPath: z.string().nullable(),\n});\n\nexport const organizationSkillUsageAgentSchema = z.object({\n id: z.string().uuid(),\n name: z.string().min(1),\n urlKey: z.string().min(1),\n agentRuntimeType: z.string().min(1),\n desired: z.boolean(),\n actualState: z.string().nullable(),\n});\n\nexport const organizationSkillDetailSchema = organizationSkillSchema.extend({\n attachedAgentCount: z.number().int().nonnegative(),\n usedByAgents: z.array(organizationSkillUsageAgentSchema).default([]),\n editable: z.boolean(),\n editableReason: z.string().nullable(),\n sourceLabel: z.string().nullable(),\n sourceBadge: organizationSkillSourceBadgeSchema,\n sourcePath: z.string().nullable(),\n workspaceEditPath: z.string().nullable(),\n});\n\nexport const organizationSkillUpdateStatusSchema = z.object({\n supported: z.boolean(),\n reason: z.string().nullable(),\n trackingRef: z.string().nullable(),\n currentRef: z.string().nullable(),\n latestRef: z.string().nullable(),\n hasUpdate: z.boolean(),\n});\n\nexport const organizationSkillImportSchema = z.object({\n source: z.string().min(1),\n});\n\nexport const organizationSkillProjectScanRequestSchema = z.object({\n projectIds: z.array(z.string().uuid()).optional(),\n workspaceIds: z.array(z.string().uuid()).optional(),\n});\n\nexport const organizationSkillProjectScanSkippedSchema = z.object({\n projectId: z.string().uuid(),\n projectName: z.string().min(1),\n workspaceId: z.string().uuid().nullable(),\n workspaceName: z.string().nullable(),\n path: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillProjectScanConflictSchema = z.object({\n slug: z.string().min(1),\n key: z.string().min(1),\n projectId: z.string().uuid(),\n projectName: z.string().min(1),\n workspaceId: z.string().uuid(),\n workspaceName: z.string().min(1),\n path: z.string().min(1),\n existingSkillId: z.string().uuid(),\n existingSkillKey: z.string().min(1),\n existingSourceLocator: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillProjectScanResultSchema = z.object({\n scannedProjects: z.number().int().nonnegative(),\n scannedWorkspaces: z.number().int().nonnegative(),\n discovered: z.number().int().nonnegative(),\n imported: z.array(organizationSkillSchema),\n updated: z.array(organizationSkillSchema),\n skipped: z.array(organizationSkillProjectScanSkippedSchema),\n conflicts: z.array(organizationSkillProjectScanConflictSchema),\n warnings: z.array(z.string()),\n});\n\nexport const organizationSkillLocalScanRequestSchema = z.object({\n roots: z.array(z.string().min(1)).optional(),\n});\n\nexport const organizationSkillLocalScanSkippedSchema = z.object({\n root: z.string().min(1),\n path: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillLocalScanConflictSchema = z.object({\n root: z.string().min(1),\n path: z.string().min(1),\n slug: z.string().min(1),\n key: z.string().min(1),\n existingSkillId: z.string().uuid(),\n existingSkillKey: z.string().min(1),\n existingSourceLocator: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillLocalScanResultSchema = z.object({\n scannedRoots: z.number().int().nonnegative(),\n discovered: z.number().int().nonnegative(),\n imported: z.array(organizationSkillSchema),\n updated: z.array(organizationSkillSchema),\n skipped: z.array(organizationSkillLocalScanSkippedSchema),\n conflicts: z.array(organizationSkillLocalScanConflictSchema),\n warnings: z.array(z.string()),\n});\n\nexport const organizationSkillCreateSchema = z.object({\n name: z.string().min(1),\n slug: z.string().min(1).nullable().optional(),\n description: z.string().nullable().optional(),\n markdown: z.string().nullable().optional(),\n});\n\nexport const organizationSkillFileDetailSchema = z.object({\n skillId: z.string().uuid(),\n path: z.string().min(1),\n kind: z.enum([\"skill\", \"markdown\", \"reference\", \"script\", \"asset\", \"other\"]),\n content: z.string(),\n language: z.string().nullable(),\n markdown: z.boolean(),\n editable: z.boolean(),\n});\n\nexport const organizationSkillFileUpdateSchema = z.object({\n path: z.string().min(1),\n content: z.string(),\n});\n\nexport type OrganizationSkillImport = z.infer<typeof organizationSkillImportSchema>;\nexport type OrganizationSkillProjectScan = z.infer<typeof organizationSkillProjectScanRequestSchema>;\nexport type OrganizationSkillLocalScan = z.infer<typeof organizationSkillLocalScanRequestSchema>;\nexport type OrganizationSkillCreate = z.infer<typeof organizationSkillCreateSchema>;\nexport type OrganizationSkillFileUpdate = z.infer<typeof organizationSkillFileUpdateSchema>;\n", "import { z } from \"zod\";\n\nexport const agentSkillStateSchema = z.enum([\n \"available\",\n \"configured\",\n \"installed\",\n \"missing\",\n \"stale\",\n \"external\",\n]);\n\nexport const agentSkillOriginSchema = z.preprocess((value) => {\n if (value === \"company_managed\") return \"organization_managed\";\n return value;\n}, z.enum([\n \"organization_managed\",\n \"user_installed\",\n \"external_unknown\",\n]));\n\nexport const agentSkillSourceClassSchema = z.enum([\n \"bundled\",\n \"organization\",\n \"agent_home\",\n \"global\",\n \"adapter_home\",\n]);\n\nexport const agentSkillSyncModeSchema = z.enum([\n \"unsupported\",\n \"persistent\",\n \"ephemeral\",\n]);\n\nexport const agentSkillEntrySchema = z.object({\n key: z.string().min(1),\n selectionKey: z.string().min(1),\n runtimeName: z.string().min(1).nullable(),\n description: z.string().nullable().optional(),\n desired: z.boolean(),\n configurable: z.boolean(),\n alwaysEnabled: z.boolean(),\n managed: z.boolean(),\n state: agentSkillStateSchema,\n sourceClass: agentSkillSourceClassSchema,\n origin: agentSkillOriginSchema.optional(),\n originLabel: z.string().nullable().optional(),\n locationLabel: z.string().nullable().optional(),\n readOnly: z.boolean().optional(),\n sourcePath: z.string().nullable().optional(),\n targetPath: z.string().nullable().optional(),\n workspaceEditPath: z.string().nullable().optional(),\n detail: z.string().nullable().optional(),\n});\n\nexport const agentSkillSnapshotSchema = z.object({\n agentRuntimeType: z.string().min(1),\n supported: z.boolean(),\n mode: agentSkillSyncModeSchema,\n desiredSkills: z.array(z.string().min(1)),\n entries: z.array(agentSkillEntrySchema),\n warnings: z.array(z.string()),\n});\n\nexport const agentSkillSyncSchema = z.object({\n desiredSkills: z.array(z.string().min(1)),\n});\n\nexport const agentSkillEnableSchema = z.object({\n skills: z.array(z.string().min(1)).min(1),\n});\n\nexport type AgentSkillSync = z.infer<typeof agentSkillSyncSchema>;\nexport type AgentSkillEnable = z.infer<typeof agentSkillEnableSchema>;\n", "import { z } from \"zod\";\n\nexport const portabilityIncludeSchema = z\n .object({\n organization: z.boolean().optional(),\n agents: z.boolean().optional(),\n projects: z.boolean().optional(),\n issues: z.boolean().optional(),\n skills: z.boolean().optional(),\n })\n .partial();\n\nexport const portabilityEnvInputSchema = z.object({\n key: z.string().min(1),\n description: z.string().nullable(),\n agentSlug: z.string().min(1).nullable(),\n kind: z.enum([\"secret\", \"plain\"]),\n requirement: z.enum([\"required\", \"optional\"]),\n defaultValue: z.string().nullable(),\n portability: z.enum([\"portable\", \"system_dependent\"]),\n});\n\nexport const portabilityFileEntrySchema = z.union([\n z.string(),\n z.object({\n encoding: z.literal(\"base64\"),\n data: z.string(),\n contentType: z.string().min(1).optional().nullable(),\n }),\n]);\n\nexport const portabilityOrganizationManifestEntrySchema = z.object({\n path: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullable(),\n brandColor: z.string().nullable(),\n logoPath: z.string().nullable(),\n requireBoardApprovalForNewAgents: z.boolean(),\n});\n\nexport const portabilitySidebarOrderSchema = z.object({\n agents: z.array(z.string().min(1)).default([]),\n projects: z.array(z.string().min(1)).default([]),\n});\n\nexport const portabilityAgentManifestEntrySchema = z.object({\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n skills: z.array(z.string().min(1)).default([]),\n role: z.string().min(1),\n title: z.string().nullable(),\n icon: z.string().nullable(),\n capabilities: z.string().nullable(),\n reportsToSlug: z.string().min(1).nullable(),\n agentRuntimeType: z.string().min(1),\n agentRuntimeConfig: z.record(z.unknown()),\n runtimeConfig: z.record(z.unknown()),\n permissions: z.record(z.unknown()),\n budgetMonthlyCents: z.number().int().nonnegative(),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilitySkillManifestEntrySchema = z.object({\n key: z.string().min(1),\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n description: z.string().nullable(),\n sourceType: z.string().min(1),\n sourceLocator: z.string().nullable(),\n sourceRef: z.string().nullable(),\n trustLevel: z.string().nullable(),\n compatibility: z.string().nullable(),\n metadata: z.record(z.unknown()).nullable(),\n fileInventory: z.array(z.object({\n path: z.string().min(1),\n kind: z.string().min(1),\n })).default([]),\n});\n\nexport const portabilityProjectManifestEntrySchema = z.object({\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n description: z.string().nullable(),\n ownerAgentSlug: z.string().min(1).nullable(),\n leadAgentSlug: z.string().min(1).nullable(),\n targetDate: z.string().nullable(),\n color: z.string().nullable(),\n status: z.string().nullable(),\n executionWorkspacePolicy: z.record(z.unknown()).nullable(),\n workspaces: z.array(z.object({\n key: z.string().min(1),\n name: z.string().min(1),\n sourceType: z.string().nullable(),\n repoUrl: z.string().nullable(),\n repoRef: z.string().nullable(),\n defaultRef: z.string().nullable(),\n visibility: z.string().nullable(),\n setupCommand: z.string().nullable(),\n cleanupCommand: z.string().nullable(),\n metadata: z.record(z.unknown()).nullable(),\n isPrimary: z.boolean(),\n })).default([]),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilityIssueAutomationTriggerManifestEntrySchema = z.object({\n kind: z.string().min(1),\n label: z.string().nullable(),\n enabled: z.boolean(),\n cronExpression: z.string().nullable(),\n timezone: z.string().nullable(),\n signingMode: z.string().nullable(),\n replayWindowSec: z.number().int().nullable(),\n});\n\nexport const portabilityIssueAutomationManifestEntrySchema = z.object({\n concurrencyPolicy: z.string().nullable(),\n catchUpPolicy: z.string().nullable(),\n triggers: z.array(portabilityIssueAutomationTriggerManifestEntrySchema).default([]),\n});\n\nexport const portabilityIssueManifestEntrySchema = z.object({\n slug: z.string().min(1),\n identifier: z.string().min(1).nullable(),\n title: z.string().min(1),\n path: z.string().min(1),\n projectSlug: z.string().min(1).nullable(),\n projectWorkspaceKey: z.string().min(1).nullable(),\n assigneeAgentSlug: z.string().min(1).nullable(),\n description: z.string().nullable(),\n recurring: z.boolean().default(false),\n automation: portabilityIssueAutomationManifestEntrySchema.nullable(),\n legacyRecurrence: z.record(z.unknown()).nullable(),\n status: z.string().nullable(),\n priority: z.string().nullable(),\n labelIds: z.array(z.string().min(1)).default([]),\n billingCode: z.string().nullable(),\n executionWorkspaceSettings: z.record(z.unknown()).nullable(),\n assigneeAgentRuntimeOverrides: z.record(z.unknown()).nullable(),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilityManifestSchema = z.object({\n schemaVersion: z.number().int().positive(),\n generatedAt: z.string().datetime(),\n source: z\n .object({\n orgId: z.string().uuid(),\n organizationName: z.string().min(1),\n })\n .nullable(),\n includes: z.object({\n organization: z.boolean(),\n agents: z.boolean(),\n projects: z.boolean(),\n issues: z.boolean(),\n skills: z.boolean(),\n }),\n organization: portabilityOrganizationManifestEntrySchema.nullable(),\n sidebar: portabilitySidebarOrderSchema.nullable(),\n agents: z.array(portabilityAgentManifestEntrySchema),\n skills: z.array(portabilitySkillManifestEntrySchema).default([]),\n projects: z.array(portabilityProjectManifestEntrySchema).default([]),\n issues: z.array(portabilityIssueManifestEntrySchema).default([]),\n envInputs: z.array(portabilityEnvInputSchema).default([]),\n});\n\nexport const portabilitySourceSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"inline\"),\n rootPath: z.string().min(1).optional().nullable(),\n files: z.record(portabilityFileEntrySchema),\n }),\n z.object({\n type: z.literal(\"github\"),\n url: z.string().url(),\n }),\n]);\n\nexport const portabilityTargetSchema = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"new_organization\"),\n newOrganizationName: z.string().min(1).optional().nullable(),\n }),\n z.object({\n mode: z.literal(\"existing_organization\"),\n orgId: z.string().uuid(),\n }),\n]);\n\nexport const portabilityAgentSelectionSchema = z.union([\n z.literal(\"all\"),\n z.array(z.string().min(1)),\n]);\n\nexport const portabilityCollisionStrategySchema = z.enum([\"rename\", \"skip\", \"replace\"]);\n\nexport const organizationPortabilityExportSchema = z.object({\n include: portabilityIncludeSchema.optional(),\n agents: z.array(z.string().min(1)).optional(),\n skills: z.array(z.string().min(1)).optional(),\n projects: z.array(z.string().min(1)).optional(),\n issues: z.array(z.string().min(1)).optional(),\n projectIssues: z.array(z.string().min(1)).optional(),\n selectedFiles: z.array(z.string().min(1)).optional(),\n expandReferencedSkills: z.boolean().optional(),\n sidebarOrder: portabilitySidebarOrderSchema.partial().optional(),\n});\n\nexport type OrganizationPortabilityExport = z.infer<typeof organizationPortabilityExportSchema>;\n\nexport const organizationPortabilityPreviewSchema = z.object({\n source: portabilitySourceSchema,\n include: portabilityIncludeSchema.optional(),\n target: portabilityTargetSchema,\n agents: portabilityAgentSelectionSchema.optional(),\n collisionStrategy: portabilityCollisionStrategySchema.optional(),\n nameOverrides: z.record(z.string().min(1), z.string().min(1)).optional(),\n selectedFiles: z.array(z.string().min(1)).optional(),\n});\n\nexport type OrganizationPortabilityPreview = z.infer<typeof organizationPortabilityPreviewSchema>;\n\nexport const portabilityAdapterOverrideSchema = z.object({\n agentRuntimeType: z.string().min(1),\n agentRuntimeConfig: z.record(z.unknown()).optional(),\n});\n\nexport const organizationPortabilityImportSchema = organizationPortabilityPreviewSchema.extend({\n agentRuntimeOverrides: z.record(z.string().min(1), portabilityAdapterOverrideSchema).optional(),\n});\n\nexport type OrganizationPortabilityImport = z.infer<typeof organizationPortabilityImportSchema>;\n", "import { z } from \"zod\";\nimport {\n AGENT_AVATAR_BACKGROUND_PRESET_IDS,\n AGENT_DICEBEAR_NOTIONISTS_ICON_PREFIX,\n AGENT_RUNTIME_TYPES,\n AGENT_ICON_NAMES,\n AGENT_ROLES,\n AGENT_STATUSES,\n} from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\nimport { validateModelFallbacksConfig } from \"./model-fallbacks.js\";\n\nexport const agentPermissionsSchema = z.object({\n canCreateAgents: z.boolean().optional().default(false),\n});\n\nexport const agentInstructionsBundleModeSchema = z.enum([\"managed\", \"external\"]);\n\nexport const updateAgentInstructionsBundleSchema = z.object({\n mode: agentInstructionsBundleModeSchema.optional(),\n rootPath: z.string().trim().min(1).nullable().optional(),\n entryFile: z.string().trim().min(1).optional(),\n clearLegacyPromptTemplate: z.boolean().optional().default(false),\n});\n\nexport type UpdateAgentInstructionsBundle = z.infer<typeof updateAgentInstructionsBundleSchema>;\n\nexport const upsertAgentInstructionsFileSchema = z.object({\n path: z.string().trim().min(1),\n content: z.string(),\n clearLegacyPromptTemplate: z.boolean().optional().default(false),\n});\n\nexport type UpsertAgentInstructionsFile = z.infer<typeof upsertAgentInstructionsFileSchema>;\n\nconst agentRuntimeConfigSchema = z.record(z.unknown()).superRefine((value, ctx) => {\n const envValue = value.env;\n if (envValue !== undefined) {\n const parsed = envConfigSchema.safeParse(envValue);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"agentRuntimeConfig.env must be a map of valid env bindings\",\n path: [\"env\"],\n });\n }\n }\n\n validateModelFallbacksConfig(value, ctx, []);\n});\n\nconst optionalAgentNameSchema = z.preprocess(\n (value) => {\n if (typeof value !== \"string\") return value;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n },\n z.string().trim().min(1).optional(),\n);\n\nexport const uploadedAgentIconSchema = z.string().regex(\n new RegExp(\n \"^asset:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\"\n + `(?:\\\\?bg=(?:${AGENT_AVATAR_BACKGROUND_PRESET_IDS.join(\"|\")}))?$`,\n \"i\",\n ),\n \"Invalid uploaded avatar reference\",\n);\n\nexport const diceBearNotionistsAgentIconSchema = z.string().regex(\n new RegExp(\n `^${AGENT_DICEBEAR_NOTIONISTS_ICON_PREFIX}`\n + \"[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\"\n + `(?:\\\\?bg=(?:${AGENT_AVATAR_BACKGROUND_PRESET_IDS.join(\"|\")}))?$`,\n \"i\",\n ),\n \"Invalid DiceBear avatar reference\",\n);\n\nexport const agentIconSchema = z.preprocess(\n (value) => {\n if (typeof value !== \"string\") return value;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n },\n z.union([\n z.enum(AGENT_ICON_NAMES),\n uploadedAgentIconSchema,\n diceBearNotionistsAgentIconSchema,\n ]).nullable(),\n);\n\nexport const createAgentSchema = z.object({\n name: optionalAgentNameSchema,\n role: z.enum(AGENT_ROLES).optional().default(\"general\"),\n title: z.string().optional().nullable(),\n icon: agentIconSchema.optional(),\n reportsTo: z.string().uuid().optional().nullable(),\n capabilities: z.string().optional().nullable(),\n desiredSkills: z.array(z.string().min(1)).optional(),\n agentRuntimeType: z.enum(AGENT_RUNTIME_TYPES).optional().default(\"process\"),\n agentRuntimeConfig: agentRuntimeConfigSchema.optional().default({}),\n runtimeConfig: z.record(z.unknown()).optional().default({}),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n permissions: agentPermissionsSchema.optional(),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateAgent = z.infer<typeof createAgentSchema>;\n\nexport const createAgentHireSchema = createAgentSchema.extend({\n sourceIssueId: z.string().uuid().optional().nullable(),\n sourceIssueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateAgentHire = z.infer<typeof createAgentHireSchema>;\n\nexport const updateAgentSchema = createAgentSchema\n .omit({ permissions: true })\n .partial()\n .extend({\n permissions: z.never().optional(),\n replaceAgentRuntimeConfig: z.boolean().optional(),\n status: z.enum(AGENT_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n });\n\nexport type UpdateAgent = z.infer<typeof updateAgentSchema>;\n\nexport const updateAgentInstructionsPathSchema = z.object({\n path: z.string().trim().min(1).nullable(),\n agentRuntimeConfigKey: z.string().trim().min(1).optional(),\n});\n\nexport type UpdateAgentInstructionsPath = z.infer<typeof updateAgentInstructionsPathSchema>;\n\nexport const createAgentKeySchema = z.object({\n name: z.string().min(1).default(\"default\"),\n});\n\nexport type CreateAgentKey = z.infer<typeof createAgentKeySchema>;\n\nexport const wakeAgentSchema = z.object({\n source: z.enum([\"timer\", \"assignment\", \"review\", \"on_demand\", \"automation\"]).optional().default(\"on_demand\"),\n triggerDetail: z.enum([\"manual\", \"ping\", \"callback\", \"system\"]).optional(),\n reason: z.string().optional().nullable(),\n payload: z.record(z.unknown()).optional().nullable(),\n idempotencyKey: z.string().optional().nullable(),\n forceFreshSession: z.preprocess(\n (value) => (value === null ? undefined : value),\n z.boolean().optional().default(false),\n ),\n});\n\nexport type WakeAgent = z.infer<typeof wakeAgentSchema>;\n\nexport const resetAgentSessionSchema = z.object({\n taskKey: z.string().min(1).optional().nullable(),\n});\n\nexport type ResetAgentSession = z.infer<typeof resetAgentSessionSchema>;\n\nexport const testAgentRuntimeEnvironmentSchema = z.object({\n agentRuntimeConfig: agentRuntimeConfigSchema.optional().default({}),\n});\n\nexport type TestAgentRuntimeEnvironment = z.infer<typeof testAgentRuntimeEnvironmentSchema>;\n\nexport const updateAgentPermissionsSchema = z.object({\n canCreateAgents: z.boolean(),\n canAssignTasks: z.boolean(),\n});\n\nexport type UpdateAgentPermissions = z.infer<typeof updateAgentPermissionsSchema>;\n", "import { z } from \"zod\";\nimport { PROJECT_COLORS, PROJECT_STATUSES } from \"../constants.js\";\nimport {\n createProjectInlineResourceSchema,\n projectResourceAttachmentInputSchema,\n} from \"./resource.js\";\n\nconst executionWorkspaceStrategySchema = z\n .object({\n type: z.enum([\"project_primary\", \"git_worktree\", \"adapter_managed\", \"cloud_sandbox\"]).optional(),\n baseRef: z.string().optional().nullable(),\n branchTemplate: z.string().optional().nullable(),\n worktreeParentDir: z.string().optional().nullable(),\n provisionCommand: z.string().optional().nullable(),\n teardownCommand: z.string().optional().nullable(),\n })\n .strict();\n\nexport const projectExecutionWorkspacePolicySchema = z\n .object({\n enabled: z.boolean(),\n defaultMode: z.enum([\"shared_workspace\", \"isolated_workspace\", \"operator_branch\", \"adapter_default\"]).optional(),\n allowIssueOverride: z.boolean().optional(),\n defaultProjectWorkspaceId: z.string().uuid().optional().nullable(),\n workspaceStrategy: executionWorkspaceStrategySchema.optional().nullable(),\n workspaceRuntime: z.record(z.unknown()).optional().nullable(),\n branchPolicy: z.record(z.unknown()).optional().nullable(),\n pullRequestPolicy: z.record(z.unknown()).optional().nullable(),\n runtimePolicy: z.record(z.unknown()).optional().nullable(),\n cleanupPolicy: z.record(z.unknown()).optional().nullable(),\n })\n .strict();\n\nconst projectWorkspaceSourceTypeSchema = z.enum([\"local_path\", \"git_repo\", \"remote_managed\", \"non_git_path\"]);\nconst projectWorkspaceVisibilitySchema = z.enum([\"default\", \"advanced\"]);\n\nconst projectWorkspaceFields = {\n name: z.string().min(1).optional(),\n sourceType: projectWorkspaceSourceTypeSchema.optional(),\n cwd: z.string().min(1).optional().nullable(),\n repoUrl: z.string().url().optional().nullable(),\n repoRef: z.string().optional().nullable(),\n defaultRef: z.string().optional().nullable(),\n visibility: projectWorkspaceVisibilitySchema.optional(),\n setupCommand: z.string().optional().nullable(),\n cleanupCommand: z.string().optional().nullable(),\n remoteProvider: z.string().optional().nullable(),\n remoteWorkspaceRef: z.string().optional().nullable(),\n sharedWorkspaceKey: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n};\n\nconst projectColorValues = new Set<string>(PROJECT_COLORS);\nconst legacyProjectColorSchema = z.string().regex(/^#[0-9a-fA-F]{6}$/);\nconst projectColorSchema = z.string().refine(\n (value) => legacyProjectColorSchema.safeParse(value).success || projectColorValues.has(value),\n \"Color must be a 6-digit hex value or a supported project gradient\",\n);\n\nfunction validateProjectWorkspace(value: Record<string, unknown>, ctx: z.RefinementCtx) {\n const sourceType = value.sourceType ?? \"local_path\";\n const hasCwd = typeof value.cwd === \"string\" && value.cwd.trim().length > 0;\n const hasRepo = typeof value.repoUrl === \"string\" && value.repoUrl.trim().length > 0;\n const hasRemoteRef = typeof value.remoteWorkspaceRef === \"string\" && value.remoteWorkspaceRef.trim().length > 0;\n\n if (sourceType === \"remote_managed\") {\n if (!hasRemoteRef && !hasRepo) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Remote-managed workspace requires remoteWorkspaceRef or repoUrl.\",\n path: [\"remoteWorkspaceRef\"],\n });\n }\n return;\n }\n\n if (!hasCwd && !hasRepo) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Workspace requires at least one of cwd or repoUrl.\",\n path: [\"cwd\"],\n });\n }\n}\n\nexport const createProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional().default(false),\n}).superRefine(validateProjectWorkspace);\n\nexport type CreateProjectWorkspace = z.infer<typeof createProjectWorkspaceSchema>;\n\nexport const updateProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional(),\n}).partial();\n\nexport type UpdateProjectWorkspace = z.infer<typeof updateProjectWorkspaceSchema>;\n\nconst projectFields = {\n /** @deprecated Use goalIds instead */\n goalId: z.string().uuid().optional().nullable(),\n goalIds: z.array(z.string().uuid()).optional(),\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(PROJECT_STATUSES).optional().default(\"backlog\"),\n leadAgentId: z.string().uuid().optional().nullable(),\n targetDate: z.string().optional().nullable(),\n color: projectColorSchema.optional().nullable(),\n executionWorkspacePolicy: projectExecutionWorkspacePolicySchema.optional().nullable(),\n resourceAttachments: z.array(projectResourceAttachmentInputSchema).optional(),\n newResources: z.array(createProjectInlineResourceSchema).optional(),\n archivedAt: z.string().datetime().optional().nullable(),\n};\n\nexport const createProjectSchema = z.object({\n ...projectFields,\n});\n\nexport type CreateProject = z.infer<typeof createProjectSchema>;\n\nexport const updateProjectSchema = z.object(projectFields).partial();\n\nexport type UpdateProject = z.infer<typeof updateProjectSchema>;\n\nexport type ProjectExecutionWorkspacePolicy = z.infer<typeof projectExecutionWorkspacePolicySchema>;\n", "import { z } from \"zod\";\nimport { ISSUE_PRIORITIES, ISSUE_STATUSES } from \"../constants.js\";\n\nconst executionWorkspaceStrategySchema = z\n .object({\n type: z.enum([\"project_primary\", \"git_worktree\", \"adapter_managed\", \"cloud_sandbox\"]).optional(),\n baseRef: z.string().optional().nullable(),\n branchTemplate: z.string().optional().nullable(),\n worktreeParentDir: z.string().optional().nullable(),\n provisionCommand: z.string().optional().nullable(),\n teardownCommand: z.string().optional().nullable(),\n })\n .strict();\n\nexport const issueExecutionWorkspaceSettingsSchema = z\n .object({\n mode: z.enum([\"inherit\", \"shared_workspace\", \"isolated_workspace\", \"operator_branch\", \"reuse_existing\", \"agent_default\"]).optional(),\n workspaceStrategy: executionWorkspaceStrategySchema.optional().nullable(),\n workspaceRuntime: z.record(z.unknown()).optional().nullable(),\n })\n .strict();\n\nexport const issueAssigneeAdapterOverridesSchema = z\n .object({\n agentRuntimeConfig: z.record(z.unknown()).optional(),\n useProjectWorkspace: z.boolean().optional(),\n })\n .strict();\n\nexport const createIssueSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n projectWorkspaceId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n parentId: z.string().uuid().optional().nullable(),\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(ISSUE_STATUSES).optional().default(\"backlog\"),\n priority: z.enum(ISSUE_PRIORITIES).optional().default(\"medium\"),\n assigneeAgentId: z.string().uuid().optional().nullable(),\n assigneeUserId: z.string().optional().nullable(),\n reviewerAgentId: z.string().uuid().optional().nullable(),\n reviewerUserId: z.string().optional().nullable(),\n requestDepth: z.number().int().nonnegative().optional().default(0),\n billingCode: z.string().optional().nullable(),\n assigneeAgentRuntimeOverrides: issueAssigneeAdapterOverridesSchema.optional().nullable(),\n executionWorkspaceId: z.string().uuid().optional().nullable(),\n executionWorkspacePreference: z.enum([\n \"inherit\",\n \"shared_workspace\",\n \"isolated_workspace\",\n \"operator_branch\",\n \"reuse_existing\",\n \"agent_default\",\n ]).optional().nullable(),\n executionWorkspaceSettings: issueExecutionWorkspaceSettingsSchema.optional().nullable(),\n labelIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateIssue = z.infer<typeof createIssueSchema>;\n\nexport const createIssueLabelSchema = z.object({\n name: z.string().trim().min(1).max(48),\n color: z.string().regex(/^#(?:[0-9a-fA-F]{6})$/, \"Color must be a 6-digit hex value\"),\n});\n\nexport type CreateIssueLabel = z.infer<typeof createIssueLabelSchema>;\n\nexport const updateIssueLabelSchema = createIssueLabelSchema.partial().refine(\n (value) => value.name !== undefined || value.color !== undefined,\n {\n message: \"At least one label field must be provided\",\n },\n);\n\nexport type UpdateIssueLabel = z.infer<typeof updateIssueLabelSchema>;\n\nexport const updateIssueSchema = createIssueSchema.partial().extend({\n comment: z.string().min(1).optional(),\n reopen: z.boolean().optional(),\n hiddenAt: z.string().datetime().nullable().optional(),\n reviewDecision: z.enum([\"approve\", \"request_changes\", \"needs_followup\", \"blocked\"]).optional(),\n});\n\nexport type UpdateIssue = z.infer<typeof updateIssueSchema>;\nexport type IssueExecutionWorkspaceSettings = z.infer<typeof issueExecutionWorkspaceSettingsSchema>;\n\nexport const reorderIssueSchema = z\n .object({\n issueId: z.string().uuid(),\n targetStatus: z.enum(ISSUE_STATUSES),\n previousIssueId: z.string().uuid().optional().nullable(),\n nextIssueId: z.string().uuid().optional().nullable(),\n position: z.enum([\"start\", \"end\"]).optional(),\n })\n .refine(\n (value) => !(value.previousIssueId && value.nextIssueId && value.previousIssueId === value.nextIssueId),\n {\n message: \"previousIssueId and nextIssueId must be different\",\n },\n );\n\nexport type ReorderIssue = z.infer<typeof reorderIssueSchema>;\n\nexport const checkoutIssueSchema = z.object({\n agentId: z.string().uuid(),\n expectedStatuses: z.array(z.enum(ISSUE_STATUSES)).nonempty(),\n});\n\nexport type CheckoutIssue = z.infer<typeof checkoutIssueSchema>;\n\nexport const addIssueCommentSchema = z.object({\n body: z.string().min(1),\n reopen: z.boolean().optional(),\n interrupt: z.boolean().optional(),\n});\n\nexport type AddIssueComment = z.infer<typeof addIssueCommentSchema>;\n\nexport const reportIssueCommitSchema = z.object({\n sha: z.string().trim().regex(/^[0-9a-f]{7,64}$/i, \"Commit SHA must be 7 to 64 hexadecimal characters\"),\n message: z.string().trim().min(1).max(500),\n branch: z.string().trim().min(1).max(255).optional().nullable(),\n repoPath: z.string().trim().min(1).max(2048).optional().nullable(),\n workspacePath: z.string().trim().min(1).max(2048).optional().nullable(),\n commitCount: z.number().int().positive().max(1000).optional(),\n});\n\nexport type ReportIssueCommit = z.infer<typeof reportIssueCommitSchema>;\n\nexport const linkIssueApprovalSchema = z.object({\n approvalId: z.string().uuid(),\n});\n\nexport type LinkIssueApproval = z.infer<typeof linkIssueApprovalSchema>;\n\nexport const createIssueAttachmentMetadataSchema = z.object({\n issueCommentId: z.string().uuid().optional().nullable(),\n usage: z.enum([\"issue\", \"description_inline\", \"document_inline\", \"comment_inline\", \"comment_attachment\"]).optional(),\n});\n\nexport type CreateIssueAttachmentMetadata = z.infer<typeof createIssueAttachmentMetadataSchema>;\n\nexport const createIssueWorkspaceAttachmentSchema = z.object({\n path: z.string().trim().min(1).max(2048),\n});\n\nexport type CreateIssueWorkspaceAttachment = z.infer<typeof createIssueWorkspaceAttachmentSchema>;\n\nexport const ISSUE_DOCUMENT_FORMATS = [\"markdown\"] as const;\n\nexport const issueDocumentFormatSchema = z.enum(ISSUE_DOCUMENT_FORMATS);\n\nexport const issueDocumentKeySchema = z\n .string()\n .trim()\n .min(1)\n .max(64)\n .regex(/^[a-z0-9][a-z0-9_-]*$/, \"Document key must be lowercase letters, numbers, _ or -\");\n\nexport const upsertIssueDocumentSchema = z.object({\n title: z.string().trim().max(200).nullable().optional(),\n format: issueDocumentFormatSchema,\n body: z.string().max(524288),\n changeSummary: z.string().trim().max(500).nullable().optional(),\n baseRevisionId: z.string().uuid().nullable().optional(),\n});\n\nexport type IssueDocumentFormat = z.infer<typeof issueDocumentFormatSchema>;\nexport type UpsertIssueDocument = z.infer<typeof upsertIssueDocumentSchema>;\n", "import { z } from \"zod\";\n\nexport const issueWorkProductTypeSchema = z.enum([\n \"preview_url\",\n \"runtime_service\",\n \"pull_request\",\n \"branch\",\n \"commit\",\n \"artifact\",\n \"document\",\n]);\n\nexport const issueWorkProductStatusSchema = z.enum([\n \"active\",\n \"ready_for_review\",\n \"approved\",\n \"changes_requested\",\n \"merged\",\n \"closed\",\n \"failed\",\n \"archived\",\n \"draft\",\n]);\n\nexport const issueWorkProductReviewStateSchema = z.enum([\n \"none\",\n \"needs_board_review\",\n \"approved\",\n \"changes_requested\",\n]);\n\nexport const createIssueWorkProductSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n executionWorkspaceId: z.string().uuid().optional().nullable(),\n runtimeServiceId: z.string().uuid().optional().nullable(),\n type: issueWorkProductTypeSchema,\n provider: z.string().min(1),\n externalId: z.string().optional().nullable(),\n title: z.string().min(1),\n url: z.string().url().optional().nullable(),\n status: issueWorkProductStatusSchema.default(\"active\"),\n reviewState: issueWorkProductReviewStateSchema.optional().default(\"none\"),\n isPrimary: z.boolean().optional().default(false),\n healthStatus: z.enum([\"unknown\", \"healthy\", \"unhealthy\"]).optional().default(\"unknown\"),\n summary: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n createdByRunId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateIssueWorkProduct = z.infer<typeof createIssueWorkProductSchema>;\n\nexport const updateIssueWorkProductSchema = createIssueWorkProductSchema.partial();\n\nexport type UpdateIssueWorkProduct = z.infer<typeof updateIssueWorkProductSchema>;\n", "import { z } from \"zod\";\n\nexport const executionWorkspaceStatusSchema = z.enum([\n \"active\",\n \"idle\",\n \"in_review\",\n \"archived\",\n \"cleanup_failed\",\n]);\n\nexport const updateExecutionWorkspaceSchema = z.object({\n status: executionWorkspaceStatusSchema.optional(),\n cleanupEligibleAt: z.string().datetime().optional().nullable(),\n cleanupReason: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n}).strict();\n\nexport type UpdateExecutionWorkspace = z.infer<typeof updateExecutionWorkspaceSchema>;\n", "import { z } from \"zod\";\n\nexport const workspaceBackupTriggerSourceSchema = z.enum([\"manual\", \"scheduled\", \"pre_restore\"]);\n\nexport const createWorkspaceBackupSchema = z.object({\n triggerSource: workspaceBackupTriggerSourceSchema.optional().default(\"manual\"),\n}).strict();\n\nexport const restoreWorkspaceBackupSchema = z.object({\n confirm: z.literal(true),\n}).strict();\n\nexport type CreateWorkspaceBackup = z.infer<typeof createWorkspaceBackupSchema>;\nexport type RestoreWorkspaceBackup = z.infer<typeof restoreWorkspaceBackupSchema>;\n", "import { z } from \"zod\";\nimport { GOAL_LEVELS, GOAL_STATUSES } from \"../constants.js\";\n\nexport const createGoalSchema = z.object({\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n level: z.enum(GOAL_LEVELS).optional().default(\"task\"),\n status: z.enum(GOAL_STATUSES).optional().default(\"planned\"),\n parentId: z.string().uuid().optional().nullable(),\n ownerAgentId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateGoal = z.infer<typeof createGoalSchema>;\n\nexport const updateGoalSchema = createGoalSchema.partial();\n\nexport type UpdateGoal = z.infer<typeof updateGoalSchema>;\n", "import { z } from \"zod\";\nimport { APPROVAL_TYPES } from \"../constants.js\";\n\nexport const createApprovalSchema = z.object({\n type: z.enum(APPROVAL_TYPES),\n requestedByAgentId: z.string().uuid().optional().nullable(),\n payload: z.record(z.unknown()),\n issueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateApproval = z.infer<typeof createApprovalSchema>;\n\nexport const resolveApprovalSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n payload: z.record(z.unknown()).optional(),\n});\n\nexport type ResolveApproval = z.infer<typeof resolveApprovalSchema>;\n\nexport const requestApprovalRevisionSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n});\n\nexport type RequestApprovalRevision = z.infer<typeof requestApprovalRevisionSchema>;\n\nexport const resubmitApprovalSchema = z.object({\n payload: z.record(z.unknown()).optional(),\n});\n\nexport type ResubmitApproval = z.infer<typeof resubmitApprovalSchema>;\n\nexport const addApprovalCommentSchema = z.object({\n body: z.string().min(1),\n});\n\nexport type AddApprovalComment = z.infer<typeof addApprovalCommentSchema>;\n", "import { z } from \"zod\";\nimport {\n ISSUE_PRIORITIES,\n AUTOMATION_CATCH_UP_POLICIES,\n AUTOMATION_CONCURRENCY_POLICIES,\n AUTOMATION_OUTPUT_MODES,\n AUTOMATION_STATUSES,\n AUTOMATION_TRIGGER_SIGNING_MODES,\n} from \"../constants.js\";\n\nconst automationBodySchema = z.object({\n projectId: z.string().uuid().optional().nullable().default(null),\n goalId: z.string().uuid().optional().nullable(),\n parentIssueId: z.string().uuid().optional().nullable(),\n title: z.string().trim().min(1).max(200),\n description: z.string().optional().nullable(),\n assigneeAgentId: z.string().uuid(),\n priority: z.enum(ISSUE_PRIORITIES).optional().default(\"medium\"),\n status: z.enum(AUTOMATION_STATUSES).optional().default(\"active\"),\n concurrencyPolicy: z.enum(AUTOMATION_CONCURRENCY_POLICIES).optional().default(\"coalesce_if_active\"),\n catchUpPolicy: z.enum(AUTOMATION_CATCH_UP_POLICIES).optional().default(\"skip_missed\"),\n outputMode: z.enum(AUTOMATION_OUTPUT_MODES).optional().default(\"track_issue\"),\n chatConversationId: z.string().uuid().optional().nullable().default(null),\n});\n\nexport const createAutomationSchema = automationBodySchema.superRefine((value, ctx) => {\n if (value.chatConversationId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"chatConversationId\"],\n message: \"Chat output creates an automation-owned conversation; existing chats cannot be selected\",\n });\n }\n});\n\nexport type CreateAutomation = z.infer<typeof createAutomationSchema>;\n\nexport const updateAutomationSchema = automationBodySchema.partial().superRefine((value, ctx) => {\n if (value.chatConversationId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"chatConversationId\"],\n message: \"Chat output creates an automation-owned conversation; existing chats cannot be selected\",\n });\n }\n});\nexport type UpdateAutomation = z.infer<typeof updateAutomationSchema>;\n\nconst baseTriggerSchema = z.object({\n label: z.string().trim().max(120).optional().nullable(),\n enabled: z.boolean().optional().default(true),\n});\n\nexport const createAutomationTriggerSchema = z.discriminatedUnion(\"kind\", [\n baseTriggerSchema.extend({\n kind: z.literal(\"schedule\"),\n cronExpression: z.string().trim().min(1),\n timezone: z.string().trim().min(1).default(\"UTC\"),\n }),\n baseTriggerSchema.extend({\n kind: z.literal(\"webhook\"),\n signingMode: z.enum(AUTOMATION_TRIGGER_SIGNING_MODES).optional().default(\"bearer\"),\n replayWindowSec: z.number().int().min(30).max(86_400).optional().default(300),\n }),\n baseTriggerSchema.extend({\n kind: z.literal(\"api\"),\n }),\n]);\n\nexport type CreateAutomationTrigger = z.infer<typeof createAutomationTriggerSchema>;\n\nexport const updateAutomationTriggerSchema = z.object({\n label: z.string().trim().max(120).optional().nullable(),\n enabled: z.boolean().optional(),\n cronExpression: z.string().trim().min(1).optional().nullable(),\n timezone: z.string().trim().min(1).optional().nullable(),\n signingMode: z.enum(AUTOMATION_TRIGGER_SIGNING_MODES).optional().nullable(),\n replayWindowSec: z.number().int().min(30).max(86_400).optional().nullable(),\n});\n\nexport type UpdateAutomationTrigger = z.infer<typeof updateAutomationTriggerSchema>;\n\nexport const runAutomationSchema = z.object({\n triggerId: z.string().uuid().optional().nullable(),\n payload: z.record(z.unknown()).optional().nullable(),\n idempotencyKey: z.string().trim().max(255).optional().nullable(),\n source: z.enum([\"manual\", \"api\"]).optional().default(\"manual\"),\n});\n\nexport type RunAutomation = z.infer<typeof runAutomationSchema>;\n\nexport const rotateAutomationTriggerSecretSchema = z.object({});\nexport type RotateAutomationTriggerSecret = z.infer<typeof rotateAutomationTriggerSecretSchema>;\n", "import { z } from \"zod\";\nimport {\n CALENDAR_EVENT_KINDS,\n CALENDAR_EVENT_STATUSES,\n CALENDAR_OWNER_TYPES,\n CALENDAR_SOURCE_MODES,\n CALENDAR_SOURCE_STATUSES,\n CALENDAR_SOURCE_TYPES,\n CALENDAR_VISIBILITIES,\n} from \"../constants.js\";\n\nconst nullableUuid = z.string().uuid().optional().nullable();\n\nexport const createCalendarSourceSchema = z.object({\n type: z.enum(CALENDAR_SOURCE_TYPES).optional().default(\"rudder_local\"),\n name: z.string().trim().min(1).max(160),\n ownerType: z.enum(CALENDAR_OWNER_TYPES).optional().default(\"user\"),\n ownerUserId: z.string().trim().min(1).optional().nullable(),\n ownerAgentId: nullableUuid,\n externalProvider: z.string().trim().min(1).max(80).optional().nullable(),\n externalCalendarId: z.string().trim().min(1).max(512).optional().nullable(),\n visibilityDefault: z.enum(CALENDAR_VISIBILITIES).optional().default(\"full\"),\n status: z.enum(CALENDAR_SOURCE_STATUSES).optional().default(\"active\"),\n syncCursorJson: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateCalendarSource = z.infer<typeof createCalendarSourceSchema>;\n\nexport const updateCalendarSourceSchema = createCalendarSourceSchema.partial().extend({\n lastSyncedAt: z.coerce.date().optional().nullable(),\n});\n\nexport type UpdateCalendarSource = z.infer<typeof updateCalendarSourceSchema>;\n\nconst calendarEventBaseSchema = z.object({\n sourceId: nullableUuid,\n eventKind: z.enum(CALENDAR_EVENT_KINDS),\n eventStatus: z.enum(CALENDAR_EVENT_STATUSES).optional().default(\"planned\"),\n ownerType: z.enum(CALENDAR_OWNER_TYPES),\n ownerUserId: z.string().trim().min(1).optional().nullable(),\n ownerAgentId: nullableUuid,\n title: z.string().trim().min(1).max(240),\n description: z.string().optional().nullable(),\n startAt: z.coerce.date(),\n endAt: z.coerce.date(),\n timezone: z.string().trim().min(1).max(80).optional().default(\"UTC\"),\n allDay: z.boolean().optional().default(false),\n visibility: z.enum(CALENDAR_VISIBILITIES).optional().default(\"full\"),\n issueId: nullableUuid,\n projectId: nullableUuid,\n goalId: nullableUuid,\n approvalId: nullableUuid,\n heartbeatRunId: nullableUuid,\n activityId: nullableUuid,\n sourceMode: z.enum(CALENDAR_SOURCE_MODES).optional().default(\"manual\"),\n externalProvider: z.string().trim().min(1).max(80).optional().nullable(),\n externalCalendarId: z.string().trim().min(1).max(512).optional().nullable(),\n externalEventId: z.string().trim().min(1).max(512).optional().nullable(),\n externalEtag: z.string().trim().min(1).max(512).optional().nullable(),\n externalUpdatedAt: z.coerce.date().optional().nullable(),\n});\n\nexport const createCalendarEventSchema = calendarEventBaseSchema.refine(\n (value) => value.endAt.getTime() > value.startAt.getTime(),\n { path: [\"endAt\"], message: \"End time must be after start time\" },\n);\n\nexport type CreateCalendarEvent = z.infer<typeof createCalendarEventSchema>;\n\nexport const updateCalendarEventSchema = calendarEventBaseSchema\n .partial()\n .refine(\n (value) =>\n value.startAt === undefined ||\n value.endAt === undefined ||\n value.endAt.getTime() > value.startAt.getTime(),\n { path: [\"endAt\"], message: \"End time must be after start time\" },\n );\n\nexport type UpdateCalendarEvent = z.infer<typeof updateCalendarEventSchema>;\n\nexport const calendarEventListQuerySchema = z.object({\n start: z.coerce.date(),\n end: z.coerce.date(),\n agentIds: z.string().optional(),\n sourceIds: z.string().optional(),\n eventKinds: z.string().optional(),\n statuses: z.string().optional(),\n}).refine(\n (value) => value.end.getTime() > value.start.getTime(),\n { path: [\"end\"], message: \"End time must be after start time\" },\n);\n\nexport type CalendarEventListQuery = z.infer<typeof calendarEventListQuerySchema>;\n\nexport const googleCalendarSyncSchema = z.object({\n sourceId: z.string().uuid().optional().nullable(),\n});\n\nexport type GoogleCalendarSync = z.infer<typeof googleCalendarSyncSchema>;\n\nexport const updateGoogleCalendarOAuthConfigSchema = z.object({\n clientId: z.string().trim().min(1).max(512).optional(),\n clientSecret: z.string().trim().min(1).max(2048).optional(),\n clear: z.boolean().optional().default(false),\n}).refine(\n (value) => value.clear || value.clientId !== undefined || value.clientSecret !== undefined,\n { message: \"Provide credentials or clear the stored Google Calendar OAuth configuration\" },\n);\n\nexport type UpdateGoogleCalendarOAuthConfig = z.input<typeof updateGoogleCalendarOAuthConfigSchema>;\n", "import { z } from \"zod\";\nimport { BILLING_TYPES } from \"../constants.js\";\n\nexport const createCostEventSchema = z.object({\n agentId: z.string().uuid(),\n issueId: z.string().uuid().optional().nullable(),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n heartbeatRunId: z.string().uuid().optional().nullable(),\n billingCode: z.string().optional().nullable(),\n provider: z.string().min(1),\n biller: z.string().min(1).optional(),\n billingType: z.enum(BILLING_TYPES).optional().default(\"unknown\"),\n model: z.string().min(1),\n inputTokens: z.number().int().nonnegative().optional().default(0),\n cachedInputTokens: z.number().int().nonnegative().optional().default(0),\n outputTokens: z.number().int().nonnegative().optional().default(0),\n costCents: z.number().int().nonnegative(),\n occurredAt: z.string().datetime(),\n}).transform((value) => ({\n ...value,\n biller: value.biller ?? value.provider,\n}));\n\nexport type CreateCostEvent = z.infer<typeof createCostEventSchema>;\n\nexport const updateBudgetSchema = z.object({\n budgetMonthlyCents: z.number().int().nonnegative(),\n});\n\nexport type UpdateBudget = z.infer<typeof updateBudgetSchema>;\n", "import { z } from \"zod\";\nimport { AGENT_RUNTIME_TYPES, FINANCE_DIRECTIONS, FINANCE_EVENT_KINDS, FINANCE_UNITS } from \"../constants.js\";\n\nexport const createFinanceEventSchema = z.object({\n agentId: z.string().uuid().optional().nullable(),\n issueId: z.string().uuid().optional().nullable(),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n heartbeatRunId: z.string().uuid().optional().nullable(),\n costEventId: z.string().uuid().optional().nullable(),\n billingCode: z.string().optional().nullable(),\n description: z.string().max(500).optional().nullable(),\n eventKind: z.enum(FINANCE_EVENT_KINDS),\n direction: z.enum(FINANCE_DIRECTIONS).optional().default(\"debit\"),\n biller: z.string().min(1),\n provider: z.string().min(1).optional().nullable(),\n executionAgentRuntimeType: z.enum(AGENT_RUNTIME_TYPES).optional().nullable(),\n pricingTier: z.string().min(1).optional().nullable(),\n region: z.string().min(1).optional().nullable(),\n model: z.string().min(1).optional().nullable(),\n quantity: z.number().int().nonnegative().optional().nullable(),\n unit: z.enum(FINANCE_UNITS).optional().nullable(),\n amountCents: z.number().int().nonnegative(),\n currency: z.string().length(3).optional().default(\"USD\"),\n estimated: z.boolean().optional().default(false),\n externalInvoiceId: z.string().optional().nullable(),\n metadataJson: z.record(z.string(), z.unknown()).optional().nullable(),\n occurredAt: z.string().datetime(),\n}).transform((value) => ({\n ...value,\n currency: value.currency.toUpperCase(),\n}));\n\nexport type CreateFinanceEvent = z.infer<typeof createFinanceEventSchema>;\n", "import { z } from \"zod\";\n\nexport const createAssetImageMetadataSchema = z.object({\n namespace: z\n .string()\n .trim()\n .min(1)\n .max(120)\n .regex(/^[a-zA-Z0-9/_-]+$/)\n .optional(),\n});\n\nexport type CreateAssetImageMetadata = z.infer<typeof createAssetImageMetadataSchema>;\n\n", "import { z } from \"zod\";\nimport {\n AGENT_RUNTIME_TYPES,\n INVITE_JOIN_TYPES,\n JOIN_REQUEST_STATUSES,\n JOIN_REQUEST_TYPES,\n PERMISSION_KEYS,\n} from \"../constants.js\";\n\nexport const createCompanyInviteSchema = z.object({\n allowedJoinTypes: z.enum(INVITE_JOIN_TYPES).default(\"both\"),\n defaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n agentMessage: z.string().max(4000).optional().nullable(),\n});\n\nexport type CreateCompanyInvite = z.infer<typeof createCompanyInviteSchema>;\n\nexport const createOpenClawInvitePromptSchema = z.object({\n agentMessage: z.string().max(4000).optional().nullable(),\n});\n\nexport type CreateOpenClawInvitePrompt = z.infer<\n typeof createOpenClawInvitePromptSchema\n>;\n\nexport const acceptInviteSchema = z.object({\n requestType: z.enum(JOIN_REQUEST_TYPES),\n agentName: z.string().min(1).max(120).optional(),\n agentRuntimeType: z.enum(AGENT_RUNTIME_TYPES).optional(),\n capabilities: z.string().max(4000).optional().nullable(),\n agentDefaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n // OpenClaw join compatibility fields accepted at top level.\n responsesWebhookUrl: z.string().max(4000).optional().nullable(),\n responsesWebhookMethod: z.string().max(32).optional().nullable(),\n responsesWebhookHeaders: z.record(z.string(), z.unknown()).optional().nullable(),\n rudderApiUrl: z.string().max(4000).optional().nullable(),\n webhookAuthHeader: z.string().max(4000).optional().nullable(),\n});\n\nexport type AcceptInvite = z.infer<typeof acceptInviteSchema>;\n\nexport const listJoinRequestsQuerySchema = z.object({\n status: z.enum(JOIN_REQUEST_STATUSES).optional(),\n requestType: z.enum(JOIN_REQUEST_TYPES).optional(),\n});\n\nexport type ListJoinRequestsQuery = z.infer<typeof listJoinRequestsQuerySchema>;\n\nexport const claimJoinRequestApiKeySchema = z.object({\n claimSecret: z.string().min(16).max(256),\n});\n\nexport type ClaimJoinRequestApiKey = z.infer<typeof claimJoinRequestApiKeySchema>;\n\nexport const boardCliAuthAccessLevelSchema = z.enum([\n \"board\",\n \"instance_admin_required\",\n]);\n\nexport type BoardCliAuthAccessLevel = z.infer<typeof boardCliAuthAccessLevelSchema>;\n\nexport const createCliAuthChallengeSchema = z.object({\n command: z.string().min(1).max(240),\n clientName: z.string().max(120).optional().nullable(),\n requestedAccess: boardCliAuthAccessLevelSchema.default(\"board\"),\n requestedCompanyId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateCliAuthChallenge = z.infer<typeof createCliAuthChallengeSchema>;\n\nexport const resolveCliAuthChallengeSchema = z.object({\n token: z.string().min(16).max(256),\n});\n\nexport type ResolveCliAuthChallenge = z.infer<typeof resolveCliAuthChallengeSchema>;\n\nexport const updateMemberPermissionsSchema = z.object({\n grants: z.array(\n z.object({\n permissionKey: z.enum(PERMISSION_KEYS),\n scope: z.record(z.string(), z.unknown()).optional().nullable(),\n }),\n ),\n});\n\nexport type UpdateMemberPermissions = z.infer<typeof updateMemberPermissionsSchema>;\n\nexport const updateUserCompanyAccessSchema = z.object({\n orgIds: z.array(z.string().uuid()).default([]),\n});\n\nexport type UpdateUserCompanyAccess = z.infer<typeof updateUserCompanyAccessSchema>;\n", "import { z } from \"zod\";\nimport {\n PLUGIN_STATUSES,\n PLUGIN_CATEGORIES,\n PLUGIN_CAPABILITIES,\n PLUGIN_UI_SLOT_TYPES,\n PLUGIN_UI_SLOT_ENTITY_TYPES,\n PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS,\n PLUGIN_LAUNCHER_PLACEMENT_ZONES,\n PLUGIN_LAUNCHER_ACTIONS,\n PLUGIN_LAUNCHER_BOUNDS,\n PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS,\n PLUGIN_STATE_SCOPE_KINDS,\n} from \"../constants.js\";\n\n// ---------------------------------------------------------------------------\n// JSON Schema placeholder \u2013 a permissive validator for JSON Schema objects\n// ---------------------------------------------------------------------------\n\n/**\n * Permissive validator for JSON Schema objects. Accepts any `Record<string, unknown>`\n * that contains at least a `type`, `$ref`, or composition keyword (`oneOf`/`anyOf`/`allOf`).\n * Empty objects are also accepted.\n *\n * Used to validate `instanceConfigSchema` and `parametersSchema` fields in the\n * plugin manifest without fully parsing JSON Schema.\n *\n * @see PLUGIN_SPEC.md \u00A710.1 \u2014 Manifest shape\n */\nexport const jsonSchemaSchema = z.record(z.unknown()).refine(\n (val) => {\n // Must have a \"type\" field if non-empty, or be a valid JSON Schema object\n if (Object.keys(val).length === 0) return true;\n return typeof val.type === \"string\" || val.$ref !== undefined || val.oneOf !== undefined || val.anyOf !== undefined || val.allOf !== undefined;\n },\n { message: \"Must be a valid JSON Schema object (requires at least a 'type', '$ref', or composition keyword)\" },\n);\n\n// ---------------------------------------------------------------------------\n// Manifest sub-type schemas\n// ---------------------------------------------------------------------------\n\n/**\n * Validates a {@link PluginJobDeclaration} \u2014 a scheduled job declared in the\n * plugin manifest. Requires `jobKey` and `displayName`; `description` and\n * `schedule` (cron expression) are optional.\n *\n * @see PLUGIN_SPEC.md \u00A717 \u2014 Scheduled Jobs\n */\n/**\n * Validates a cron expression has exactly 5 whitespace-separated fields,\n * each containing only valid cron characters (digits, *, /, -, ,).\n *\n * Valid tokens per field: *, N, N-M, N/S, * /S, N-M/S, and comma-separated lists.\n */\nconst CRON_FIELD_PATTERN = /^(\\*(?:\\/[0-9]+)?|[0-9]+(?:-[0-9]+)?(?:\\/[0-9]+)?)(?:,(\\*(?:\\/[0-9]+)?|[0-9]+(?:-[0-9]+)?(?:\\/[0-9]+)?))*$/;\n\nfunction isValidCronExpression(expression: string): boolean {\n const trimmed = expression.trim();\n if (!trimmed) return false;\n const fields = trimmed.split(/\\s+/);\n if (fields.length !== 5) return false;\n return fields.every((f) => CRON_FIELD_PATTERN.test(f));\n}\n\nexport const pluginJobDeclarationSchema = z.object({\n jobKey: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().optional(),\n schedule: z.string().refine(\n (val) => isValidCronExpression(val),\n { message: \"schedule must be a valid 5-field cron expression (e.g. '*/15 * * * *')\" },\n ).optional(),\n});\n\nexport type PluginJobDeclarationInput = z.infer<typeof pluginJobDeclarationSchema>;\n\n/**\n * Validates a {@link PluginWebhookDeclaration} \u2014 a webhook endpoint declared\n * in the plugin manifest. Requires `endpointKey` and `displayName`.\n *\n * @see PLUGIN_SPEC.md \u00A718 \u2014 Webhooks\n */\nexport const pluginWebhookDeclarationSchema = z.object({\n endpointKey: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().optional(),\n});\n\nexport type PluginWebhookDeclarationInput = z.infer<typeof pluginWebhookDeclarationSchema>;\n\n/**\n * Validates a {@link PluginToolDeclaration} \u2014 an agent tool contributed by the\n * plugin. Requires `name`, `displayName`, `description`, and a valid\n * `parametersSchema`. Requires the `agent.tools.register` capability.\n *\n * @see PLUGIN_SPEC.md \u00A711 \u2014 Agent Tools\n */\nexport const pluginToolDeclarationSchema = z.object({\n name: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().min(1),\n parametersSchema: jsonSchemaSchema,\n});\n\nexport type PluginToolDeclarationInput = z.infer<typeof pluginToolDeclarationSchema>;\n\n/**\n * Validates a {@link PluginUiSlotDeclaration} \u2014 a UI extension slot the plugin\n * fills with a React component. Includes `superRefine` checks for slot-specific\n * requirements such as `entityTypes` for context-sensitive slots.\n *\n * @see PLUGIN_SPEC.md \u00A719 \u2014 UI Extension Model\n */\nexport const pluginUiSlotDeclarationSchema = z.object({\n type: z.enum(PLUGIN_UI_SLOT_TYPES),\n id: z.string().min(1),\n displayName: z.string().min(1),\n exportName: z.string().min(1),\n entityTypes: z.array(z.enum(PLUGIN_UI_SLOT_ENTITY_TYPES)).optional(),\n routePath: z.string().regex(/^[a-z0-9][a-z0-9-]*$/, {\n message: \"routePath must be a lowercase single-segment slug (letters, numbers, hyphens)\",\n }).optional(),\n order: z.number().int().optional(),\n}).superRefine((value, ctx) => {\n // context-sensitive slots require explicit entity targeting.\n const entityScopedTypes = [\"detailTab\", \"taskDetailView\", \"contextMenuItem\", \"commentAnnotation\", \"commentContextMenuItem\", \"projectSidebarItem\"];\n if (\n entityScopedTypes.includes(value.type)\n && (!value.entityTypes || value.entityTypes.length === 0)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${value.type} slots require at least one entityType`,\n path: [\"entityTypes\"],\n });\n }\n // projectSidebarItem only makes sense for entityType \"project\".\n if (value.type === \"projectSidebarItem\" && value.entityTypes && !value.entityTypes.includes(\"project\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"projectSidebarItem slots require entityTypes to include \\\"project\\\"\",\n path: [\"entityTypes\"],\n });\n }\n // commentAnnotation only makes sense for entityType \"comment\".\n if (value.type === \"commentAnnotation\" && value.entityTypes && !value.entityTypes.includes(\"comment\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"commentAnnotation slots require entityTypes to include \\\"comment\\\"\",\n path: [\"entityTypes\"],\n });\n }\n // commentContextMenuItem only makes sense for entityType \"comment\".\n if (value.type === \"commentContextMenuItem\" && value.entityTypes && !value.entityTypes.includes(\"comment\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"commentContextMenuItem slots require entityTypes to include \\\"comment\\\"\",\n path: [\"entityTypes\"],\n });\n }\n if (value.routePath && value.type !== \"page\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"routePath is only supported for page slots\",\n path: [\"routePath\"],\n });\n }\n if (value.routePath && PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS.includes(value.routePath as (typeof PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS)[number])) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `routePath \"${value.routePath}\" is reserved by the host`,\n path: [\"routePath\"],\n });\n }\n});\n\nexport type PluginUiSlotDeclarationInput = z.infer<typeof pluginUiSlotDeclarationSchema>;\n\nconst entityScopedLauncherPlacementZones = [\n \"detailTab\",\n \"taskDetailView\",\n \"contextMenuItem\",\n \"commentAnnotation\",\n \"commentContextMenuItem\",\n \"projectSidebarItem\",\n] as const;\n\nconst launcherBoundsByEnvironment: Record<\n (typeof PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS)[number],\n readonly (typeof PLUGIN_LAUNCHER_BOUNDS)[number][]\n> = {\n hostInline: [\"inline\", \"compact\", \"default\"],\n hostOverlay: [\"compact\", \"default\", \"wide\", \"full\"],\n hostRoute: [\"default\", \"wide\", \"full\"],\n external: [],\n iframe: [\"compact\", \"default\", \"wide\", \"full\"],\n};\n\n/**\n * Validates the action payload for a declarative plugin launcher.\n */\nexport const pluginLauncherActionDeclarationSchema = z.object({\n type: z.enum(PLUGIN_LAUNCHER_ACTIONS),\n target: z.string().min(1),\n params: z.record(z.unknown()).optional(),\n}).superRefine((value, ctx) => {\n if (value.type === \"performAction\" && value.target.includes(\"/\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"performAction launchers must target an action key, not a route or URL\",\n path: [\"target\"],\n });\n }\n\n if (value.type === \"navigate\" && /^https?:\\/\\//.test(value.target)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"navigate launchers must target a host route, not an absolute URL\",\n path: [\"target\"],\n });\n }\n});\n\nexport type PluginLauncherActionDeclarationInput =\n z.infer<typeof pluginLauncherActionDeclarationSchema>;\n\n/**\n * Validates optional render hints for a plugin launcher destination.\n */\nexport const pluginLauncherRenderDeclarationSchema = z.object({\n environment: z.enum(PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS),\n bounds: z.enum(PLUGIN_LAUNCHER_BOUNDS).optional(),\n}).superRefine((value, ctx) => {\n if (!value.bounds) {\n return;\n }\n\n const supportedBounds = launcherBoundsByEnvironment[value.environment];\n if (!supportedBounds.includes(value.bounds)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `bounds \"${value.bounds}\" is not supported for render environment \"${value.environment}\"`,\n path: [\"bounds\"],\n });\n }\n});\n\nexport type PluginLauncherRenderDeclarationInput =\n z.infer<typeof pluginLauncherRenderDeclarationSchema>;\n\n/**\n * Validates declarative launcher metadata in a plugin manifest.\n */\nexport const pluginLauncherDeclarationSchema = z.object({\n id: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().optional(),\n placementZone: z.enum(PLUGIN_LAUNCHER_PLACEMENT_ZONES),\n exportName: z.string().min(1).optional(),\n entityTypes: z.array(z.enum(PLUGIN_UI_SLOT_ENTITY_TYPES)).optional(),\n order: z.number().int().optional(),\n action: pluginLauncherActionDeclarationSchema,\n render: pluginLauncherRenderDeclarationSchema.optional(),\n}).superRefine((value, ctx) => {\n if (\n entityScopedLauncherPlacementZones.some((zone) => zone === value.placementZone)\n && (!value.entityTypes || value.entityTypes.length === 0)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${value.placementZone} launchers require at least one entityType`,\n path: [\"entityTypes\"],\n });\n }\n\n if (\n value.placementZone === \"projectSidebarItem\"\n && value.entityTypes\n && !value.entityTypes.includes(\"project\")\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"projectSidebarItem launchers require entityTypes to include \\\"project\\\"\",\n path: [\"entityTypes\"],\n });\n }\n\n if (value.action.type === \"performAction\" && value.render) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"performAction launchers cannot declare render hints\",\n path: [\"render\"],\n });\n }\n\n if (\n [\"openModal\", \"openDrawer\", \"openPopover\"].includes(value.action.type)\n && !value.render\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${value.action.type} launchers require render metadata`,\n path: [\"render\"],\n });\n }\n\n if (value.action.type === \"openModal\" && value.render?.environment === \"hostInline\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"openModal launchers cannot use the hostInline render environment\",\n path: [\"render\", \"environment\"],\n });\n }\n\n if (\n value.action.type === \"openDrawer\"\n && value.render\n && ![\"hostOverlay\", \"iframe\"].includes(value.render.environment)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"openDrawer launchers must use hostOverlay or iframe render environments\",\n path: [\"render\", \"environment\"],\n });\n }\n\n if (value.action.type === \"openPopover\" && value.render?.environment === \"hostRoute\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"openPopover launchers cannot use the hostRoute render environment\",\n path: [\"render\", \"environment\"],\n });\n }\n});\n\nexport type PluginLauncherDeclarationInput = z.infer<typeof pluginLauncherDeclarationSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin Manifest V1 schema\n// ---------------------------------------------------------------------------\n\n/**\n * Zod schema for {@link PaperclipPluginManifestV1} \u2014 the complete runtime\n * validator for plugin manifests read at install time.\n *\n * Field-level constraints (see PLUGIN_SPEC.md \u00A710.1 for the normative rules):\n *\n * | Field | Type | Constraints |\n * |--------------------------|------------|----------------------------------------------|\n * | `id` | string | `^[a-z0-9][a-z0-9._-]*$` |\n * | `apiVersion` | literal 1 | must equal `PLUGIN_API_VERSION` |\n * | `version` | string | semver (`\\d+\\.\\d+\\.\\d+`) |\n * | `displayName` | string | 1\u2013100 chars |\n * | `description` | string | 1\u2013500 chars |\n * | `author` | string | 1\u2013200 chars |\n * | `categories` | enum[] | at least one; values from PLUGIN_CATEGORIES |\n * | `minimumHostVersion` | string? | semver lower bound if present, no leading `v`|\n * | `minimumPaperclipVersion`| string? | legacy alias of `minimumHostVersion` |\n * | `capabilities` | enum[] | at least one; values from PLUGIN_CAPABILITIES|\n * | `entrypoints.worker` | string | min 1 char |\n * | `entrypoints.ui` | string? | required when `ui.slots` is declared |\n *\n * Cross-field rules enforced via `superRefine`:\n * - `entrypoints.ui` required when `ui.slots` declared\n * - `agent.tools.register` capability required when `tools` declared\n * - `jobs.schedule` capability required when `jobs` declared\n * - `webhooks.receive` capability required when `webhooks` declared\n * - duplicate `jobs[].jobKey` values are rejected\n * - duplicate `webhooks[].endpointKey` values are rejected\n * - duplicate `tools[].name` values are rejected\n * - duplicate `ui.slots[].id` values are rejected\n *\n * @see PLUGIN_SPEC.md \u00A710.1 \u2014 Manifest shape\n * @see {@link PaperclipPluginManifestV1} \u2014 the inferred TypeScript type\n */\nexport const pluginManifestV1Schema = z.object({\n id: z.string().min(1).regex(\n /^[a-z0-9][a-z0-9._-]*$/,\n \"Plugin id must start with a lowercase alphanumeric and contain only lowercase letters, digits, dots, hyphens, or underscores\",\n ),\n apiVersion: z.literal(1),\n version: z.string().min(1).regex(\n /^\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$/,\n \"Version must follow semver (e.g. 1.0.0 or 1.0.0-beta.1)\",\n ),\n displayName: z.string().min(1).max(100),\n description: z.string().min(1).max(500),\n author: z.string().min(1).max(200),\n categories: z.array(z.enum(PLUGIN_CATEGORIES)).min(1),\n minimumHostVersion: z.string().regex(\n /^\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$/,\n \"minimumHostVersion must follow semver (e.g. 1.0.0)\",\n ).optional(),\n minimumPaperclipVersion: z.string().regex(\n /^\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$/,\n \"minimumPaperclipVersion must follow semver (e.g. 1.0.0)\",\n ).optional(),\n capabilities: z.array(z.enum(PLUGIN_CAPABILITIES)).min(1),\n entrypoints: z.object({\n worker: z.string().min(1),\n ui: z.string().min(1).optional(),\n }),\n instanceConfigSchema: jsonSchemaSchema.optional(),\n jobs: z.array(pluginJobDeclarationSchema).optional(),\n webhooks: z.array(pluginWebhookDeclarationSchema).optional(),\n tools: z.array(pluginToolDeclarationSchema).optional(),\n launchers: z.array(pluginLauncherDeclarationSchema).optional(),\n ui: z.object({\n slots: z.array(pluginUiSlotDeclarationSchema).min(1).optional(),\n launchers: z.array(pluginLauncherDeclarationSchema).optional(),\n }).optional(),\n}).superRefine((manifest, ctx) => {\n // \u2500\u2500 Entrypoint \u2194 UI slot consistency \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Plugins that declare UI slots must also declare a UI entrypoint so the\n // host knows where to load the bundle from (PLUGIN_SPEC.md \u00A710.1).\n const hasUiSlots = (manifest.ui?.slots?.length ?? 0) > 0;\n const hasUiLaunchers = (manifest.ui?.launchers?.length ?? 0) > 0;\n if ((hasUiSlots || hasUiLaunchers) && !manifest.entrypoints.ui) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"entrypoints.ui is required when ui.slots or ui.launchers are declared\",\n path: [\"entrypoints\", \"ui\"],\n });\n }\n\n if (\n manifest.minimumHostVersion\n && manifest.minimumPaperclipVersion\n && manifest.minimumHostVersion !== manifest.minimumPaperclipVersion\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"minimumHostVersion and minimumPaperclipVersion must match when both are declared\",\n path: [\"minimumHostVersion\"],\n });\n }\n\n // \u2500\u2500 Capability \u2194 feature declaration consistency \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // The host enforces capabilities at install and runtime. A plugin must\n // declare every capability it needs up-front; silently having more features\n // than capabilities would cause runtime rejections.\n\n // tools require agent.tools.register (PLUGIN_SPEC.md \u00A711)\n if (manifest.tools && manifest.tools.length > 0) {\n if (!manifest.capabilities.includes(\"agent.tools.register\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Capability 'agent.tools.register' is required when tools are declared\",\n path: [\"capabilities\"],\n });\n }\n }\n\n // jobs require jobs.schedule (PLUGIN_SPEC.md \u00A717)\n if (manifest.jobs && manifest.jobs.length > 0) {\n if (!manifest.capabilities.includes(\"jobs.schedule\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Capability 'jobs.schedule' is required when jobs are declared\",\n path: [\"capabilities\"],\n });\n }\n }\n\n // webhooks require webhooks.receive (PLUGIN_SPEC.md \u00A718)\n if (manifest.webhooks && manifest.webhooks.length > 0) {\n if (!manifest.capabilities.includes(\"webhooks.receive\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Capability 'webhooks.receive' is required when webhooks are declared\",\n path: [\"capabilities\"],\n });\n }\n }\n\n // \u2500\u2500 Uniqueness checks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Duplicate keys within a plugin's own manifest are always a bug. The host\n // would not know which declaration takes precedence, so we reject early.\n\n // job keys must be unique within the plugin (used as identifiers in the DB)\n if (manifest.jobs) {\n const jobKeys = manifest.jobs.map((j) => j.jobKey);\n const duplicates = jobKeys.filter((key, i) => jobKeys.indexOf(key) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate job keys: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"jobs\"],\n });\n }\n }\n\n // webhook endpoint keys must be unique within the plugin (used in routes)\n if (manifest.webhooks) {\n const endpointKeys = manifest.webhooks.map((w) => w.endpointKey);\n const duplicates = endpointKeys.filter((key, i) => endpointKeys.indexOf(key) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate webhook endpoint keys: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"webhooks\"],\n });\n }\n }\n\n // tool names must be unique within the plugin (namespaced at runtime)\n if (manifest.tools) {\n const toolNames = manifest.tools.map((t) => t.name);\n const duplicates = toolNames.filter((name, i) => toolNames.indexOf(name) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate tool names: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"tools\"],\n });\n }\n }\n\n // UI slot ids must be unique within the plugin (namespaced at runtime)\n if (manifest.ui) {\n if (manifest.ui.slots) {\n const slotIds = manifest.ui.slots.map((s) => s.id);\n const duplicates = slotIds.filter((id, i) => slotIds.indexOf(id) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate UI slot ids: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"ui\", \"slots\"],\n });\n }\n }\n }\n\n // launcher ids must be unique within the plugin\n const allLaunchers = [\n ...(manifest.launchers ?? []),\n ...(manifest.ui?.launchers ?? []),\n ];\n if (allLaunchers.length > 0) {\n const launcherIds = allLaunchers.map((launcher) => launcher.id);\n const duplicates = launcherIds.filter((id, i) => launcherIds.indexOf(id) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate launcher ids: ${[...new Set(duplicates)].join(\", \")}`,\n path: manifest.ui?.launchers ? [\"ui\", \"launchers\"] : [\"launchers\"],\n });\n }\n }\n});\n\nexport type PluginManifestV1Input = z.infer<typeof pluginManifestV1Schema>;\n\n// ---------------------------------------------------------------------------\n// Plugin installation / registration request\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for installing (registering) a plugin.\n * The server receives the packageName and resolves the manifest from the\n * installed package.\n */\nexport const installPluginSchema = z.object({\n packageName: z.string().min(1),\n version: z.string().min(1).optional(),\n /** Set by loader for local-path installs so the worker can be resolved. */\n packagePath: z.string().min(1).optional(),\n});\n\nexport type InstallPlugin = z.infer<typeof installPluginSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin config (instance configuration) schemas\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for creating or updating a plugin's instance configuration.\n * configJson is validated permissively here; runtime validation against\n * the plugin's instanceConfigSchema is done at the service layer.\n */\nexport const upsertPluginConfigSchema = z.object({\n configJson: z.record(z.unknown()),\n});\n\nexport type UpsertPluginConfig = z.infer<typeof upsertPluginConfigSchema>;\n\n/**\n * Schema for partially updating a plugin's instance configuration.\n * Allows a partial merge of config values.\n */\nexport const patchPluginConfigSchema = z.object({\n configJson: z.record(z.unknown()),\n});\n\nexport type PatchPluginConfig = z.infer<typeof patchPluginConfigSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin status update\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for updating a plugin's lifecycle status. Used by the lifecycle\n * manager to persist state transitions.\n *\n * @see {@link PLUGIN_STATUSES} for the valid status values\n */\nexport const updatePluginStatusSchema = z.object({\n status: z.enum(PLUGIN_STATUSES),\n lastError: z.string().nullable().optional(),\n});\n\nexport type UpdatePluginStatus = z.infer<typeof updatePluginStatusSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin uninstall\n// ---------------------------------------------------------------------------\n\n/** Schema for the uninstall request. `removeData` controls hard vs soft delete. */\nexport const uninstallPluginSchema = z.object({\n removeData: z.boolean().optional().default(false),\n});\n\nexport type UninstallPlugin = z.infer<typeof uninstallPluginSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin state (key-value storage) schemas\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for a plugin state scope key \u2014 identifies the exact location where\n * state is stored. Used by the `ctx.state.get()`, `ctx.state.set()`, and\n * `ctx.state.delete()` SDK methods.\n *\n * @see PLUGIN_SPEC.md \u00A721.3 `plugin_state`\n */\nexport const pluginStateScopeKeySchema = z.object({\n scopeKind: z.enum(PLUGIN_STATE_SCOPE_KINDS),\n scopeId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n stateKey: z.string().min(1),\n});\n\nexport type PluginStateScopeKey = z.infer<typeof pluginStateScopeKeySchema>;\n\n/**\n * Schema for setting a plugin state value.\n */\nexport const setPluginStateSchema = z.object({\n scopeKind: z.enum(PLUGIN_STATE_SCOPE_KINDS),\n scopeId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n stateKey: z.string().min(1),\n /** JSON-serializable value to store. */\n value: z.unknown(),\n});\n\nexport type SetPluginState = z.infer<typeof setPluginStateSchema>;\n\n/**\n * Schema for querying plugin state entries. All fields are optional to allow\n * flexible list queries (e.g. all state for a plugin within a scope).\n */\nexport const listPluginStateSchema = z.object({\n scopeKind: z.enum(PLUGIN_STATE_SCOPE_KINDS).optional(),\n scopeId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n});\n\nexport type ListPluginState = z.infer<typeof listPluginStateSchema>;\n", "export const API_PREFIX = \"/api\";\n\nexport const API = {\n health: `${API_PREFIX}/health`,\n organizations: `${API_PREFIX}/orgs`,\n agents: `${API_PREFIX}/agents`,\n projects: `${API_PREFIX}/projects`,\n issues: `${API_PREFIX}/issues`,\n chats: `${API_PREFIX}/chats`,\n messenger: `${API_PREFIX}/messenger`,\n calendar: `${API_PREFIX}/calendar`,\n goals: `${API_PREFIX}/goals`,\n approvals: `${API_PREFIX}/approvals`,\n secrets: `${API_PREFIX}/secrets`,\n costs: `${API_PREFIX}/costs`,\n activity: `${API_PREFIX}/activity`,\n dashboard: `${API_PREFIX}/dashboard`,\n sidebarBadges: `${API_PREFIX}/sidebar-badges`,\n invites: `${API_PREFIX}/invites`,\n joinRequests: `${API_PREFIX}/join-requests`,\n members: `${API_PREFIX}/members`,\n admin: `${API_PREFIX}/admin`,\n} as const;\n", "import { normalizeAgentUrlKey } from \"./agent-url-key.js\";\nimport { normalizeOrganizationUrlKey } from \"./organization-url-key.js\";\nimport type {\n OrganizationSkillListItem,\n OrganizationSkillSourceType,\n} from \"./types/organization-skill.js\";\n\ntype SkillReferenceSource = Pick<\n OrganizationSkillListItem,\n \"key\" | \"slug\" | \"name\" | \"sourceType\" | \"sourceLocator\"\n> & Partial<Pick<OrganizationSkillListItem, \"sourceBadge\" | \"sourceLabel\" | \"sourcePath\">>;\n\nexport type OrganizationSkillPublicRefScope = \"organization\" | \"agent\";\n\nexport interface OrganizationSkillPublicRefContext {\n orgUrlKey: string;\n agentUrlKey?: string | null;\n scope?: OrganizationSkillPublicRefScope;\n}\n\nexport type ParsedOrganizationSkillReferenceKind =\n | \"raw_slug\"\n | \"organization\"\n | \"rudder\"\n | \"github\"\n | \"url\"\n | \"other\";\n\nexport interface ParsedOrganizationSkillReference {\n kind: ParsedOrganizationSkillReferenceKind;\n normalized: string;\n slug: string | null;\n segments: string[];\n}\n\nexport interface ResolveOrganizationSkillReferenceContext {\n orgId: string;\n}\n\nexport interface ResolveOrganizationSkillReferenceResult<TSkill> {\n skill: TSkill | null;\n ambiguous: boolean;\n}\n\nfunction normalizeSkillSlug(value: string | null | undefined) {\n return value ? normalizeAgentUrlKey(value) ?? null : null;\n}\n\nexport const RUDDER_BUNDLED_SKILL_SLUGS = [\n \"para-memory-files\",\n \"rudder\",\n \"rudder-create-agent\",\n \"rudder-create-plugin\",\n \"skill-creator\",\n \"skill-optimizer\",\n \"conversation-to-skill\",\n] as const;\n\nconst RUDDER_BUNDLED_SKILL_KEYS = new Set(\n RUDDER_BUNDLED_SKILL_SLUGS.map((slug) => `rudder/${slug}`),\n);\n\nexport function getBundledRudderSkillSlug(value: string | null | undefined) {\n if (!value) return null;\n const segments = value\n .trim()\n .split(\"/\")\n .map((segment) => normalizeSkillSlug(segment))\n .filter((segment): segment is string => Boolean(segment));\n\n if (segments.length === 2 && segments[0] === \"rudder\") {\n return segments[1] ?? null;\n }\n\n if (segments.length === 3 && segments[0] === \"rudder\" && segments[1] === \"rudder\") {\n return segments[2] ?? null;\n }\n\n return null;\n}\n\nexport function toBundledRudderSkillKey(value: string | null | undefined) {\n const slug = normalizeSkillSlug(value);\n if (!slug) return null;\n return `rudder/${slug}`;\n}\n\nexport function isCanonicalBundledRudderSkillKey(value: string | null | undefined) {\n return RUDDER_BUNDLED_SKILL_KEYS.has(value ?? \"\");\n}\n\nexport function normalizeOrganizationSkillKey(value: string | null | undefined) {\n if (!value) return null;\n const normalized = value\n .trim()\n .split(\"/\")\n .map((segment) => normalizeSkillSlug(segment))\n .filter((segment): segment is string => Boolean(segment))\n .join(\"/\");\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction isOrganizationScopedSkill(skill: { sourceType?: OrganizationSkillSourceType | null; key: string }) {\n return skill.sourceType !== \"github\" && skill.sourceType !== \"skills_sh\" && skill.sourceType !== \"url\";\n}\n\nfunction isRudderSkill(skill: SkillReferenceSource) {\n return getBundledRudderSkillSlug(skill.key) !== null || skill.sourceBadge === \"rudder\";\n}\n\nfunction normalizeSegmentList(reference: string) {\n return reference\n .trim()\n .split(\"/\")\n .map((segment) => normalizeSkillSlug(segment))\n .filter((segment): segment is string => Boolean(segment));\n}\n\nfunction parseRepositoryLocator(sourceLocator: string | null | undefined, sourceLabel: string | null | undefined) {\n const tryParse = (value: string | null | undefined) => {\n if (!value) return null;\n try {\n const url = new URL(value);\n const parts = url.pathname.split(\"/\").filter(Boolean);\n if (parts.length >= 2) {\n return {\n owner: normalizeSkillSlug(parts[0]) ?? parts[0]!,\n repo: normalizeSkillSlug(parts[1]) ?? parts[1]!,\n };\n }\n } catch {\n const parts = value.split(\"/\").map((part) => part.trim()).filter(Boolean);\n if (parts.length >= 2) {\n return {\n owner: normalizeSkillSlug(parts[0]) ?? parts[0]!,\n repo: normalizeSkillSlug(parts[1]) ?? parts[1]!,\n };\n }\n }\n return null;\n };\n\n return tryParse(sourceLocator) ?? tryParse(sourceLabel);\n}\n\nexport function formatOrganizationSkillPublicRef(\n skill: SkillReferenceSource,\n context: OrganizationSkillPublicRefContext,\n) {\n const normalizedKey = normalizeOrganizationSkillKey(skill.key) ?? skill.key.trim();\n const slug = (normalizeSkillSlug(skill.slug) ?? skill.slug.trim()) || \"skill\";\n const orgUrlKey = normalizeOrganizationUrlKey(context.orgUrlKey) ?? \"organization\";\n const agentUrlKey = normalizeAgentUrlKey(context.agentUrlKey ?? null);\n\n if (isRudderSkill(skill)) {\n return `rudder/${slug}`;\n }\n\n if (normalizedKey.startsWith(\"organization/\") || normalizedKey.startsWith(\"local/\") || normalizedKey.startsWith(\"catalog/\")) {\n if (context.scope === \"agent\" && agentUrlKey) {\n return `org/${orgUrlKey}/${agentUrlKey}/${slug}`;\n }\n return `org/${orgUrlKey}/${slug}`;\n }\n\n if (skill.sourceType === \"github\" || skill.sourceType === \"skills_sh\") {\n const repo = parseRepositoryLocator(skill.sourceLocator, skill.sourceLabel);\n if (repo) {\n return `${repo.owner}/${repo.repo}/${slug}`;\n }\n }\n\n if (normalizedKey.startsWith(\"url/\")) {\n return normalizedKey;\n }\n\n return normalizedKey;\n}\n\nexport function buildOrganizationSkillSearchText(\n skill: SkillReferenceSource,\n context: OrganizationSkillPublicRefContext,\n) {\n return [\n formatOrganizationSkillPublicRef(skill, context),\n skill.name,\n skill.slug,\n skill.sourceLabel ?? \"\",\n skill.sourceBadge ?? \"\",\n skill.sourcePath ?? \"\",\n ]\n .join(\" \")\n .toLowerCase();\n}\n\nexport function parseOrganizationSkillReference(reference: string): ParsedOrganizationSkillReference {\n const normalized = reference.trim();\n const segments = normalizeSegmentList(normalized);\n if (segments.length === 0) {\n return {\n kind: \"other\",\n normalized: \"\",\n slug: null,\n segments: [],\n };\n }\n\n if (segments[0] === \"org\" || segments[0] === \"organization\") {\n return {\n kind: \"organization\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments[0] === \"rudder\") {\n return {\n kind: \"rudder\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments[0] === \"url\" && segments.length >= 4) {\n return {\n kind: \"url\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments[0] === \"local\" && segments.length >= 3) {\n return {\n kind: \"other\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments.length >= 3) {\n return {\n kind: \"github\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n return {\n kind: \"raw_slug\",\n normalized: segments.join(\"/\"),\n slug: segments[0] ?? null,\n segments,\n };\n}\n\nexport function resolveOrganizationSkillReference<TSkill extends SkillReferenceSource>(\n skills: TSkill[],\n reference: string,\n context: ResolveOrganizationSkillReferenceContext,\n): ResolveOrganizationSkillReferenceResult<TSkill> {\n const trimmed = reference.trim();\n if (!trimmed) {\n return { skill: null, ambiguous: false };\n }\n\n const normalizedKey = normalizeOrganizationSkillKey(trimmed);\n if (normalizedKey) {\n const byKey = skills.find((skill) => normalizeOrganizationSkillKey(skill.key) === normalizedKey);\n if (byKey) {\n return { skill: byKey, ambiguous: false };\n }\n }\n\n const parsed = parseOrganizationSkillReference(trimmed);\n if (parsed.kind === \"organization\") {\n const slug = parsed.slug;\n if (!slug) return { skill: null, ambiguous: false };\n const exactKey = `organization/${context.orgId}/${slug}`;\n const byExactOrgKey = skills.find((skill) => skill.key === exactKey);\n if (byExactOrgKey) {\n return { skill: byExactOrgKey, ambiguous: false };\n }\n\n const orgScoped = skills.filter((skill) => isOrganizationScopedSkill(skill) && skill.slug === slug);\n if (orgScoped.length === 1) {\n return { skill: orgScoped[0] ?? null, ambiguous: false };\n }\n if (orgScoped.length > 1) {\n return { skill: null, ambiguous: true };\n }\n\n const bySlug = skills.filter((skill) => skill.slug === slug);\n if (bySlug.length === 1) {\n return { skill: bySlug[0] ?? null, ambiguous: false };\n }\n if (bySlug.length > 1) {\n return { skill: null, ambiguous: true };\n }\n return { skill: null, ambiguous: false };\n }\n\n if (parsed.kind === \"rudder\") {\n const slug = parsed.slug;\n if (!slug) return { skill: null, ambiguous: false };\n const canonicalKey = toBundledRudderSkillKey(slug);\n const legacyKey = canonicalKey ? `rudder/${canonicalKey}` : null;\n for (const exactKey of [canonicalKey, legacyKey]) {\n if (!exactKey) continue;\n const byExactKey = skills.find((skill) => skill.key === exactKey);\n if (byExactKey) {\n return { skill: byExactKey, ambiguous: false };\n }\n }\n\n const rudderSkills = skills.filter((skill) => isRudderSkill(skill) && skill.slug === slug);\n if (rudderSkills.length === 1) {\n return { skill: rudderSkills[0] ?? null, ambiguous: false };\n }\n if (rudderSkills.length > 1) {\n return { skill: null, ambiguous: true };\n }\n return { skill: null, ambiguous: false };\n }\n\n if (parsed.kind === \"raw_slug\") {\n const slug = parsed.slug;\n if (!slug) return { skill: null, ambiguous: false };\n const bySlug = skills.filter((skill) => skill.slug === slug);\n if (bySlug.length === 1) {\n return { skill: bySlug[0] ?? null, ambiguous: false };\n }\n if (bySlug.length > 1) {\n return { skill: null, ambiguous: true };\n }\n }\n\n return { skill: null, ambiguous: false };\n}\n", "import { PROJECT_COLORS } from \"./constants.js\";\n\nexport const PROJECT_MENTION_SCHEME = \"project://\";\nexport const AGENT_MENTION_SCHEME = \"agent://\";\nexport const ISSUE_MENTION_SCHEME = \"issue://\";\n\nconst HEX_COLOR_RE = /^[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_RE = /^[0-9a-f]{3}$/i;\nconst HEX_COLOR_WITH_HASH_RE = /^#[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_WITH_HASH_RE = /^#[0-9a-f]{3}$/i;\nconst PROJECT_MENTION_LINK_RE = /\\[[^\\]]*]\\((project:\\/\\/[^)\\s]+)\\)/gi;\nconst AGENT_MENTION_LINK_RE = /\\[[^\\]]*]\\((agent:\\/\\/[^)\\s]+)\\)/gi;\nconst ISSUE_MENTION_LINK_RE = /\\[[^\\]]*]\\((issue:\\/\\/[^)\\s]+)\\)/gi;\nconst AGENT_ICON_NAME_RE = /^[a-z0-9-]+$/i;\nconst PROJECT_COLOR_VALUES = new Set<string>(PROJECT_COLORS);\n\nexport interface ParsedProjectMention {\n projectId: string;\n color: string | null;\n}\n\nexport interface ParsedAgentMention {\n agentId: string;\n icon: string | null;\n}\n\nexport interface ParsedIssueMention {\n issueId: string;\n ref: string | null;\n}\n\nfunction normalizeHexColor(input: string | null | undefined): string | null {\n if (!input) return null;\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n if (HEX_COLOR_WITH_HASH_RE.test(trimmed)) {\n return trimmed.toLowerCase();\n }\n if (HEX_COLOR_RE.test(trimmed)) {\n return `#${trimmed.toLowerCase()}`;\n }\n if (HEX_COLOR_SHORT_WITH_HASH_RE.test(trimmed)) {\n const raw = trimmed.slice(1).toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n if (HEX_COLOR_SHORT_RE.test(trimmed)) {\n const raw = trimmed.toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n return null;\n}\n\nfunction normalizeProjectMentionColor(input: string | null | undefined): string | null {\n const hex = normalizeHexColor(input);\n if (hex) return hex;\n const trimmed = input?.trim();\n if (trimmed && PROJECT_COLOR_VALUES.has(trimmed)) return trimmed;\n return null;\n}\n\nfunction encodeMentionParam(value: string): string {\n return encodeURIComponent(value).replace(/[!'()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`);\n}\n\nfunction stripMarkdownCode(markdown: string): string {\n return markdown\n .replace(/```[\\s\\S]*?```/g, \"\")\n .replace(/`[^`\\n]*`/g, \"\");\n}\n\nexport function buildProjectMentionHref(projectId: string, color?: string | null): string {\n const trimmedProjectId = projectId.trim();\n const normalizedColor = normalizeProjectMentionColor(color ?? null);\n if (!normalizedColor) {\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}`;\n }\n const colorParam = normalizedColor.startsWith(\"#\") ? normalizedColor.slice(1) : normalizedColor;\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}?c=${encodeMentionParam(colorParam)}`;\n}\n\nexport function parseProjectMentionHref(href: string): ParsedProjectMention | null {\n if (!href.startsWith(PROJECT_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"project:\") return null;\n\n const projectId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!projectId) return null;\n\n const color = normalizeProjectMentionColor(url.searchParams.get(\"c\") ?? url.searchParams.get(\"color\"));\n\n return {\n projectId,\n color,\n };\n}\n\nexport function buildAgentMentionHref(agentId: string, icon?: string | null): string {\n const trimmedAgentId = agentId.trim();\n const normalizedIcon = normalizeAgentIcon(icon ?? null);\n if (!normalizedIcon) {\n return `${AGENT_MENTION_SCHEME}${trimmedAgentId}`;\n }\n return `${AGENT_MENTION_SCHEME}${trimmedAgentId}?i=${encodeURIComponent(normalizedIcon)}`;\n}\n\nexport function parseAgentMentionHref(href: string): ParsedAgentMention | null {\n if (!href.startsWith(AGENT_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"agent:\") return null;\n\n const agentId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!agentId) return null;\n\n return {\n agentId,\n icon: normalizeAgentIcon(url.searchParams.get(\"i\") ?? url.searchParams.get(\"icon\")),\n };\n}\n\nexport function buildIssueMentionHref(issueId: string, ref?: string | null): string {\n const trimmedIssueId = issueId.trim();\n const trimmedRef = ref?.trim();\n if (!trimmedRef) return `${ISSUE_MENTION_SCHEME}${trimmedIssueId}`;\n return `${ISSUE_MENTION_SCHEME}${trimmedIssueId}?r=${encodeURIComponent(trimmedRef)}`;\n}\n\nexport function parseIssueMentionHref(href: string): ParsedIssueMention | null {\n if (!href.startsWith(ISSUE_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"issue:\") return null;\n\n const issueId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!issueId) return null;\n\n const ref = (url.searchParams.get(\"r\") ?? url.searchParams.get(\"ref\") ?? \"\").trim() || null;\n\n return {\n issueId,\n ref,\n };\n}\n\nexport function extractProjectMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(PROJECT_MENTION_LINK_RE);\n const source = stripMarkdownCode(markdown);\n let match: RegExpExecArray | null;\n while ((match = re.exec(source)) !== null) {\n const parsed = parseProjectMentionHref(match[1]);\n if (parsed) ids.add(parsed.projectId);\n }\n return [...ids];\n}\n\nexport function extractAgentMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(AGENT_MENTION_LINK_RE);\n const source = stripMarkdownCode(markdown);\n let match: RegExpExecArray | null;\n while ((match = re.exec(source)) !== null) {\n const parsed = parseAgentMentionHref(match[1]);\n if (parsed) ids.add(parsed.agentId);\n }\n return [...ids];\n}\n\nexport function extractIssueMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(ISSUE_MENTION_LINK_RE);\n const source = stripMarkdownCode(markdown);\n let match: RegExpExecArray | null;\n while ((match = re.exec(source)) !== null) {\n const parsed = parseIssueMentionHref(match[1]);\n if (parsed) ids.add(parsed.issueId);\n }\n return [...ids];\n}\n\nfunction normalizeAgentIcon(input: string | null | undefined): string | null {\n if (!input) return null;\n const trimmed = input.trim().toLowerCase();\n if (!trimmed || !AGENT_ICON_NAME_RE.test(trimmed)) return null;\n return trimmed;\n}\n", "import { z } from \"zod\";\nimport {\n AUTH_BASE_URL_MODES,\n DEPLOYMENT_EXPOSURES,\n DEPLOYMENT_MODES,\n SECRET_PROVIDERS,\n STORAGE_PROVIDERS,\n} from \"./constants.js\";\n\nexport const DEFAULT_DATABASE_BACKUP_MAX_ESTIMATED_BYTES = 256 * 1024 * 1024;\n\nexport const configMetaSchema = z.object({\n version: z.literal(1),\n updatedAt: z.string(),\n source: z.enum([\"onboard\", \"configure\", \"doctor\"]),\n});\n\nexport const llmConfigSchema = z.object({\n provider: z.enum([\"claude\", \"openai\"]),\n apiKey: z.string().optional(),\n});\n\nexport const databaseBackupConfigSchema = z.object({\n enabled: z.boolean().default(true),\n intervalMinutes: z.number().int().min(1).max(7 * 24 * 60).default(60),\n retentionDays: z.number().int().min(1).max(3650).default(30),\n maxEstimatedBytes: z.number().int().min(1).default(DEFAULT_DATABASE_BACKUP_MAX_ESTIMATED_BYTES),\n dir: z.string().default(\"~/.rudder/instances/default/data/backups\"),\n});\n\nexport const databaseConfigSchema = z.object({\n mode: z.enum([\"embedded-postgres\", \"postgres\"]).default(\"embedded-postgres\"),\n connectionString: z.string().optional(),\n embeddedPostgresDataDir: z.string().default(\"~/.rudder/instances/default/db\"),\n embeddedPostgresPort: z.number().int().min(1).max(65535).default(54329),\n backup: databaseBackupConfigSchema.default({\n enabled: true,\n intervalMinutes: 60,\n retentionDays: 30,\n maxEstimatedBytes: DEFAULT_DATABASE_BACKUP_MAX_ESTIMATED_BYTES,\n dir: \"~/.rudder/instances/default/data/backups\",\n }),\n});\n\nexport const loggingConfigSchema = z.object({\n mode: z.enum([\"file\", \"cloud\"]),\n logDir: z.string().default(\"~/.rudder/instances/default/logs\"),\n});\n\nexport const serverConfigSchema = z.object({\n deploymentMode: z.enum(DEPLOYMENT_MODES).default(\"local_trusted\"),\n exposure: z.enum(DEPLOYMENT_EXPOSURES).default(\"private\"),\n host: z.string().default(\"127.0.0.1\"),\n port: z.number().int().min(1).max(65535).default(3100),\n allowedHostnames: z.array(z.string().min(1)).default([]),\n serveUi: z.boolean().default(true),\n});\n\nexport const authConfigSchema = z.object({\n baseUrlMode: z.enum(AUTH_BASE_URL_MODES).default(\"auto\"),\n publicBaseUrl: z.string().url().optional(),\n disableSignUp: z.boolean().default(false),\n});\n\nexport const storageLocalDiskConfigSchema = z.object({\n baseDir: z.string().default(\"~/.rudder/instances/default/data/storage\"),\n});\n\nexport const storageS3ConfigSchema = z.object({\n bucket: z.string().min(1).default(\"rudder\"),\n region: z.string().min(1).default(\"us-east-1\"),\n endpoint: z.string().optional(),\n prefix: z.string().default(\"\"),\n forcePathStyle: z.boolean().default(false),\n});\n\nexport const storageConfigSchema = z.object({\n provider: z.enum(STORAGE_PROVIDERS).default(\"local_disk\"),\n localDisk: storageLocalDiskConfigSchema.default({\n baseDir: \"~/.rudder/instances/default/data/storage\",\n }),\n s3: storageS3ConfigSchema.default({\n bucket: \"rudder\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n }),\n});\n\nexport const secretsLocalEncryptedConfigSchema = z.object({\n keyFilePath: z.string().default(\"~/.rudder/instances/default/secrets/master.key\"),\n});\n\nexport const secretsConfigSchema = z.object({\n provider: z.enum(SECRET_PROVIDERS).default(\"local_encrypted\"),\n strictMode: z.boolean().default(false),\n localEncrypted: secretsLocalEncryptedConfigSchema.default({\n keyFilePath: \"~/.rudder/instances/default/secrets/master.key\",\n }),\n});\n\nexport const langfuseConfigSchema = z.object({\n enabled: z.boolean().default(false),\n baseUrl: z.string().url().default(\"http://localhost:3000\"),\n publicKey: z.string().optional(),\n secretKey: z.string().optional(),\n environment: z.string().optional(),\n});\n\nexport const rudderConfigSchema = z\n .object({\n $meta: configMetaSchema,\n llm: llmConfigSchema.optional(),\n database: databaseConfigSchema,\n logging: loggingConfigSchema,\n server: serverConfigSchema,\n auth: authConfigSchema.default({\n baseUrlMode: \"auto\",\n disableSignUp: false,\n }),\n storage: storageConfigSchema.default({\n provider: \"local_disk\",\n localDisk: {\n baseDir: \"~/.rudder/instances/default/data/storage\",\n },\n s3: {\n bucket: \"rudder\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n },\n }),\n secrets: secretsConfigSchema.default({\n provider: \"local_encrypted\",\n strictMode: false,\n localEncrypted: {\n keyFilePath: \"~/.rudder/instances/default/secrets/master.key\",\n },\n }),\n langfuse: langfuseConfigSchema.optional(),\n })\n .superRefine((value, ctx) => {\n if (value.server.deploymentMode === \"local_trusted\") {\n if (value.server.exposure !== \"private\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"server.exposure must be private when deploymentMode is local_trusted\",\n path: [\"server\", \"exposure\"],\n });\n }\n return;\n }\n\n if (value.auth.baseUrlMode === \"explicit\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when auth.baseUrlMode is explicit\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n\n if (value.server.exposure === \"public\" && value.auth.baseUrlMode !== \"explicit\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.baseUrlMode must be explicit when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"baseUrlMode\"],\n });\n }\n\n if (value.server.exposure === \"public\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n });\n\nexport type RudderConfig = z.infer<typeof rudderConfigSchema>;\nexport type LlmConfig = z.infer<typeof llmConfigSchema>;\nexport type DatabaseConfig = z.infer<typeof databaseConfigSchema>;\nexport type LoggingConfig = z.infer<typeof loggingConfigSchema>;\nexport type ServerConfig = z.infer<typeof serverConfigSchema>;\nexport type StorageConfig = z.infer<typeof storageConfigSchema>;\nexport type StorageLocalDiskConfig = z.infer<typeof storageLocalDiskConfigSchema>;\nexport type StorageS3Config = z.infer<typeof storageS3ConfigSchema>;\nexport type SecretsConfig = z.infer<typeof secretsConfigSchema>;\nexport type SecretsLocalEncryptedConfig = z.infer<typeof secretsLocalEncryptedConfigSchema>;\nexport type LangfuseConfig = z.infer<typeof langfuseConfigSchema>;\nexport type AuthConfig = z.infer<typeof authConfigSchema>;\nexport type ConfigMeta = z.infer<typeof configMetaSchema>;\nexport type DatabaseBackupConfig = z.infer<typeof databaseBackupConfigSchema>;\n", "import type { Issue } from \"@rudderhq/shared\";\n\nexport const PLUGIN_ID = \"rudder.linear\";\nexport const PLUGIN_VERSION = \"0.1.0\";\nexport const PAGE_ROUTE = \"linear\";\nexport const ENTITY_TYPE_LINEAR_ISSUE_LINK = \"linear_issue_link\";\nexport const ISSUE_LINK_STATE_KEY = \"linear-link\";\nexport const DEFAULT_LINEAR_API_URL = \"https://api.linear.app/graphql\";\nexport const LINEAR_TOKEN_SETTINGS_URL = \"https://linear.app/settings/account/security\";\nexport const LINEAR_PAGE_SIZE = 25;\nexport const LINEAR_IMPORT_ALL_LIMIT = 100;\n\nexport const SLOT_IDS = {\n page: \"linear-page\",\n settingsPage: \"linear-settings-page\",\n issueTab: \"linear-issue-tab\",\n} as const;\n\nexport const EXPORT_NAMES = {\n page: \"LinearPluginPage\",\n settingsPage: \"LinearPluginSettingsPage\",\n issueTab: \"LinearIssueTab\",\n} as const;\n\nexport const DATA_KEYS = {\n settingsBootstrap: \"settings-bootstrap\",\n pageBootstrap: \"page-bootstrap\",\n settingsCatalog: \"settings-catalog\",\n catalog: \"linear-catalog\",\n issues: \"linear-issues\",\n issueLink: \"issue-link\",\n} as const;\n\nexport const ACTION_KEYS = {\n importIssues: \"import-linear-issues\",\n} as const;\n\nexport const RUDDER_STATUS_OPTIONS: Issue[\"status\"][] = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n];\n", "import { DEFAULT_LINEAR_API_URL } from \"./constants.js\";\nimport type {\n LinearCatalog,\n LinearIssueConnection,\n LinearIssueListFilters,\n LinearIssueSummary,\n LinearProjectSummary,\n LinearTeamSummary,\n LinearUserSummary,\n} from \"./types.js\";\n\nconst FIXTURE_TEAMS: LinearTeamSummary[] = [\n {\n id: \"team-eng\",\n key: \"ENG\",\n name: \"Engineering\",\n states: [\n { id: \"state-backlog\", name: \"Backlog\", type: \"backlog\" },\n { id: \"state-progress\", name: \"In Progress\", type: \"started\" },\n { id: \"state-triage\", name: \"Triage\", type: \"unstarted\" },\n { id: \"state-done\", name: \"Done\", type: \"completed\" },\n ],\n },\n];\n\nconst FIXTURE_PROJECTS: LinearProjectSummary[] = [\n { id: \"proj-roadmap\", name: \"Roadmap\", teamIds: [\"team-eng\"], teams: [FIXTURE_TEAMS[0]!] },\n { id: \"proj-growth\", name: \"Growth\", teamIds: [\"team-eng\"], teams: [FIXTURE_TEAMS[0]!] },\n];\n\nconst FIXTURE_USERS: LinearUserSummary[] = [\n { id: \"user-amy\", name: \"Amy Zhang\", email: \"amy@example.com\" },\n { id: \"user-ben\", name: \"Ben Ford\", email: \"ben@example.com\" },\n];\n\nconst FIXTURE_ISSUES: LinearIssueSummary[] = [\n {\n id: \"lin-1\",\n identifier: \"ENG-101\",\n title: \"Backlog intake issue\",\n description: \"Imported from the Linear fixture backlog.\",\n url: \"https://linear.app/example/issue/ENG-101\",\n updatedAt: \"2026-04-20T09:00:00.000Z\",\n createdAt: \"2026-04-10T09:00:00.000Z\",\n team: FIXTURE_TEAMS[0],\n state: FIXTURE_TEAMS[0].states[0]!,\n project: FIXTURE_PROJECTS[0]!,\n assignee: FIXTURE_USERS[0]!,\n },\n {\n id: \"lin-2\",\n identifier: \"ENG-102\",\n title: \"Status mapped issue\",\n description: \"This item should map into an in-progress Rudder issue.\",\n url: \"https://linear.app/example/issue/ENG-102\",\n updatedAt: \"2026-04-21T08:30:00.000Z\",\n createdAt: \"2026-04-11T09:00:00.000Z\",\n team: FIXTURE_TEAMS[0],\n state: FIXTURE_TEAMS[0].states[1]!,\n project: FIXTURE_PROJECTS[0]!,\n assignee: FIXTURE_USERS[1]!,\n },\n {\n id: \"lin-3\",\n identifier: \"ENG-103\",\n title: \"Unmapped state fallback issue\",\n description: \"This item intentionally uses an unmapped state in some tests.\",\n url: \"https://linear.app/example/issue/ENG-103\",\n updatedAt: \"2026-04-22T07:15:00.000Z\",\n createdAt: \"2026-04-12T09:00:00.000Z\",\n team: FIXTURE_TEAMS[0],\n state: { id: \"state-triage\", name: \"Triage\", type: \"unstarted\" },\n project: FIXTURE_PROJECTS[1]!,\n assignee: null,\n },\n];\n\nfunction readEnv(name: string): string | undefined {\n if (typeof process === \"undefined\") return undefined;\n return process.env[name];\n}\n\nfunction getLinearApiUrl(): string {\n return readEnv(\"RUDDER_LINEAR_API_URL\")?.trim() || DEFAULT_LINEAR_API_URL;\n}\n\nexport function isFixtureMode(): boolean {\n return readEnv(\"RUDDER_LINEAR_FIXTURE_MODE\") === \"1\";\n}\n\nexport function buildLinearIssuesFilter(filters: LinearIssueListFilters): Record<string, unknown> {\n const clauses: Record<string, unknown>[] = [];\n clauses.push({ team: { id: { in: filters.allowedTeamIds } } });\n if (filters.teamId) {\n clauses.push({ team: { id: { eq: filters.teamId } } });\n }\n if (filters.stateId) clauses.push({ state: { id: { eq: filters.stateId } } });\n if (filters.projectId) clauses.push({ project: { id: { eq: filters.projectId } } });\n if (filters.assigneeId) clauses.push({ assignee: { id: { eq: filters.assigneeId } } });\n if (filters.query?.trim()) {\n const query = filters.query.trim();\n clauses.push({\n or: [\n { title: { containsIgnoreCase: query } },\n { description: { containsIgnoreCase: query } },\n { identifier: { eqIgnoreCase: query } },\n ],\n });\n }\n if (clauses.length === 1) return clauses[0]!;\n return { and: clauses };\n}\n\ntype GraphQLResponse<T> = {\n data?: T;\n errors?: Array<{ message?: string }>;\n};\n\ntype GraphQLFetcher = (query: string, variables?: Record<string, unknown>) => Promise<unknown>;\n\nexport type LinearApiClient = {\n getViewer(): Promise<{ id: string; name: string; email?: string | null }>;\n getCatalog(allowedTeamIds?: string[]): Promise<LinearCatalog>;\n listIssues(filters: LinearIssueListFilters, limit: number, after?: string): Promise<LinearIssueConnection>;\n getIssue(issueId: string): Promise<LinearIssueSummary | null>;\n};\n\nfunction normalizeIssue(issue: Record<string, any>): LinearIssueSummary {\n return {\n id: String(issue.id),\n identifier: String(issue.identifier),\n title: String(issue.title),\n description: typeof issue.description === \"string\" ? issue.description : null,\n url: String(issue.url),\n updatedAt: String(issue.updatedAt),\n createdAt: issue.createdAt ? String(issue.createdAt) : null,\n team: {\n id: String(issue.team.id),\n key: String(issue.team.key ?? issue.team.name ?? issue.team.id),\n name: String(issue.team.name),\n states: Array.isArray(issue.team.states?.nodes)\n ? issue.team.states.nodes.map((state: Record<string, any>) => ({\n id: String(state.id),\n name: String(state.name),\n type: typeof state.type === \"string\" ? state.type : null,\n }))\n : [],\n },\n state: {\n id: String(issue.state.id),\n name: String(issue.state.name),\n type: typeof issue.state.type === \"string\" ? issue.state.type : null,\n },\n project: issue.project\n ? {\n id: String(issue.project.id),\n name: String(issue.project.name),\n teamIds: Array.isArray(issue.project.teams?.nodes)\n ? issue.project.teams.nodes.map((team: Record<string, any>) => String(team.id))\n : Array.isArray(issue.project.teamIds)\n ? issue.project.teamIds.map((teamId: unknown) => String(teamId))\n : [],\n teams: Array.isArray(issue.project.teams?.nodes)\n ? issue.project.teams.nodes.map((team: Record<string, any>) => ({\n id: String(team.id),\n key: String(team.key ?? team.name ?? team.id),\n name: String(team.name),\n }))\n : undefined,\n }\n : null,\n assignee: issue.assignee\n ? {\n id: String(issue.assignee.id),\n name: String(issue.assignee.name),\n email: typeof issue.assignee.email === \"string\" ? issue.assignee.email : null,\n }\n : null,\n };\n}\n\nasync function postGraphQL<T>(\n fetcher: GraphQLFetcher,\n query: string,\n variables?: Record<string, unknown>,\n): Promise<T> {\n const response = await fetcher(query, variables) as GraphQLResponse<T>;\n if (response.errors?.length) {\n throw new Error(response.errors.map((error) => error.message || \"Unknown Linear error\").join(\"; \"));\n }\n if (!response.data) throw new Error(\"Linear API returned no data\");\n return response.data;\n}\n\nfunction applyFixtureFilters(filters: LinearIssueListFilters): LinearIssueSummary[] {\n const allowedTeamIds = new Set(filters.allowedTeamIds);\n const query = filters.query?.trim().toLowerCase() ?? \"\";\n return FIXTURE_ISSUES\n .filter((issue) => allowedTeamIds.has(issue.team.id))\n .filter((issue) => !filters.teamId || issue.team.id === filters.teamId)\n .filter((issue) => !filters.stateId || issue.state.id === filters.stateId)\n .filter((issue) => !filters.projectId || issue.project?.id === filters.projectId)\n .filter((issue) => !filters.assigneeId || issue.assignee?.id === filters.assigneeId)\n .filter((issue) => {\n if (!query) return true;\n const haystack = [\n issue.identifier,\n issue.title,\n issue.description ?? \"\",\n issue.project?.name ?? \"\",\n issue.assignee?.name ?? \"\",\n ].join(\" \").toLowerCase();\n return haystack.includes(query);\n })\n .sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));\n}\n\nfunction createFixtureClient(): LinearApiClient {\n return {\n async getViewer() {\n return { id: \"viewer-fixture\", name: \"Fixture Viewer\", email: \"fixture@example.com\" };\n },\n async getCatalog(allowedTeamIds) {\n const allowed = allowedTeamIds?.length ? new Set(allowedTeamIds) : null;\n return {\n teams: allowed ? FIXTURE_TEAMS.filter((team) => allowed.has(team.id)) : FIXTURE_TEAMS,\n projects: FIXTURE_PROJECTS,\n users: FIXTURE_USERS,\n };\n },\n async listIssues(filters, limit, after) {\n const filtered = applyFixtureFilters(filters);\n const start = after ? filtered.findIndex((issue) => issue.id === after) + 1 : 0;\n const slice = filtered.slice(Math.max(start, 0), Math.max(start, 0) + limit);\n const last = slice[slice.length - 1] ?? null;\n const endIndex = last ? filtered.findIndex((issue) => issue.id === last.id) : -1;\n return {\n nodes: slice,\n endCursor: last?.id ?? null,\n hasNextPage: endIndex !== -1 && endIndex < filtered.length - 1,\n };\n },\n async getIssue(issueId) {\n return FIXTURE_ISSUES.find((issue) => issue.id === issueId) ?? null;\n },\n };\n}\n\nexport function createLinearApiClient(\n token: string,\n fetchImpl?: typeof fetch,\n options?: { fixtureMode?: boolean },\n): LinearApiClient {\n if (options?.fixtureMode || isFixtureMode()) {\n return createFixtureClient();\n }\n\n const effectiveFetch = fetchImpl ?? fetch;\n const apiUrl = getLinearApiUrl();\n const fetcher: GraphQLFetcher = async (query, variables) => {\n const response = await effectiveFetch(apiUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: token,\n },\n body: JSON.stringify({ query, variables }),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Linear API request failed (${response.status}): ${text}`);\n }\n return await response.json();\n };\n\n return {\n async getViewer() {\n const data = await postGraphQL<{ viewer: { id: string; name: string; email?: string | null } }>(\n fetcher,\n `query LinearViewer {\n viewer {\n id\n name\n email\n }\n }`,\n );\n return data.viewer;\n },\n async getCatalog(allowedTeamIds) {\n const hasTeamFilter = Boolean(allowedTeamIds?.length);\n const data = await postGraphQL<{\n teams: { nodes: Array<Record<string, any>> };\n projects: { nodes: Array<Record<string, any>> };\n users: { nodes: Array<Record<string, any>> };\n }>(\n fetcher,\n `query LinearCatalog${hasTeamFilter ? \"($teamIds: [String!])\" : \"\"} {\n teams${hasTeamFilter ? \"(filter: { id: { in: $teamIds } }, first: 50)\" : \"(first: 50)\"} {\n nodes {\n id\n key\n name\n states(first: 100) {\n nodes {\n id\n name\n type\n }\n }\n }\n }\n projects(first: 100) {\n nodes {\n id\n name\n teams(first: 20) {\n nodes {\n id\n key\n name\n }\n }\n }\n }\n users(first: 100) {\n nodes {\n id\n name\n email\n active\n }\n }\n }`,\n hasTeamFilter ? { teamIds: allowedTeamIds } : undefined,\n );\n\n return {\n teams: data.teams.nodes.map((team) => ({\n id: String(team.id),\n key: String(team.key ?? team.name ?? team.id),\n name: String(team.name),\n states: Array.isArray(team.states?.nodes)\n ? team.states.nodes.map((state: Record<string, any>) => ({\n id: String(state.id),\n name: String(state.name),\n type: typeof state.type === \"string\" ? state.type : null,\n }))\n : [],\n })),\n projects: data.projects.nodes\n .map((project) => {\n const teams: Array<Pick<LinearTeamSummary, \"id\" | \"key\" | \"name\">> = Array.isArray(project.teams?.nodes)\n ? project.teams.nodes.map((team: Record<string, any>) => ({\n id: String(team.id),\n key: String(team.key ?? team.name ?? team.id),\n name: String(team.name),\n }))\n : [];\n return {\n id: String(project.id),\n name: String(project.name),\n teamIds: teams.map((team) => team.id),\n teams,\n };\n })\n .filter((project) => {\n if (!allowedTeamIds?.length || project.teamIds.length === 0) return true;\n return project.teamIds.some((teamId) => allowedTeamIds.includes(teamId));\n }),\n users: data.users.nodes\n .filter((user) => user.active !== false)\n .map((user) => ({\n id: String(user.id),\n name: String(user.name),\n email: typeof user.email === \"string\" ? user.email : null,\n })),\n };\n },\n async listIssues(filters, limit, after) {\n const data = await postGraphQL<{\n issues: {\n nodes: Array<Record<string, any>>;\n pageInfo: { hasNextPage: boolean; endCursor: string | null };\n };\n }>(\n fetcher,\n `query LinearIssues($first: Int!, $after: String, $filter: IssueFilter) {\n issues(first: $first, after: $after, filter: $filter, orderBy: updatedAt) {\n nodes {\n id\n identifier\n title\n description\n url\n updatedAt\n createdAt\n team {\n id\n key\n name\n states(first: 100) {\n nodes {\n id\n name\n type\n }\n }\n }\n state {\n id\n name\n type\n }\n project {\n id\n name\n teams(first: 20) {\n nodes {\n id\n key\n name\n }\n }\n }\n assignee {\n id\n name\n email\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }`,\n {\n first: limit,\n after: after ?? null,\n filter: buildLinearIssuesFilter(filters),\n },\n );\n\n return {\n nodes: data.issues.nodes.map(normalizeIssue),\n endCursor: data.issues.pageInfo.endCursor,\n hasNextPage: data.issues.pageInfo.hasNextPage,\n };\n },\n async getIssue(issueId) {\n const data = await postGraphQL<{ issue: Record<string, any> | null }>(\n fetcher,\n `query LinearIssue($id: String!) {\n issue(id: $id) {\n id\n identifier\n title\n description\n url\n updatedAt\n createdAt\n team {\n id\n key\n name\n states(first: 100) {\n nodes {\n id\n name\n type\n }\n }\n }\n state {\n id\n name\n type\n }\n project {\n id\n name\n teams(first: 20) {\n nodes {\n id\n key\n name\n }\n }\n }\n assignee {\n id\n name\n email\n }\n }\n }`,\n { id: issueId },\n );\n\n return data.issue ? normalizeIssue(data.issue) : null;\n },\n };\n}\n", "import {\n definePlugin,\n runWorker,\n type PluginConfigValidationResult,\n type PluginContext,\n} from \"@rudderhq/plugin-sdk\";\nimport type { Issue, Organization, Project } from \"@rudderhq/shared\";\nimport {\n ACTION_KEYS,\n DATA_KEYS,\n ENTITY_TYPE_LINEAR_ISSUE_LINK,\n ISSUE_LINK_STATE_KEY,\n LINEAR_IMPORT_ALL_LIMIT,\n} from \"./constants.js\";\nimport { createLinearApiClient, isFixtureMode } from \"./linear-api.js\";\nimport type {\n ImportLinearIssuesActionInput,\n ImportLinearIssuesActionResult,\n ImportedLinearLink,\n IssueLinkData,\n LinearCatalog,\n LinearIssueListFilters,\n LinearIssueSummary,\n LinearLinkState,\n LinearOrganizationMapping,\n LinearPluginConfig,\n LinearTeamMapping,\n PageBootstrapData,\n SettingsCatalogData,\n SettingsBootstrapData,\n} from \"./types.js\";\n\nfunction emptyConfig(): LinearPluginConfig {\n return {\n apiTokenSecretRef: \"\",\n teamMappings: [],\n organizationMappings: [],\n };\n}\n\nexport function normalizeConfig(raw: LinearPluginConfig | Record<string, unknown> | undefined | null): LinearPluginConfig {\n const legacyOrganizationMappings = Array.isArray((raw as LinearPluginConfig | undefined)?.organizationMappings)\n ? ((raw as LinearPluginConfig).organizationMappings ?? [])\n : [];\n const explicitTeamMappings = Array.isArray((raw as LinearPluginConfig | undefined)?.teamMappings)\n ? ((raw as LinearPluginConfig).teamMappings ?? [])\n : [];\n\n return {\n ...emptyConfig(),\n ...(raw as LinearPluginConfig),\n teamMappings: explicitTeamMappings.length > 0\n ? explicitTeamMappings\n : mergeLegacyTeamMappings(legacyOrganizationMappings),\n organizationMappings: legacyOrganizationMappings,\n };\n}\n\nfunction mergeLegacyTeamMappings(mappings: LinearOrganizationMapping[]): LinearTeamMapping[] {\n const byTeamId = new Map<string, LinearTeamMapping>();\n for (const mapping of mappings) {\n for (const team of mapping.teamMappings ?? []) {\n if (!team.teamId || byTeamId.has(team.teamId)) continue;\n byTeamId.set(team.teamId, team);\n }\n }\n return [...byTeamId.values()];\n}\n\nasync function getConfig(ctx: PluginContext): Promise<LinearPluginConfig> {\n return normalizeConfig(await ctx.config.get());\n}\n\nfunction adaptHostFetch(fetchImpl: PluginContext[\"http\"][\"fetch\"]) {\n return async (input: string | URL | RequestInfo, init?: RequestInit): Promise<Response> => {\n const url = typeof input === \"string\"\n ? input\n : input instanceof URL\n ? input.toString()\n : input instanceof Request\n ? input.url\n : String(input);\n return await fetchImpl(url, init);\n };\n}\n\nfunction requireOrgId(params: Record<string, unknown>): string {\n const orgId = typeof params.orgId === \"string\" ? params.orgId : \"\";\n if (!orgId) throw new Error(\"orgId is required\");\n return orgId;\n}\n\nfunction getOrgMapping(config: LinearPluginConfig, orgId: string): LinearOrganizationMapping | null {\n if (config.teamMappings.length > 0) {\n return { orgId, teamMappings: config.teamMappings };\n }\n return config.organizationMappings.find((mapping) => mapping.orgId === orgId) ?? null;\n}\n\nfunction getAllowedTeamIds(mapping: LinearOrganizationMapping): string[] {\n return mapping.teamMappings.map((team) => team.teamId);\n}\n\nfunction filterCatalogForMapping(catalog: LinearCatalog, mapping: LinearOrganizationMapping): LinearCatalog {\n const allowedTeamIds = new Set(getAllowedTeamIds(mapping));\n if (allowedTeamIds.size === 0) {\n return {\n teams: [],\n projects: [],\n users: [],\n };\n }\n\n return {\n teams: catalog.teams.filter((team) => allowedTeamIds.has(team.id)),\n projects: catalog.projects.filter((project) => {\n if (project.teamIds.length === 0) return true;\n return project.teamIds.some((teamId) => allowedTeamIds.has(teamId));\n }),\n users: catalog.users,\n };\n}\n\nfunction sanitizeFilters(\n params: Record<string, unknown>,\n allowedTeamIds: string[],\n): LinearIssueListFilters {\n return {\n allowedTeamIds,\n teamId: typeof params.teamId === \"string\" && params.teamId ? params.teamId : undefined,\n stateId: typeof params.stateId === \"string\" && params.stateId ? params.stateId : undefined,\n projectId: typeof params.projectId === \"string\" && params.projectId ? params.projectId : undefined,\n assigneeId: typeof params.assigneeId === \"string\" && params.assigneeId ? params.assigneeId : undefined,\n query: typeof params.query === \"string\" && params.query.trim() ? params.query.trim() : undefined,\n };\n}\n\nasync function resolveLinearClient(ctx: PluginContext, orgId: string) {\n const config = await getConfig(ctx);\n const mapping = getOrgMapping(config, orgId);\n if (!config.apiTokenSecretRef) throw new Error(\"Add a Linear token in plugin settings.\");\n if (!mapping) throw new Error(\"Connect Linear in plugin settings before importing issues.\");\n const token = await ctx.secrets.resolve(config.apiTokenSecretRef);\n const client = createLinearApiClient(token, adaptHostFetch(ctx.http.fetch), {\n fixtureMode: config.fixtureMode === true,\n });\n return { client, config, mapping };\n}\n\nasync function resolveLinearSettingsClient(ctx: PluginContext) {\n const config = await getConfig(ctx);\n if (!config.apiTokenSecretRef) throw new Error(\"Add a Linear token first.\");\n const token = await ctx.secrets.resolve(config.apiTokenSecretRef);\n const client = createLinearApiClient(token, adaptHostFetch(ctx.http.fetch), {\n fixtureMode: config.fixtureMode === true,\n });\n return { client, config };\n}\n\nasync function listAllLinearLinks(ctx: PluginContext): Promise<LinearLinkState[]> {\n const links: LinearLinkState[] = [];\n let offset = 0;\n const pageSize = 200;\n while (offset <= 5000) {\n const page = await ctx.entities.list({\n entityType: ENTITY_TYPE_LINEAR_ISSUE_LINK,\n limit: pageSize,\n offset,\n });\n if (page.length === 0) break;\n for (const record of page) {\n const data = record.data as Partial<LinearLinkState>;\n if (!data.externalId || !data.rudderIssueId) continue;\n links.push({\n externalId: String(data.externalId),\n linearIdentifier: String(data.linearIdentifier ?? record.title ?? data.externalId),\n linearTitle: String(data.linearTitle ?? record.title ?? \"\"),\n linearUrl: String(data.linearUrl ?? \"\"),\n orgId: String(data.orgId ?? \"\"),\n rudderIssueId: String(data.rudderIssueId),\n rudderIssueIdentifier: typeof data.rudderIssueIdentifier === \"string\" ? data.rudderIssueIdentifier : null,\n teamId: String(data.teamId ?? \"\"),\n teamName: String(data.teamName ?? \"\"),\n projectId: typeof data.projectId === \"string\" ? data.projectId : null,\n projectName: typeof data.projectName === \"string\" ? data.projectName : null,\n stateId: String(data.stateId ?? \"\"),\n stateName: String(data.stateName ?? record.status ?? \"\"),\n importedAt: String(data.importedAt ?? record.createdAt),\n updatedAt: String(data.updatedAt ?? record.updatedAt),\n });\n }\n if (page.length < pageSize) break;\n offset += page.length;\n }\n return links;\n}\n\nasync function buildImportedLinkIndex(ctx: PluginContext): Promise<Map<string, ImportedLinearLink>> {\n const index = new Map<string, ImportedLinearLink>();\n const links = await listAllLinearLinks(ctx);\n for (const link of links) {\n index.set(link.externalId, {\n externalId: link.externalId,\n rudderIssueId: link.rudderIssueId,\n rudderIssueIdentifier: link.rudderIssueIdentifier,\n orgId: link.orgId,\n });\n }\n return index;\n}\n\nfunction findTeamMapping(mapping: LinearOrganizationMapping, issue: LinearIssueSummary): LinearTeamMapping | null {\n return mapping.teamMappings.find((team) => team.teamId === issue.team.id) ?? null;\n}\n\nfunction assertIssueTeamAllowed(mapping: LinearOrganizationMapping, issue: LinearIssueSummary): void {\n if (findTeamMapping(mapping, issue)) return;\n throw new Error(\n `Linear issue ${issue.identifier} belongs to team ${issue.team.name} (${issue.team.id}), which is not selected for import.`,\n );\n}\n\nexport function resolveMappedStatus(mapping: LinearOrganizationMapping, issue: LinearIssueSummary): {\n status: Issue[\"status\"];\n fallback: boolean;\n} {\n const teamMapping = findTeamMapping(mapping, issue);\n const status = teamMapping?.stateMappings.find((entry) => entry.linearStateId === issue.state.id)?.rudderStatus;\n return {\n status: status ?? \"backlog\",\n fallback: !status,\n };\n}\n\nfunction resolveFinalImportStatus(status: Issue[\"status\"]): {\n status: Issue[\"status\"];\n adjusted: boolean;\n} {\n if (status === \"in_progress\") {\n return {\n status: \"todo\",\n adjusted: true,\n };\n }\n return {\n status,\n adjusted: false,\n };\n}\n\nexport function buildIssueDescription(issue: LinearIssueSummary): string {\n const sourceBlock = [\n \"Source: Linear\",\n `Linear Issue: ${issue.identifier}`,\n `Linear URL: ${issue.url}`,\n ].join(\"\\n\");\n\n if (issue.description?.trim()) {\n return `${issue.description.trim()}\\n\\n---\\n${sourceBlock}`;\n }\n return sourceBlock;\n}\n\nasync function buildSettingsBootstrap(ctx: PluginContext): Promise<SettingsBootstrapData> {\n const config = await getConfig(ctx);\n const organizations = await ctx.organizations.list({ limit: 200, offset: 0 }) as Array<Pick<Organization, \"id\" | \"name\" | \"issuePrefix\">>;\n return {\n config,\n organizations,\n fixtureMode: config.fixtureMode === true || isFixtureMode(),\n };\n}\n\nasync function buildSettingsCatalog(ctx: PluginContext, params: Record<string, unknown>): Promise<SettingsCatalogData> {\n const { client } = await resolveLinearSettingsClient(ctx);\n const orgId = typeof params.orgId === \"string\" && params.orgId ? params.orgId : null;\n const catalog = await client.getCatalog();\n return {\n orgId,\n ...catalog,\n };\n}\n\nasync function buildPageBootstrap(ctx: PluginContext, orgId: string): Promise<PageBootstrapData> {\n const config = await getConfig(ctx);\n const mapping = getOrgMapping(config, orgId);\n const projects = await ctx.projects.list({ orgId, limit: 200, offset: 0 }) as Array<Pick<Project, \"id\" | \"name\">>;\n if (!config.apiTokenSecretRef) {\n return {\n configured: false,\n message: \"Connect Linear in plugin settings before importing issues.\",\n projects,\n teamMappings: [],\n };\n }\n if (!mapping) {\n return {\n configured: false,\n message: \"Refresh Linear settings before importing issues.\",\n projects,\n teamMappings: [],\n };\n }\n if (mapping.teamMappings.length === 0) {\n return {\n configured: false,\n message: \"Add at least one allowed Linear team.\",\n projects,\n teamMappings: [],\n };\n }\n return {\n configured: true,\n message: null,\n projects,\n teamMappings: mapping.teamMappings,\n };\n}\n\nasync function findIssueLink(ctx: PluginContext, orgId: string, issueId: string): Promise<LinearLinkState | null> {\n const direct = await ctx.state.get({\n scopeKind: \"issue\",\n scopeId: issueId,\n stateKey: ISSUE_LINK_STATE_KEY,\n }) as LinearLinkState | null;\n if (direct?.externalId) return direct;\n const links = await listAllLinearLinks(ctx);\n return links.find((link) => link.orgId === orgId && link.rudderIssueId === issueId) ?? null;\n}\n\nasync function storeIssueLink(\n ctx: PluginContext,\n orgId: string,\n rudderIssue: { id: string; identifier?: string | null },\n linearIssue: LinearIssueSummary,\n): Promise<LinearLinkState> {\n const link: LinearLinkState = {\n externalId: linearIssue.id,\n linearIdentifier: linearIssue.identifier,\n linearTitle: linearIssue.title,\n linearUrl: linearIssue.url,\n orgId,\n rudderIssueId: rudderIssue.id,\n rudderIssueIdentifier: rudderIssue.identifier ?? null,\n teamId: linearIssue.team.id,\n teamName: linearIssue.team.name,\n projectId: linearIssue.project?.id ?? null,\n projectName: linearIssue.project?.name ?? null,\n stateId: linearIssue.state.id,\n stateName: linearIssue.state.name,\n importedAt: new Date().toISOString(),\n updatedAt: linearIssue.updatedAt,\n };\n\n await ctx.entities.upsert({\n entityType: ENTITY_TYPE_LINEAR_ISSUE_LINK,\n scopeKind: \"issue\",\n scopeId: rudderIssue.id,\n externalId: linearIssue.id,\n title: `${linearIssue.identifier} ${linearIssue.title}`,\n status: linearIssue.state.name,\n data: link,\n });\n await ctx.state.set(\n { scopeKind: \"issue\", scopeId: rudderIssue.id, stateKey: ISSUE_LINK_STATE_KEY },\n link,\n );\n return link;\n}\n\nasync function importIssuesAction(\n ctx: PluginContext,\n input: ImportLinearIssuesActionInput,\n): Promise<ImportLinearIssuesActionResult> {\n if (!input.orgId) throw new Error(\"orgId is required\");\n if (!input.targetProjectId) throw new Error(\"Choose a target project before importing.\");\n\n const project = await ctx.projects.get(input.targetProjectId, input.orgId);\n if (!project) throw new Error(\"Selected Rudder project was not found.\");\n\n const { client, mapping } = await resolveLinearClient(ctx, input.orgId);\n const importedIndex = await buildImportedLinkIndex(ctx);\n const allowedTeamIds = getAllowedTeamIds(mapping);\n const filters = sanitizeFilters((input.filters ?? {}) as Record<string, unknown>, allowedTeamIds);\n\n let candidates: LinearIssueSummary[] = [];\n if (input.mode === \"allMatching\") {\n const batch = await client.listIssues(filters, LINEAR_IMPORT_ALL_LIMIT + 1);\n if (batch.nodes.length > LINEAR_IMPORT_ALL_LIMIT) {\n throw new Error(`Import all is limited to ${LINEAR_IMPORT_ALL_LIMIT} matching issues. Narrow the filters and try again.`);\n }\n candidates = batch.nodes;\n } else {\n const issueIds = Array.isArray(input.issueIds) ? input.issueIds.filter(Boolean) : [];\n if (issueIds.length === 0) {\n throw new Error(\"Select at least one Linear issue to import.\");\n }\n candidates = (await Promise.all(issueIds.map((issueId) => client.getIssue(issueId)))).filter(Boolean) as LinearIssueSummary[];\n }\n\n const duplicateIssueIds: string[] = [];\n const importedIssues: ImportLinearIssuesActionResult[\"importedIssues\"] = [];\n\n for (const linearIssue of candidates) {\n assertIssueTeamAllowed(mapping, linearIssue);\n const duplicate = importedIndex.get(linearIssue.id);\n if (duplicate) {\n duplicateIssueIds.push(linearIssue.id);\n continue;\n }\n\n const mapped = resolveMappedStatus(mapping, linearIssue);\n const resolvedStatus = resolveFinalImportStatus(mapped.status);\n const created = await ctx.issues.create({\n orgId: input.orgId,\n projectId: input.targetProjectId,\n title: linearIssue.title,\n description: buildIssueDescription(linearIssue),\n status: resolvedStatus.status,\n priority: \"medium\",\n });\n const link = await storeIssueLink(ctx, input.orgId, created, linearIssue);\n await ctx.activity.log({\n orgId: input.orgId,\n entityType: \"issue\",\n entityId: created.id,\n message: `Imported Linear issue ${linearIssue.identifier}`,\n metadata: {\n linearIssueId: linearIssue.id,\n linearIdentifier: linearIssue.identifier,\n targetProjectId: input.targetProjectId,\n fallbackStatus: mapped.fallback,\n adjustedStatus: resolvedStatus.adjusted,\n mappedStatus: mapped.status,\n finalStatus: resolvedStatus.status,\n },\n });\n importedIndex.set(linearIssue.id, {\n externalId: linearIssue.id,\n rudderIssueId: created.id,\n rudderIssueIdentifier: created.identifier ?? null,\n orgId: input.orgId,\n });\n importedIssues.push({\n linearId: linearIssue.id,\n rudderIssueId: link.rudderIssueId,\n rudderIssueIdentifier: link.rudderIssueIdentifier,\n fallbackStatus: mapped.fallback,\n adjustedStatus: resolvedStatus.adjusted,\n finalStatus: resolvedStatus.status,\n });\n }\n\n return {\n importedCount: importedIssues.length,\n duplicateCount: duplicateIssueIds.length,\n fallbackCount: importedIssues.filter((issue) => issue.fallbackStatus).length,\n adjustedCount: importedIssues.filter((issue) => issue.adjustedStatus).length,\n importedIssues,\n duplicateIssueIds,\n };\n}\n\nasync function validateConfig(ctx: PluginContext, config: LinearPluginConfig): Promise<PluginConfigValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (!config.apiTokenSecretRef?.trim()) {\n errors.push(\"Linear token is required.\");\n }\n if (!Array.isArray(config.teamMappings) || config.teamMappings.length === 0) {\n warnings.push(\"No Linear teams have been prepared for import yet. Use Refresh from Linear in settings.\");\n }\n\n const seenTeams = new Set<string>();\n for (const team of config.teamMappings ?? []) {\n if (!team.teamId?.trim()) {\n errors.push(\"A Linear team choice has no team.\");\n continue;\n }\n if (seenTeams.has(team.teamId)) {\n errors.push(`Linear team ${team.teamName ?? team.teamId} is selected more than once.`);\n }\n seenTeams.add(team.teamId);\n for (const stateMapping of team.stateMappings ?? []) {\n if (stateMapping.rudderStatus === \"in_progress\") {\n warnings.push(\n `Linear team ${team.teamName ?? team.teamId} has a status rule that imports as in progress. Imports stay unassigned in v1, so those issues are downgraded to todo.`,\n );\n }\n }\n }\n\n if (errors.length > 0) return { ok: false, errors };\n\n try {\n const token = await ctx.secrets.resolve(config.apiTokenSecretRef!.trim());\n const client = createLinearApiClient(token, adaptHostFetch(ctx.http.fetch), {\n fixtureMode: config.fixtureMode === true,\n });\n await client.getViewer();\n if (config.fixtureMode === true || isFixtureMode()) {\n warnings.push(\"Linear fixture mode is enabled; external API calls are stubbed.\");\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n if (errors.length > 0) return { ok: false, errors };\n return { ok: true, warnings };\n}\n\nconst plugin = definePlugin({\n async setup(ctx: PluginContext) {\n currentContext = ctx;\n ctx.data.register(DATA_KEYS.settingsBootstrap, async () => {\n return await buildSettingsBootstrap(ctx);\n });\n\n ctx.data.register(DATA_KEYS.pageBootstrap, async (params: Record<string, unknown>) => {\n return await buildPageBootstrap(ctx, requireOrgId(params));\n });\n\n ctx.data.register(DATA_KEYS.settingsCatalog, async (params: Record<string, unknown>) => {\n return await buildSettingsCatalog(ctx, params);\n });\n\n ctx.data.register(DATA_KEYS.catalog, async (params: Record<string, unknown>) => {\n const orgId = requireOrgId(params);\n try {\n const { client, mapping } = await resolveLinearClient(ctx, orgId);\n const catalog = filterCatalogForMapping(await client.getCatalog(), mapping);\n return {\n orgId,\n ...catalog,\n };\n } catch {\n return {\n orgId,\n teams: [],\n projects: [],\n users: [],\n };\n }\n });\n\n ctx.data.register(DATA_KEYS.issues, async (params: Record<string, unknown>) => {\n const orgId = requireOrgId(params);\n try {\n const { client, mapping } = await resolveLinearClient(ctx, orgId);\n const limit = typeof params.limit === \"number\" ? Math.max(1, Math.min(100, Math.floor(params.limit))) : 25;\n const after = typeof params.after === \"string\" && params.after ? params.after : undefined;\n const filters = sanitizeFilters(params, getAllowedTeamIds(mapping));\n const importedIndex = await buildImportedLinkIndex(ctx);\n const connection = await client.listIssues(filters, limit, after);\n return {\n rows: connection.nodes.map((issue) => {\n const imported = importedIndex.get(issue.id) ?? null;\n return {\n ...issue,\n imported: Boolean(imported),\n importedRudderIssueId: imported?.rudderIssueId ?? null,\n importedRudderIssueIdentifier: imported?.rudderIssueIdentifier ?? null,\n importedOrgId: imported?.orgId ?? null,\n };\n }),\n endCursor: connection.endCursor,\n hasNextPage: connection.hasNextPage,\n totalShown: connection.nodes.length,\n };\n } catch {\n return {\n rows: [],\n endCursor: null,\n hasNextPage: false,\n totalShown: 0,\n };\n }\n });\n\n ctx.data.register(DATA_KEYS.issueLink, async (params: Record<string, unknown>): Promise<IssueLinkData> => {\n const orgId = requireOrgId(params);\n const issueId = typeof params.issueId === \"string\" ? params.issueId : \"\";\n if (!issueId) throw new Error(\"issueId is required\");\n const issue = await ctx.issues.get(issueId, orgId);\n if (!issue) throw new Error(\"Rudder issue not found\");\n const link = await findIssueLink(ctx, orgId, issueId);\n if (!link) {\n return {\n linked: false,\n issueTitle: issue.title,\n searchQuery: issue.title,\n };\n }\n try {\n const { client } = await resolveLinearClient(ctx, orgId);\n const latestIssue = await client.getIssue(link.externalId);\n return {\n linked: true,\n issueTitle: issue.title,\n link,\n latestIssue,\n staleReason: latestIssue ? null : \"The linked Linear issue could not be fetched; showing the last imported snapshot.\",\n };\n } catch (error) {\n return {\n linked: true,\n issueTitle: issue.title,\n link,\n latestIssue: null,\n staleReason: error instanceof Error ? error.message : String(error),\n };\n }\n });\n\n ctx.actions.register(ACTION_KEYS.importIssues, async (params: Record<string, unknown>) => {\n return await importIssuesAction(ctx, params as unknown as ImportLinearIssuesActionInput);\n });\n },\n\n async onHealth() {\n return {\n status: \"ok\",\n message: \"Linear plugin worker is running.\",\n details: {\n fixtureMode: isFixtureMode(),\n },\n };\n },\n\n async onValidateConfig(config: Record<string, unknown>) {\n if (!currentContext) {\n return {\n ok: false,\n errors: [\"Plugin context is not ready for configuration validation.\"],\n };\n }\n return await validateConfig(currentContext, normalizeConfig(config as LinearPluginConfig));\n },\n});\n\nlet currentContext: PluginContext | null = null;\n\nexport default plugin;\nrunWorker(plugin, import.meta.url);\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * `definePlugin` \u2014 the top-level helper for authoring a Rudder plugin.\n *\n * Plugin authors call `definePlugin()` and export the result as the default\n * export from their worker entrypoint. The host imports the worker module,\n * calls `setup()` with a `PluginContext`, and from that point the plugin\n * responds to events, jobs, webhooks, and UI requests through the context.\n *\n * @see PLUGIN_SPEC.md \u00A714.1 \u2014 Example SDK Shape\n *\n * @example\n * ```ts\n * // dist/worker.ts\n * import { definePlugin } from \"@rudderhq/plugin-sdk\";\n *\n * export default definePlugin({\n * async setup(ctx) {\n * ctx.logger.info(\"Linear sync plugin starting\");\n *\n * // Subscribe to events\n * ctx.events.on(\"issue.created\", async (event) => {\n * const config = await ctx.config.get();\n * await ctx.http.fetch(`https://api.linear.app/...`, {\n * method: \"POST\",\n * headers: { Authorization: `Bearer ${await ctx.secrets.resolve(config.apiKeyRef as string)}` },\n * body: JSON.stringify({ title: event.payload.title }),\n * });\n * });\n *\n * // Register a job handler\n * ctx.jobs.register(\"full-sync\", async (job) => {\n * ctx.logger.info(\"Running full-sync job\", { runId: job.runId });\n * // ... sync logic\n * });\n *\n * // Register data for the UI\n * ctx.data.register(\"sync-health\", async ({ orgId }) => {\n * const state = await ctx.state.get({\n * scopeKind: \"company\",\n * scopeId: String(orgId),\n * stateKey: \"last-sync\",\n * });\n * return { lastSync: state };\n * });\n * },\n * });\n * ```\n */\n\nimport type { PluginContext } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Health check result\n// ---------------------------------------------------------------------------\n\n/**\n * Optional plugin-reported diagnostics returned from the `health()` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.2 \u2014 `health`\n */\nexport interface PluginHealthDiagnostics {\n /** Machine-readable status: `\"ok\"` | `\"degraded\"` | `\"error\"`. */\n status: \"ok\" | \"degraded\" | \"error\";\n /** Human-readable description of the current health state. */\n message?: string;\n /** Plugin-reported key-value diagnostics (e.g. connection status, queue depth). */\n details?: Record<string, unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// Config validation result\n// ---------------------------------------------------------------------------\n\n/**\n * Result returned from the `validateConfig()` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.3 \u2014 `validateConfig`\n */\nexport interface PluginConfigValidationResult {\n /** Whether the config is valid. */\n ok: boolean;\n /** Non-fatal warnings about the config. */\n warnings?: string[];\n /** Validation errors (populated when `ok` is `false`). */\n errors?: string[];\n}\n\n// ---------------------------------------------------------------------------\n// Webhook handler input\n// ---------------------------------------------------------------------------\n\n/**\n * Input received by the plugin worker's `handleWebhook` handler.\n *\n * @see PLUGIN_SPEC.md \u00A713.7 \u2014 `handleWebhook`\n */\nexport interface PluginWebhookInput {\n /** Endpoint key matching the manifest declaration. */\n endpointKey: string;\n /** Inbound request headers. */\n headers: Record<string, string | string[]>;\n /** Raw request body as a UTF-8 string. */\n rawBody: string;\n /** Parsed JSON body (if applicable and parseable). */\n parsedBody?: unknown;\n /** Unique request identifier for idempotency checks. */\n requestId: string;\n}\n\n// ---------------------------------------------------------------------------\n// Plugin definition\n// ---------------------------------------------------------------------------\n\n/**\n * The plugin definition shape passed to `definePlugin()`.\n *\n * The only required field is `setup`, which receives the `PluginContext` and\n * is where the plugin registers its handlers (events, jobs, data, actions,\n * tools, etc.).\n *\n * All other lifecycle hooks are optional. If a hook is not implemented the\n * host applies default behaviour (e.g. restarting the worker on config change\n * instead of calling `onConfigChanged`).\n *\n * @see PLUGIN_SPEC.md \u00A713 \u2014 Host-Worker Protocol\n */\nexport interface PluginDefinition {\n /**\n * Called once when the plugin worker starts up, after `initialize` completes.\n *\n * This is where the plugin registers all its handlers: event subscriptions,\n * job handlers, data/action handlers, and tool registrations. Registration\n * must be synchronous after `setup` resolves \u2014 do not register handlers\n * inside async callbacks that may resolve after `setup` returns.\n *\n * @param ctx - The full plugin context provided by the host\n */\n setup(ctx: PluginContext): Promise<void>;\n\n /**\n * Called when the host wants to know if the plugin is healthy.\n *\n * The host polls this on a regular interval and surfaces the result in the\n * plugin health dashboard. If not implemented, the host infers health from\n * worker process liveness.\n *\n * @see PLUGIN_SPEC.md \u00A713.2 \u2014 `health`\n */\n onHealth?(): Promise<PluginHealthDiagnostics>;\n\n /**\n * Called when the operator updates the plugin's instance configuration at\n * runtime, without restarting the worker.\n *\n * If not implemented, the host restarts the worker to apply the new config.\n *\n * @param newConfig - The newly resolved configuration\n * @see PLUGIN_SPEC.md \u00A713.4 \u2014 `configChanged`\n */\n onConfigChanged?(newConfig: Record<string, unknown>): Promise<void>;\n\n /**\n * Called when the host is about to shut down the plugin worker.\n *\n * The worker has at most 10 seconds (configurable via plugin config) to\n * finish in-flight work and resolve this promise. After the deadline the\n * host sends SIGTERM, then SIGKILL.\n *\n * @see PLUGIN_SPEC.md \u00A712.5 \u2014 Graceful Shutdown Policy\n */\n onShutdown?(): Promise<void>;\n\n /**\n * Called to validate the current plugin configuration.\n *\n * The host calls this:\n * - after the plugin starts (to surface config errors immediately)\n * - after the operator saves a new config (to validate before persisting)\n * - via the \"Test Connection\" button in the settings UI\n *\n * @param config - The configuration to validate\n * @see PLUGIN_SPEC.md \u00A713.3 \u2014 `validateConfig`\n */\n onValidateConfig?(config: Record<string, unknown>): Promise<PluginConfigValidationResult>;\n\n /**\n * Called to handle an inbound webhook delivery.\n *\n * The host routes `POST /api/plugins/:pluginId/webhooks/:endpointKey` to\n * this handler. The plugin is responsible for signature verification using\n * a resolved secret ref.\n *\n * If not implemented but webhooks are declared in the manifest, the host\n * returns HTTP 501 for webhook deliveries.\n *\n * @param input - Webhook delivery metadata and payload\n * @see PLUGIN_SPEC.md \u00A713.7 \u2014 `handleWebhook`\n */\n onWebhook?(input: PluginWebhookInput): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// PaperclipPlugin \u2014 the sealed object returned by definePlugin()\n// ---------------------------------------------------------------------------\n\n/**\n * The sealed plugin object returned by `definePlugin()`.\n *\n * Plugin authors export this as the default export from their worker\n * entrypoint. The host imports it and calls the lifecycle methods.\n *\n * @see PLUGIN_SPEC.md \u00A714 \u2014 SDK Surface\n */\nexport interface PaperclipPlugin {\n /** The original plugin definition passed to `definePlugin()`. */\n readonly definition: PluginDefinition;\n}\n\n// ---------------------------------------------------------------------------\n// definePlugin \u2014 top-level factory\n// ---------------------------------------------------------------------------\n\n/**\n * Define a Rudder plugin.\n *\n * Call this function in your worker entrypoint and export the result as the\n * default export. The host will import the module and call lifecycle methods\n * on the returned object.\n *\n * @param definition - Plugin lifecycle handlers\n * @returns A sealed `PaperclipPlugin` object for the host to consume\n *\n * @example\n * ```ts\n * import { definePlugin } from \"@rudderhq/plugin-sdk\";\n *\n * export default definePlugin({\n * async setup(ctx) {\n * ctx.logger.info(\"Plugin started\");\n * ctx.events.on(\"issue.created\", async (event) => {\n * // handle event\n * });\n * },\n *\n * async onHealth() {\n * return { status: \"ok\" };\n * },\n * });\n * ```\n *\n * @see PLUGIN_SPEC.md \u00A714.1 \u2014 Example SDK Shape\n */\nexport function definePlugin(definition: PluginDefinition): PaperclipPlugin {\n return Object.freeze({ definition });\n}\n", "/**\n * Worker-side RPC host \u2014 runs inside the child process spawned by the host.\n *\n * This module is the worker-side counterpart to the server's\n * `PluginWorkerManager`. It:\n *\n * 1. Reads newline-delimited JSON-RPC 2.0 requests from **stdin**\n * 2. Dispatches them to the appropriate plugin handler (events, jobs, tools, \u2026)\n * 3. Writes JSON-RPC 2.0 responses back on **stdout**\n * 4. Provides a concrete `PluginContext` whose SDK client methods (e.g.\n * `ctx.state.get()`, `ctx.events.emit()`) send JSON-RPC requests to the\n * host on stdout and await responses on stdin.\n *\n * ## Message flow\n *\n * ```\n * Host (parent) Worker (this module)\n * | |\n * |--- request(initialize) -------------> | \u2192 calls plugin.setup(ctx)\n * |<-- response(ok:true) ---------------- |\n * | |\n * |--- notification(onEvent) -----------> | \u2192 dispatches to registered handler\n * | |\n * |<-- request(state.get) --------------- | \u2190 SDK client call from plugin code\n * |--- response(result) ----------------> |\n * | |\n * |--- request(shutdown) ---------------> | \u2192 calls plugin.onShutdown()\n * |<-- response(void) ------------------ |\n * | (process exits)\n * ```\n *\n * @see PLUGIN_SPEC.md \u00A712 \u2014 Process Model\n * @see PLUGIN_SPEC.md \u00A713 \u2014 Host-Worker Protocol\n * @see PLUGIN_SPEC.md \u00A714 \u2014 SDK Surface\n */\n\nimport path from \"node:path\";\nimport { createInterface, type Interface as ReadlineInterface } from \"node:readline\";\nimport { fileURLToPath } from \"node:url\";\n\nimport type { PaperclipPluginManifestV1 } from \"@rudderhq/shared\";\n\nimport type { PaperclipPlugin } from \"./define-plugin.js\";\nimport type {\n PluginHealthDiagnostics,\n PluginConfigValidationResult,\n PluginWebhookInput,\n} from \"./define-plugin.js\";\nimport type {\n PluginContext,\n PluginEvent,\n PluginJobContext,\n PluginLauncherRegistration,\n ScopeKey,\n ToolRunContext,\n ToolResult,\n EventFilter,\n AgentSessionEvent,\n} from \"./types.js\";\nimport type {\n JsonRpcId,\n JsonRpcRequest,\n JsonRpcResponse,\n InitializeParams,\n InitializeResult,\n ConfigChangedParams,\n ValidateConfigParams,\n OnEventParams,\n RunJobParams,\n GetDataParams,\n PerformActionParams,\n ExecuteToolParams,\n WorkerToHostMethodName,\n WorkerToHostMethods,\n} from \"./protocol.js\";\nimport {\n JSONRPC_VERSION,\n JSONRPC_ERROR_CODES,\n PLUGIN_RPC_ERROR_CODES,\n createRequest,\n createSuccessResponse,\n createErrorResponse,\n createNotification,\n parseMessage,\n serializeMessage,\n isJsonRpcRequest,\n isJsonRpcResponse,\n isJsonRpcNotification,\n isJsonRpcSuccessResponse,\n isJsonRpcErrorResponse,\n JsonRpcParseError,\n JsonRpcCallError,\n} from \"./protocol.js\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/**\n * Options for starting the worker-side RPC host.\n */\nexport interface WorkerRpcHostOptions {\n /**\n * The plugin definition returned by `definePlugin()`.\n *\n * The worker entrypoint should import its plugin and pass it here.\n */\n plugin: PaperclipPlugin;\n\n /**\n * Input stream to read JSON-RPC messages from.\n * Defaults to `process.stdin`.\n */\n stdin?: NodeJS.ReadableStream;\n\n /**\n * Output stream to write JSON-RPC messages to.\n * Defaults to `process.stdout`.\n */\n stdout?: NodeJS.WritableStream;\n\n /**\n * Default timeout (ms) for worker\u2192host RPC calls.\n * Defaults to 30 000 ms.\n */\n rpcTimeoutMs?: number;\n}\n\n/**\n * A running worker RPC host instance.\n *\n * Returned by `startWorkerRpcHost()`. Callers (usually just the worker\n * bootstrap) hold a reference so they can inspect status or force-stop.\n */\nexport interface WorkerRpcHost {\n /** Whether the host is currently running and listening for messages. */\n readonly running: boolean;\n\n /**\n * Stop the RPC host immediately. Closes readline, rejects pending\n * outbound calls, and does NOT call the plugin's shutdown hook (that\n * should have already been called via the `shutdown` RPC method).\n */\n stop(): void;\n}\n\n// ---------------------------------------------------------------------------\n// Internal: event registration\n// ---------------------------------------------------------------------------\n\ninterface EventRegistration {\n name: string;\n filter?: EventFilter;\n fn: (event: PluginEvent) => Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Default timeout for worker\u2192host RPC calls. */\nconst DEFAULT_RPC_TIMEOUT_MS = 30_000;\n\n// ---------------------------------------------------------------------------\n// startWorkerRpcHost\n// ---------------------------------------------------------------------------\n\n/**\n * Options for runWorker when testing (optional stdio to avoid using process streams).\n * When both stdin and stdout are provided, the \"is main module\" check is skipped\n * and the host is started with these streams. Used by tests.\n */\nexport interface RunWorkerOptions {\n stdin?: NodeJS.ReadableStream;\n stdout?: NodeJS.WritableStream;\n}\n\n/**\n * Start the worker when this module is the process entrypoint.\n *\n * Call this at the bottom of your worker file so that when the host runs\n * `node dist/worker.js`, the RPC host starts and the process stays alive.\n * When the module is imported (e.g. for re-exports or tests), nothing runs.\n *\n * When `options.stdin` and `options.stdout` are provided (e.g. in tests),\n * the main-module check is skipped and the host is started with those streams.\n *\n * @example\n * ```ts\n * const plugin = definePlugin({ ... });\n * export default plugin;\n * runWorker(plugin, import.meta.url);\n * ```\n */\nexport function runWorker(\n plugin: PaperclipPlugin,\n moduleUrl: string,\n options?: RunWorkerOptions,\n): WorkerRpcHost | void {\n if (\n options?.stdin != null &&\n options?.stdout != null\n ) {\n return startWorkerRpcHost({\n plugin,\n stdin: options.stdin,\n stdout: options.stdout,\n });\n }\n const entry = process.argv[1];\n if (typeof entry !== \"string\") return;\n const thisFile = path.resolve(fileURLToPath(moduleUrl));\n const entryPath = path.resolve(entry);\n if (thisFile === entryPath) {\n startWorkerRpcHost({ plugin });\n }\n}\n\n/**\n * Start the worker-side RPC host.\n *\n * This function is typically called from a thin bootstrap script that is the\n * actual entrypoint of the child process:\n *\n * ```ts\n * // worker-bootstrap.ts\n * import plugin from \"./worker.js\";\n * import { startWorkerRpcHost } from \"@rudderhq/plugin-sdk\";\n *\n * startWorkerRpcHost({ plugin });\n * ```\n *\n * The host begins listening on stdin immediately. It does NOT call\n * `plugin.definition.setup()` yet \u2014 that happens when the host sends the\n * `initialize` RPC.\n *\n * @returns A handle for inspecting or stopping the RPC host\n */\nexport function startWorkerRpcHost(options: WorkerRpcHostOptions): WorkerRpcHost {\n const { plugin } = options;\n const stdinStream = options.stdin ?? process.stdin;\n const stdoutStream = options.stdout ?? process.stdout;\n const rpcTimeoutMs = options.rpcTimeoutMs ?? DEFAULT_RPC_TIMEOUT_MS;\n\n // -----------------------------------------------------------------------\n // State\n // -----------------------------------------------------------------------\n\n let running = true;\n let initialized = false;\n let manifest: PaperclipPluginManifestV1 | null = null;\n let currentConfig: Record<string, unknown> = {};\n\n // Plugin handler registrations (populated during setup())\n const eventHandlers: EventRegistration[] = [];\n const jobHandlers = new Map<string, (job: PluginJobContext) => Promise<void>>();\n const launcherRegistrations = new Map<string, PluginLauncherRegistration>();\n const dataHandlers = new Map<string, (params: Record<string, unknown>) => Promise<unknown>>();\n const actionHandlers = new Map<string, (params: Record<string, unknown>) => Promise<unknown>>();\n const toolHandlers = new Map<string, {\n declaration: Pick<import(\"@rudderhq/shared\").PluginToolDeclaration, \"displayName\" | \"description\" | \"parametersSchema\">;\n fn: (params: unknown, runCtx: ToolRunContext) => Promise<ToolResult>;\n }>();\n\n // Agent session event callbacks (populated by sendMessage, cleared by close)\n const sessionEventCallbacks = new Map<string, (event: AgentSessionEvent) => void>();\n\n // Pending outbound (worker\u2192host) requests\n const pendingRequests = new Map<string | number, {\n resolve: (response: JsonRpcResponse) => void;\n timer: ReturnType<typeof setTimeout>;\n }>();\n let nextOutboundId = 1;\n const MAX_OUTBOUND_ID = Number.MAX_SAFE_INTEGER - 1;\n\n // -----------------------------------------------------------------------\n // Outbound messaging (worker \u2192 host)\n // -----------------------------------------------------------------------\n\n function sendMessage(message: unknown): void {\n if (!running) return;\n const serialized = serializeMessage(message as any);\n stdoutStream.write(serialized);\n }\n\n /**\n * Send a typed JSON-RPC request to the host and await the response.\n */\n function callHost<M extends WorkerToHostMethodName>(\n method: M,\n params: WorkerToHostMethods[M][0],\n timeoutMs?: number,\n ): Promise<WorkerToHostMethods[M][1]> {\n return new Promise<WorkerToHostMethods[M][1]>((resolve, reject) => {\n if (!running) {\n reject(new Error(`Cannot call \"${method}\" \u2014 worker RPC host is not running`));\n return;\n }\n\n if (nextOutboundId >= MAX_OUTBOUND_ID) {\n nextOutboundId = 1;\n }\n const id = nextOutboundId++;\n const timeout = timeoutMs ?? rpcTimeoutMs;\n let settled = false;\n\n const settle = <T>(fn: (value: T) => void, value: T): void => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n pendingRequests.delete(id);\n fn(value);\n };\n\n const timer = setTimeout(() => {\n settle(\n reject,\n new JsonRpcCallError({\n code: PLUGIN_RPC_ERROR_CODES.TIMEOUT,\n message: `Worker\u2192host call \"${method}\" timed out after ${timeout}ms`,\n }),\n );\n }, timeout);\n\n pendingRequests.set(id, {\n resolve: (response: JsonRpcResponse) => {\n if (isJsonRpcSuccessResponse(response)) {\n settle(resolve, response.result as WorkerToHostMethods[M][1]);\n } else if (isJsonRpcErrorResponse(response)) {\n settle(reject, new JsonRpcCallError(response.error));\n } else {\n settle(reject, new Error(`Unexpected response format for \"${method}\"`));\n }\n },\n timer,\n });\n\n try {\n const request = createRequest(method, params, id);\n sendMessage(request);\n } catch (err) {\n settle(reject, err instanceof Error ? err : new Error(String(err)));\n }\n });\n }\n\n /**\n * Send a JSON-RPC notification to the host (fire-and-forget).\n */\n function notifyHost(method: string, params: unknown): void {\n try {\n sendMessage(createNotification(method, params));\n } catch {\n // Swallow \u2014 the host may have closed stdin\n }\n }\n\n // -----------------------------------------------------------------------\n // Build the PluginContext (SDK surface for plugin code)\n // -----------------------------------------------------------------------\n\n function buildContext(): PluginContext {\n return {\n get manifest() {\n if (!manifest) throw new Error(\"Plugin context accessed before initialization\");\n return manifest;\n },\n\n config: {\n async get() {\n return callHost(\"config.get\", {} as Record<string, never>);\n },\n },\n\n events: {\n on(\n name: string,\n filterOrFn: EventFilter | ((event: PluginEvent) => Promise<void>),\n maybeFn?: (event: PluginEvent) => Promise<void>,\n ): () => void {\n let registration: EventRegistration;\n if (typeof filterOrFn === \"function\") {\n registration = { name, fn: filterOrFn };\n } else {\n if (!maybeFn) throw new Error(\"Event handler function is required\");\n registration = { name, filter: filterOrFn, fn: maybeFn };\n }\n eventHandlers.push(registration);\n // Register subscription on the host so events are forwarded to this worker\n void callHost(\"events.subscribe\", { eventPattern: name, filter: registration.filter ?? null }).catch((err) => {\n notifyHost(\"log\", {\n level: \"warn\",\n message: `Failed to subscribe to event \"${name}\" on host: ${err instanceof Error ? err.message : String(err)}`,\n });\n });\n return () => {\n const idx = eventHandlers.indexOf(registration);\n if (idx !== -1) eventHandlers.splice(idx, 1);\n };\n },\n\n async emit(name: string, orgId: string, payload: unknown): Promise<void> {\n await callHost(\"events.emit\", { name, orgId, payload });\n },\n },\n\n jobs: {\n register(key: string, fn: (job: PluginJobContext) => Promise<void>): void {\n jobHandlers.set(key, fn);\n },\n },\n\n launchers: {\n register(launcher: PluginLauncherRegistration): void {\n launcherRegistrations.set(launcher.id, launcher);\n },\n },\n\n http: {\n async fetch(url: string, init?: RequestInit): Promise<Response> {\n const serializedInit: Record<string, unknown> = {};\n if (init) {\n if (init.method) serializedInit.method = init.method;\n if (init.headers) {\n // Normalize headers to a plain object\n if (init.headers instanceof Headers) {\n const obj: Record<string, string> = {};\n init.headers.forEach((v, k) => { obj[k] = v; });\n serializedInit.headers = obj;\n } else if (Array.isArray(init.headers)) {\n const obj: Record<string, string> = {};\n for (const [k, v] of init.headers) obj[k] = v;\n serializedInit.headers = obj;\n } else {\n serializedInit.headers = init.headers;\n }\n }\n if (init.body !== undefined && init.body !== null) {\n serializedInit.body = typeof init.body === \"string\"\n ? init.body\n : String(init.body);\n }\n }\n\n const result = await callHost(\"http.fetch\", {\n url,\n init: Object.keys(serializedInit).length > 0 ? serializedInit : undefined,\n });\n\n // Reconstruct a Response-like object from the serialized result\n return new Response(result.body, {\n status: result.status,\n statusText: result.statusText,\n headers: result.headers,\n });\n },\n },\n\n secrets: {\n async resolve(secretRef: string): Promise<string> {\n return callHost(\"secrets.resolve\", { secretRef });\n },\n },\n\n activity: {\n async log(entry): Promise<void> {\n await callHost(\"activity.log\", {\n orgId: entry.orgId,\n message: entry.message,\n entityType: entry.entityType,\n entityId: entry.entityId,\n metadata: entry.metadata,\n });\n },\n },\n\n state: {\n async get(input: ScopeKey): Promise<unknown> {\n return callHost(\"state.get\", {\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n namespace: input.namespace,\n stateKey: input.stateKey,\n });\n },\n\n async set(input: ScopeKey, value: unknown): Promise<void> {\n await callHost(\"state.set\", {\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n namespace: input.namespace,\n stateKey: input.stateKey,\n value,\n });\n },\n\n async delete(input: ScopeKey): Promise<void> {\n await callHost(\"state.delete\", {\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n namespace: input.namespace,\n stateKey: input.stateKey,\n });\n },\n },\n\n entities: {\n async upsert(input) {\n return callHost(\"entities.upsert\", {\n entityType: input.entityType,\n scopeKind: input.scopeKind,\n scopeId: input.scopeId,\n externalId: input.externalId,\n title: input.title,\n status: input.status,\n data: input.data,\n });\n },\n\n async list(query) {\n return callHost(\"entities.list\", {\n entityType: query.entityType,\n scopeKind: query.scopeKind,\n scopeId: query.scopeId,\n externalId: query.externalId,\n limit: query.limit,\n offset: query.offset,\n });\n },\n },\n\n projects: {\n async list(input) {\n return callHost(\"projects.list\", {\n orgId: input.orgId,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(projectId: string, orgId: string) {\n return callHost(\"projects.get\", { projectId, orgId });\n },\n\n async listWorkspaces(projectId: string, orgId: string) {\n return callHost(\"projects.listWorkspaces\", { projectId, orgId });\n },\n\n async getPrimaryWorkspace(projectId: string, orgId: string) {\n return callHost(\"projects.getPrimaryWorkspace\", { projectId, orgId });\n },\n\n async getWorkspaceForIssue(issueId: string, orgId: string) {\n return callHost(\"projects.getWorkspaceForIssue\", { issueId, orgId });\n },\n },\n\n organizations: {\n async list(input) {\n return callHost(\"organizations.list\", {\n limit: input?.limit,\n offset: input?.offset,\n });\n },\n\n async get(orgId: string) {\n return callHost(\"organizations.get\", { orgId });\n },\n },\n\n issues: {\n async list(input) {\n return callHost(\"issues.list\", {\n orgId: input.orgId,\n projectId: input.projectId,\n assigneeAgentId: input.assigneeAgentId,\n reviewerAgentId: input.reviewerAgentId,\n reviewerUserId: input.reviewerUserId,\n status: input.status,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(issueId: string, orgId: string) {\n return callHost(\"issues.get\", { issueId, orgId });\n },\n\n async create(input) {\n return callHost(\"issues.create\", {\n orgId: input.orgId,\n projectId: input.projectId,\n goalId: input.goalId,\n parentId: input.parentId,\n title: input.title,\n description: input.description,\n status: input.status,\n priority: input.priority,\n assigneeAgentId: input.assigneeAgentId,\n reviewerAgentId: input.reviewerAgentId,\n reviewerUserId: input.reviewerUserId,\n });\n },\n\n async update(issueId: string, patch, orgId: string) {\n return callHost(\"issues.update\", {\n issueId,\n patch: patch as Record<string, unknown>,\n orgId,\n });\n },\n\n async listComments(issueId: string, orgId: string) {\n return callHost(\"issues.listComments\", { issueId, orgId });\n },\n\n async createComment(issueId: string, body: string, orgId: string) {\n return callHost(\"issues.createComment\", { issueId, body, orgId });\n },\n\n documents: {\n async list(issueId: string, orgId: string) {\n return callHost(\"issues.documents.list\", { issueId, orgId });\n },\n\n async get(issueId: string, key: string, orgId: string) {\n return callHost(\"issues.documents.get\", { issueId, key, orgId });\n },\n\n async upsert(input) {\n return callHost(\"issues.documents.upsert\", {\n issueId: input.issueId,\n key: input.key,\n body: input.body,\n orgId: input.orgId,\n title: input.title,\n format: input.format,\n changeSummary: input.changeSummary,\n });\n },\n\n async delete(issueId: string, key: string, orgId: string) {\n return callHost(\"issues.documents.delete\", { issueId, key, orgId });\n },\n },\n },\n\n agents: {\n async list(input) {\n return callHost(\"agents.list\", {\n orgId: input.orgId,\n status: input.status,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(agentId: string, orgId: string) {\n return callHost(\"agents.get\", { agentId, orgId });\n },\n\n async pause(agentId: string, orgId: string) {\n return callHost(\"agents.pause\", { agentId, orgId });\n },\n\n async resume(agentId: string, orgId: string) {\n return callHost(\"agents.resume\", { agentId, orgId });\n },\n\n async invoke(agentId: string, orgId: string, opts: { prompt: string; reason?: string }) {\n return callHost(\"agents.invoke\", { agentId, orgId, prompt: opts.prompt, reason: opts.reason });\n },\n\n sessions: {\n async create(agentId: string, orgId: string, opts?: { taskKey?: string; reason?: string }) {\n return callHost(\"agents.sessions.create\", {\n agentId,\n orgId,\n taskKey: opts?.taskKey,\n reason: opts?.reason,\n });\n },\n\n async list(agentId: string, orgId: string) {\n return callHost(\"agents.sessions.list\", { agentId, orgId });\n },\n\n async sendMessage(sessionId: string, orgId: string, opts: {\n prompt: string;\n reason?: string;\n onEvent?: (event: AgentSessionEvent) => void;\n }) {\n if (opts.onEvent) {\n sessionEventCallbacks.set(sessionId, opts.onEvent);\n }\n try {\n return await callHost(\"agents.sessions.sendMessage\", {\n sessionId,\n orgId,\n prompt: opts.prompt,\n reason: opts.reason,\n });\n } catch (err) {\n sessionEventCallbacks.delete(sessionId);\n throw err;\n }\n },\n\n async close(sessionId: string, orgId: string) {\n sessionEventCallbacks.delete(sessionId);\n await callHost(\"agents.sessions.close\", { sessionId, orgId });\n },\n },\n },\n\n goals: {\n async list(input) {\n return callHost(\"goals.list\", {\n orgId: input.orgId,\n level: input.level,\n status: input.status,\n limit: input.limit,\n offset: input.offset,\n });\n },\n\n async get(goalId: string, orgId: string) {\n return callHost(\"goals.get\", { goalId, orgId });\n },\n\n async create(input) {\n return callHost(\"goals.create\", {\n orgId: input.orgId,\n title: input.title,\n description: input.description,\n level: input.level,\n status: input.status,\n parentId: input.parentId,\n ownerAgentId: input.ownerAgentId,\n });\n },\n\n async update(goalId: string, patch, orgId: string) {\n return callHost(\"goals.update\", {\n goalId,\n patch: patch as Record<string, unknown>,\n orgId,\n });\n },\n },\n\n data: {\n register(key: string, handler: (params: Record<string, unknown>) => Promise<unknown>): void {\n dataHandlers.set(key, handler);\n },\n },\n\n actions: {\n register(key: string, handler: (params: Record<string, unknown>) => Promise<unknown>): void {\n actionHandlers.set(key, handler);\n },\n },\n\n streams: (() => {\n // Track channel \u2192 orgId so emit/close don't require orgId\n const channelOrganizationMap = new Map<string, string>();\n return {\n open(channel: string, orgId: string): void {\n channelOrganizationMap.set(channel, orgId);\n notifyHost(\"streams.open\", { channel, orgId });\n },\n emit(channel: string, event: unknown): void {\n const orgId = channelOrganizationMap.get(channel) ?? \"\";\n notifyHost(\"streams.emit\", { channel, orgId, event });\n },\n close(channel: string): void {\n const orgId = channelOrganizationMap.get(channel) ?? \"\";\n channelOrganizationMap.delete(channel);\n notifyHost(\"streams.close\", { channel, orgId });\n },\n };\n })(),\n\n tools: {\n register(\n name: string,\n declaration: Pick<import(\"@rudderhq/shared\").PluginToolDeclaration, \"displayName\" | \"description\" | \"parametersSchema\">,\n fn: (params: unknown, runCtx: ToolRunContext) => Promise<ToolResult>,\n ): void {\n toolHandlers.set(name, { declaration, fn });\n },\n },\n\n metrics: {\n async write(name: string, value: number, tags?: Record<string, string>): Promise<void> {\n await callHost(\"metrics.write\", { name, value, tags });\n },\n },\n\n logger: {\n info(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"info\", message, meta });\n },\n warn(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"warn\", message, meta });\n },\n error(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"error\", message, meta });\n },\n debug(message: string, meta?: Record<string, unknown>): void {\n notifyHost(\"log\", { level: \"debug\", message, meta });\n },\n },\n };\n }\n\n const ctx = buildContext();\n\n // -----------------------------------------------------------------------\n // Inbound message handling (host \u2192 worker)\n // -----------------------------------------------------------------------\n\n /**\n * Handle an incoming JSON-RPC request from the host.\n *\n * Dispatches to the correct handler based on the method name.\n */\n async function handleHostRequest(request: JsonRpcRequest): Promise<void> {\n const { id, method, params } = request;\n\n try {\n const result = await dispatchMethod(method, params);\n sendMessage(createSuccessResponse(id, result ?? null));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n // Propagate specific error codes from handler errors (e.g.\n // METHOD_NOT_FOUND, METHOD_NOT_IMPLEMENTED) \u2014 fall back to\n // WORKER_ERROR for untyped exceptions.\n const errorCode =\n typeof (err as any)?.code === \"number\"\n ? (err as any).code\n : PLUGIN_RPC_ERROR_CODES.WORKER_ERROR;\n\n sendMessage(createErrorResponse(id, errorCode, errorMessage));\n }\n }\n\n /**\n * Dispatch a host\u2192worker method call to the appropriate handler.\n */\n async function dispatchMethod(method: string, params: unknown): Promise<unknown> {\n switch (method) {\n case \"initialize\":\n return handleInitialize(params as InitializeParams);\n\n case \"health\":\n return handleHealth();\n\n case \"shutdown\":\n return handleShutdown();\n\n case \"validateConfig\":\n return handleValidateConfig(params as ValidateConfigParams);\n\n case \"configChanged\":\n return handleConfigChanged(params as ConfigChangedParams);\n\n case \"onEvent\":\n return handleOnEvent(params as OnEventParams);\n\n case \"runJob\":\n return handleRunJob(params as RunJobParams);\n\n case \"handleWebhook\":\n return handleWebhook(params as PluginWebhookInput);\n\n case \"getData\":\n return handleGetData(params as GetDataParams);\n\n case \"performAction\":\n return handlePerformAction(params as PerformActionParams);\n\n case \"executeTool\":\n return handleExecuteTool(params as ExecuteToolParams);\n\n default:\n throw Object.assign(\n new Error(`Unknown method: ${method}`),\n { code: JSONRPC_ERROR_CODES.METHOD_NOT_FOUND },\n );\n }\n }\n\n // -----------------------------------------------------------------------\n // Host\u2192Worker method handlers\n // -----------------------------------------------------------------------\n\n async function handleInitialize(params: InitializeParams): Promise<InitializeResult> {\n if (initialized) {\n throw new Error(\"Worker already initialized\");\n }\n\n manifest = params.manifest;\n currentConfig = params.config;\n\n // Call the plugin's setup function\n await plugin.definition.setup(ctx);\n\n initialized = true;\n\n // Report which optional methods this plugin implements\n const supportedMethods: string[] = [];\n if (plugin.definition.onValidateConfig) supportedMethods.push(\"validateConfig\");\n if (plugin.definition.onConfigChanged) supportedMethods.push(\"configChanged\");\n if (plugin.definition.onHealth) supportedMethods.push(\"health\");\n if (plugin.definition.onShutdown) supportedMethods.push(\"shutdown\");\n\n return { ok: true, supportedMethods };\n }\n\n async function handleHealth(): Promise<PluginHealthDiagnostics> {\n if (plugin.definition.onHealth) {\n return plugin.definition.onHealth();\n }\n // Default: report OK if the worker is alive\n return { status: \"ok\" };\n }\n\n async function handleShutdown(): Promise<void> {\n if (plugin.definition.onShutdown) {\n await plugin.definition.onShutdown();\n }\n\n // Schedule cleanup after we send the response.\n // Use setImmediate to let the response flush before exiting.\n // Only call process.exit() when running with real process streams.\n // When custom streams are provided (tests), just clean up.\n setImmediate(() => {\n cleanup();\n if (!options.stdin && !options.stdout) {\n process.exit(0);\n }\n });\n }\n\n async function handleValidateConfig(\n params: ValidateConfigParams,\n ): Promise<PluginConfigValidationResult> {\n if (!plugin.definition.onValidateConfig) {\n throw Object.assign(\n new Error(\"validateConfig is not implemented by this plugin\"),\n { code: PLUGIN_RPC_ERROR_CODES.METHOD_NOT_IMPLEMENTED },\n );\n }\n return plugin.definition.onValidateConfig(params.config);\n }\n\n async function handleConfigChanged(params: ConfigChangedParams): Promise<void> {\n if (!plugin.definition.onConfigChanged) {\n throw Object.assign(\n new Error(\"configChanged is not implemented by this plugin\"),\n { code: PLUGIN_RPC_ERROR_CODES.METHOD_NOT_IMPLEMENTED },\n );\n }\n\n currentConfig = params.config;\n await plugin.definition.onConfigChanged(params.config);\n }\n\n async function handleOnEvent(params: OnEventParams): Promise<void> {\n const event = params.event;\n\n for (const registration of eventHandlers) {\n // Check event type match\n const exactMatch = registration.name === event.eventType;\n const wildcardPluginAll =\n registration.name === \"plugin.*\" &&\n event.eventType.startsWith(\"plugin.\");\n const wildcardPluginOne =\n registration.name.endsWith(\".*\") &&\n event.eventType.startsWith(registration.name.slice(0, -1));\n\n if (!exactMatch && !wildcardPluginAll && !wildcardPluginOne) continue;\n\n // Check filter\n if (registration.filter && !allowsEvent(registration.filter, event)) continue;\n\n try {\n await registration.fn(event);\n } catch (err) {\n // Log error but continue processing other handlers so one failing\n // handler doesn't prevent the rest from running.\n notifyHost(\"log\", {\n level: \"error\",\n message: `Event handler for \"${registration.name}\" failed: ${\n err instanceof Error ? err.message : String(err)\n }`,\n meta: { eventType: event.eventType, stack: err instanceof Error ? err.stack : undefined },\n });\n }\n }\n }\n\n async function handleRunJob(params: RunJobParams): Promise<void> {\n const handler = jobHandlers.get(params.job.jobKey);\n if (!handler) {\n throw new Error(`No handler registered for job \"${params.job.jobKey}\"`);\n }\n await handler(params.job);\n }\n\n async function handleWebhook(params: PluginWebhookInput): Promise<void> {\n if (!plugin.definition.onWebhook) {\n throw Object.assign(\n new Error(\"handleWebhook is not implemented by this plugin\"),\n { code: PLUGIN_RPC_ERROR_CODES.METHOD_NOT_IMPLEMENTED },\n );\n }\n await plugin.definition.onWebhook(params);\n }\n\n async function handleGetData(params: GetDataParams): Promise<unknown> {\n const handler = dataHandlers.get(params.key);\n if (!handler) {\n throw new Error(`No data handler registered for key \"${params.key}\"`);\n }\n return handler(\n params.renderEnvironment === undefined\n ? params.params\n : { ...params.params, renderEnvironment: params.renderEnvironment },\n );\n }\n\n async function handlePerformAction(params: PerformActionParams): Promise<unknown> {\n const handler = actionHandlers.get(params.key);\n if (!handler) {\n throw new Error(`No action handler registered for key \"${params.key}\"`);\n }\n return handler(\n params.renderEnvironment === undefined\n ? params.params\n : { ...params.params, renderEnvironment: params.renderEnvironment },\n );\n }\n\n async function handleExecuteTool(params: ExecuteToolParams): Promise<ToolResult> {\n const entry = toolHandlers.get(params.toolName);\n if (!entry) {\n throw new Error(`No tool handler registered for \"${params.toolName}\"`);\n }\n return entry.fn(params.parameters, params.runContext);\n }\n\n // -----------------------------------------------------------------------\n // Event filter helper\n // -----------------------------------------------------------------------\n\n function allowsEvent(filter: EventFilter, event: PluginEvent): boolean {\n const payload = event.payload as Record<string, unknown> | undefined;\n\n if (filter.orgId !== undefined) {\n const orgId = event.orgId ?? String(payload?.orgId ?? \"\");\n if (orgId !== filter.orgId) return false;\n }\n\n if (filter.projectId !== undefined) {\n const projectId = event.entityType === \"project\"\n ? event.entityId\n : String(payload?.projectId ?? \"\");\n if (projectId !== filter.projectId) return false;\n }\n\n if (filter.agentId !== undefined) {\n const agentId = event.entityType === \"agent\"\n ? event.entityId\n : String(payload?.agentId ?? \"\");\n if (agentId !== filter.agentId) return false;\n }\n\n return true;\n }\n\n // -----------------------------------------------------------------------\n // Inbound response handling (host \u2192 worker, response to our outbound call)\n // -----------------------------------------------------------------------\n\n function handleHostResponse(response: JsonRpcResponse): void {\n const id = response.id;\n if (id === null || id === undefined) return;\n\n const pending = pendingRequests.get(id);\n if (!pending) return;\n\n clearTimeout(pending.timer);\n pendingRequests.delete(id);\n pending.resolve(response);\n }\n\n // -----------------------------------------------------------------------\n // Incoming line handler\n // -----------------------------------------------------------------------\n\n function handleLine(line: string): void {\n if (!line.trim()) return;\n\n let message: unknown;\n try {\n message = parseMessage(line);\n } catch (err) {\n if (err instanceof JsonRpcParseError) {\n // Send parse error response\n sendMessage(\n createErrorResponse(\n null,\n JSONRPC_ERROR_CODES.PARSE_ERROR,\n `Parse error: ${err.message}`,\n ),\n );\n }\n return;\n }\n\n if (isJsonRpcResponse(message)) {\n // This is a response to one of our outbound worker\u2192host calls\n handleHostResponse(message);\n } else if (isJsonRpcRequest(message)) {\n // This is a host\u2192worker RPC call \u2014 dispatch it\n handleHostRequest(message as JsonRpcRequest).catch((err) => {\n // Unhandled error in the async handler \u2014 send error response\n const errorMessage = err instanceof Error ? err.message : String(err);\n const errorCode = (err as any)?.code ?? PLUGIN_RPC_ERROR_CODES.WORKER_ERROR;\n try {\n sendMessage(\n createErrorResponse(\n (message as JsonRpcRequest).id,\n typeof errorCode === \"number\" ? errorCode : PLUGIN_RPC_ERROR_CODES.WORKER_ERROR,\n errorMessage,\n ),\n );\n } catch {\n // Cannot send response, stdout may be closed\n }\n });\n } else if (isJsonRpcNotification(message)) {\n // Dispatch host\u2192worker push notifications\n const notif = message as { method: string; params?: unknown };\n if (notif.method === \"agents.sessions.event\" && notif.params) {\n const event = notif.params as AgentSessionEvent;\n const cb = sessionEventCallbacks.get(event.sessionId);\n if (cb) cb(event);\n } else if (notif.method === \"onEvent\" && notif.params) {\n // Plugin event bus notifications \u2014 dispatch to registered event handlers\n handleOnEvent(notif.params as OnEventParams).catch((err) => {\n notifyHost(\"log\", {\n level: \"error\",\n message: `Failed to handle event notification: ${err instanceof Error ? err.message : String(err)}`,\n });\n });\n }\n }\n }\n\n // -----------------------------------------------------------------------\n // Cleanup\n // -----------------------------------------------------------------------\n\n function cleanup(): void {\n running = false;\n\n // Close readline\n if (readline) {\n readline.close();\n readline = null;\n }\n\n // Reject all pending outbound calls\n for (const [id, pending] of pendingRequests) {\n clearTimeout(pending.timer);\n pending.resolve(\n createErrorResponse(\n id,\n PLUGIN_RPC_ERROR_CODES.WORKER_UNAVAILABLE,\n \"Worker RPC host is shutting down\",\n ) as JsonRpcResponse,\n );\n }\n pendingRequests.clear();\n sessionEventCallbacks.clear();\n }\n\n // -----------------------------------------------------------------------\n // Bootstrap: wire up stdin readline\n // -----------------------------------------------------------------------\n\n let readline: ReadlineInterface | null = createInterface({\n input: stdinStream as NodeJS.ReadableStream,\n crlfDelay: Infinity,\n });\n\n readline.on(\"line\", handleLine);\n\n // If stdin closes, we should exit gracefully\n readline.on(\"close\", () => {\n if (running) {\n cleanup();\n if (!options.stdin && !options.stdout) {\n process.exit(0);\n }\n }\n });\n\n // Handle uncaught errors in the worker process.\n // Only install these when using the real process streams (not in tests\n // where the caller provides custom streams).\n if (!options.stdin && !options.stdout) {\n process.on(\"uncaughtException\", (err) => {\n notifyHost(\"log\", {\n level: \"error\",\n message: `Uncaught exception: ${err.message}`,\n meta: { stack: err.stack },\n });\n // Give the notification a moment to flush, then exit\n setTimeout(() => process.exit(1), 100);\n });\n\n process.on(\"unhandledRejection\", (reason) => {\n const message = reason instanceof Error ? reason.message : String(reason);\n const stack = reason instanceof Error ? reason.stack : undefined;\n notifyHost(\"log\", {\n level: \"error\",\n message: `Unhandled rejection: ${message}`,\n meta: { stack },\n });\n });\n }\n\n // -----------------------------------------------------------------------\n // Return the handle\n // -----------------------------------------------------------------------\n\n return {\n get running() {\n return running;\n },\n\n stop() {\n cleanup();\n },\n };\n}\n", "/**\n * JSON-RPC 2.0 message types and protocol helpers for the host \u2194 worker IPC\n * channel.\n *\n * The Rudder plugin runtime uses JSON-RPC 2.0 over stdio to communicate\n * between the host process and each plugin worker process. This module defines:\n *\n * - Core JSON-RPC 2.0 envelope types (request, response, notification, error)\n * - Standard and plugin-specific error codes\n * - Typed method maps for host\u2192worker and worker\u2192host calls\n * - Helper functions for creating well-formed messages\n *\n * @see PLUGIN_SPEC.md \u00A712.1 \u2014 Process Model\n * @see PLUGIN_SPEC.md \u00A713 \u2014 Host-Worker Protocol\n * @see https://www.jsonrpc.org/specification\n */\n\nimport type {\n PaperclipPluginManifestV1,\n PluginLauncherBounds,\n PluginLauncherRenderContextSnapshot,\n PluginLauncherRenderEnvironment,\n PluginStateScopeKind,\n Organization,\n Project,\n Issue,\n IssueComment,\n IssueDocument,\n IssueDocumentSummary,\n Agent,\n Goal,\n} from \"@rudderhq/shared\";\nexport type { PluginLauncherRenderContextSnapshot } from \"@rudderhq/shared\";\n\nimport type {\n PluginEvent,\n PluginJobContext,\n PluginWorkspace,\n ToolRunContext,\n ToolResult,\n} from \"./types.js\";\nimport type {\n PluginHealthDiagnostics,\n PluginConfigValidationResult,\n PluginWebhookInput,\n} from \"./define-plugin.js\";\n\n// ---------------------------------------------------------------------------\n// JSON-RPC 2.0 \u2014 Core Protocol Types\n// ---------------------------------------------------------------------------\n\n/** The JSON-RPC protocol version. Always `\"2.0\"`. */\nexport const JSONRPC_VERSION = \"2.0\" as const;\n\n/**\n * A unique request identifier. JSON-RPC 2.0 allows strings or numbers;\n * we use strings (UUIDs or monotonic counters) for all Rudder messages.\n */\nexport type JsonRpcId = string | number;\n\n/**\n * A JSON-RPC 2.0 request message.\n *\n * The host sends requests to the worker (or vice versa) and expects a\n * matching response with the same `id`.\n */\nexport interface JsonRpcRequest<\n TMethod extends string = string,\n TParams = unknown,\n> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n /** Unique request identifier. Must be echoed in the response. */\n readonly id: JsonRpcId;\n /** The RPC method name to invoke. */\n readonly method: TMethod;\n /** Structured parameters for the method call. */\n readonly params: TParams;\n}\n\n/**\n * A JSON-RPC 2.0 success response.\n */\nexport interface JsonRpcSuccessResponse<TResult = unknown> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n /** Echoed request identifier. */\n readonly id: JsonRpcId;\n /** The method return value. */\n readonly result: TResult;\n readonly error?: never;\n}\n\n/**\n * A JSON-RPC 2.0 error object embedded in an error response.\n */\nexport interface JsonRpcError<TData = unknown> {\n /** Machine-readable error code. */\n readonly code: number;\n /** Human-readable error message. */\n readonly message: string;\n /** Optional structured error data. */\n readonly data?: TData;\n}\n\n/**\n * A JSON-RPC 2.0 error response.\n */\nexport interface JsonRpcErrorResponse<TData = unknown> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n /** Echoed request identifier. */\n readonly id: JsonRpcId | null;\n readonly result?: never;\n /** The error object. */\n readonly error: JsonRpcError<TData>;\n}\n\n/**\n * A JSON-RPC 2.0 response \u2014 either success or error.\n */\nexport type JsonRpcResponse<TResult = unknown, TData = unknown> =\n | JsonRpcSuccessResponse<TResult>\n | JsonRpcErrorResponse<TData>;\n\n/**\n * A JSON-RPC 2.0 notification (a request with no `id`).\n *\n * Notifications are fire-and-forget \u2014 no response is expected.\n */\nexport interface JsonRpcNotification<\n TMethod extends string = string,\n TParams = unknown,\n> {\n readonly jsonrpc: typeof JSONRPC_VERSION;\n readonly id?: never;\n /** The notification method name. */\n readonly method: TMethod;\n /** Structured parameters for the notification. */\n readonly params: TParams;\n}\n\n/**\n * Any well-formed JSON-RPC 2.0 message (request, response, or notification).\n */\nexport type JsonRpcMessage =\n | JsonRpcRequest\n | JsonRpcResponse\n | JsonRpcNotification;\n\n// ---------------------------------------------------------------------------\n// Error Codes\n// ---------------------------------------------------------------------------\n\n/**\n * Standard JSON-RPC 2.0 error codes.\n *\n * @see https://www.jsonrpc.org/specification#error_object\n */\nexport const JSONRPC_ERROR_CODES = {\n /** Invalid JSON was received by the server. */\n PARSE_ERROR: -32700,\n /** The JSON sent is not a valid Request object. */\n INVALID_REQUEST: -32600,\n /** The method does not exist or is not available. */\n METHOD_NOT_FOUND: -32601,\n /** Invalid method parameter(s). */\n INVALID_PARAMS: -32602,\n /** Internal JSON-RPC error. */\n INTERNAL_ERROR: -32603,\n} as const;\n\nexport type JsonRpcErrorCode =\n (typeof JSONRPC_ERROR_CODES)[keyof typeof JSONRPC_ERROR_CODES];\n\n/**\n * Rudder plugin-specific error codes.\n *\n * These live in the JSON-RPC \"server error\" reserved range (-32000 to -32099)\n * as specified by JSON-RPC 2.0 for implementation-defined server errors.\n *\n * @see PLUGIN_SPEC.md \u00A719.7 \u2014 Error Propagation Through The Bridge\n */\nexport const PLUGIN_RPC_ERROR_CODES = {\n /** The worker process is not running or not reachable. */\n WORKER_UNAVAILABLE: -32000,\n /** The plugin does not have the required capability for this operation. */\n CAPABILITY_DENIED: -32001,\n /** The worker reported an unhandled error during method execution. */\n WORKER_ERROR: -32002,\n /** The method call timed out waiting for the worker response. */\n TIMEOUT: -32003,\n /** The worker does not implement the requested optional method. */\n METHOD_NOT_IMPLEMENTED: -32004,\n /** A catch-all for errors that do not fit other categories. */\n UNKNOWN: -32099,\n} as const;\n\nexport type PluginRpcErrorCode =\n (typeof PLUGIN_RPC_ERROR_CODES)[keyof typeof PLUGIN_RPC_ERROR_CODES];\n\n// ---------------------------------------------------------------------------\n// Host \u2192 Worker Method Signatures (\u00A713 Host-Worker Protocol)\n// ---------------------------------------------------------------------------\n\n/**\n * Input for the `initialize` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.1 \u2014 `initialize`\n */\nexport interface InitializeParams {\n /** Full plugin manifest snapshot. */\n manifest: PaperclipPluginManifestV1;\n /** Resolved operator configuration (validated against `instanceConfigSchema`). */\n config: Record<string, unknown>;\n /** Instance-level metadata. */\n instanceInfo: {\n /** UUID of this Rudder instance. */\n instanceId: string;\n /** Semver version of the running Rudder host. */\n hostVersion: string;\n };\n /** Host API version. */\n apiVersion: number;\n}\n\n/**\n * Result returned by the `initialize` RPC method.\n */\nexport interface InitializeResult {\n /** Whether initialization succeeded. */\n ok: boolean;\n /** Optional methods the worker has implemented (e.g. \"validateConfig\", \"onEvent\"). */\n supportedMethods?: string[];\n}\n\n/**\n * Input for the `configChanged` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.4 \u2014 `configChanged`\n */\nexport interface ConfigChangedParams {\n /** The newly resolved configuration. */\n config: Record<string, unknown>;\n}\n\n/**\n * Input for the `validateConfig` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.3 \u2014 `validateConfig`\n */\nexport interface ValidateConfigParams {\n /** The configuration to validate. */\n config: Record<string, unknown>;\n}\n\n/**\n * Input for the `onEvent` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.5 \u2014 `onEvent`\n */\nexport interface OnEventParams {\n /** The domain event to deliver. */\n event: PluginEvent;\n}\n\n/**\n * Input for the `runJob` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.6 \u2014 `runJob`\n */\nexport interface RunJobParams {\n /** Job execution context. */\n job: PluginJobContext;\n}\n\n/**\n * Input for the `getData` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.8 \u2014 `getData`\n */\nexport interface GetDataParams {\n /** Plugin-defined data key (e.g. `\"sync-health\"`). */\n key: string;\n /** Context and query parameters from the UI. */\n params: Record<string, unknown>;\n /** Optional launcher/container metadata from the host render environment. */\n renderEnvironment?: PluginLauncherRenderContextSnapshot | null;\n}\n\n/**\n * Input for the `performAction` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.9 \u2014 `performAction`\n */\nexport interface PerformActionParams {\n /** Plugin-defined action key (e.g. `\"resync\"`). */\n key: string;\n /** Action parameters from the UI. */\n params: Record<string, unknown>;\n /** Optional launcher/container metadata from the host render environment. */\n renderEnvironment?: PluginLauncherRenderContextSnapshot | null;\n}\n\n/**\n * Input for the `executeTool` RPC method.\n *\n * @see PLUGIN_SPEC.md \u00A713.10 \u2014 `executeTool`\n */\nexport interface ExecuteToolParams {\n /** Tool name (without plugin namespace prefix). */\n toolName: string;\n /** Parsed parameters matching the tool's declared schema. */\n parameters: unknown;\n /** Agent run context. */\n runContext: ToolRunContext;\n}\n\n// ---------------------------------------------------------------------------\n// UI launcher / modal host interaction payloads\n// ---------------------------------------------------------------------------\n\n/**\n * Bounds request issued by a plugin UI running inside a host-managed launcher\n * container such as a modal, drawer, or popover.\n */\nexport interface PluginModalBoundsRequest {\n /** High-level size preset requested from the host. */\n bounds: PluginLauncherBounds;\n /** Optional explicit width override in CSS pixels. */\n width?: number;\n /** Optional explicit height override in CSS pixels. */\n height?: number;\n /** Optional lower bounds for host resizing decisions. */\n minWidth?: number;\n minHeight?: number;\n /** Optional upper bounds for host resizing decisions. */\n maxWidth?: number;\n maxHeight?: number;\n}\n\n/**\n * Reason metadata supplied by host-managed close lifecycle callbacks.\n */\nexport interface PluginRenderCloseEvent {\n reason:\n | \"escapeKey\"\n | \"backdrop\"\n | \"hostNavigation\"\n | \"programmatic\"\n | \"submit\"\n | \"unknown\";\n nativeEvent?: unknown;\n}\n\n/**\n * Map of host\u2192worker RPC method names to their `[params, result]` types.\n *\n * This type is the single source of truth for all methods the host can call\n * on a worker. Used by both the host dispatcher and the worker handler to\n * ensure type safety across the IPC boundary.\n */\nexport interface HostToWorkerMethods {\n /** @see PLUGIN_SPEC.md \u00A713.1 */\n initialize: [params: InitializeParams, result: InitializeResult];\n /** @see PLUGIN_SPEC.md \u00A713.2 */\n health: [params: Record<string, never>, result: PluginHealthDiagnostics];\n /** @see PLUGIN_SPEC.md \u00A712.5 */\n shutdown: [params: Record<string, never>, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.3 */\n validateConfig: [params: ValidateConfigParams, result: PluginConfigValidationResult];\n /** @see PLUGIN_SPEC.md \u00A713.4 */\n configChanged: [params: ConfigChangedParams, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.5 */\n onEvent: [params: OnEventParams, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.6 */\n runJob: [params: RunJobParams, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.7 */\n handleWebhook: [params: PluginWebhookInput, result: void];\n /** @see PLUGIN_SPEC.md \u00A713.8 */\n getData: [params: GetDataParams, result: unknown];\n /** @see PLUGIN_SPEC.md \u00A713.9 */\n performAction: [params: PerformActionParams, result: unknown];\n /** @see PLUGIN_SPEC.md \u00A713.10 */\n executeTool: [params: ExecuteToolParams, result: ToolResult];\n}\n\n/** Union of all host\u2192worker method names. */\nexport type HostToWorkerMethodName = keyof HostToWorkerMethods;\n\n/** Required methods the worker MUST implement. */\nexport const HOST_TO_WORKER_REQUIRED_METHODS: readonly HostToWorkerMethodName[] = [\n \"initialize\",\n \"health\",\n \"shutdown\",\n] as const;\n\n/** Optional methods the worker MAY implement. */\nexport const HOST_TO_WORKER_OPTIONAL_METHODS: readonly HostToWorkerMethodName[] = [\n \"validateConfig\",\n \"configChanged\",\n \"onEvent\",\n \"runJob\",\n \"handleWebhook\",\n \"getData\",\n \"performAction\",\n \"executeTool\",\n] as const;\n\n// ---------------------------------------------------------------------------\n// Worker \u2192 Host Method Signatures (SDK client calls)\n// ---------------------------------------------------------------------------\n\n/**\n * Map of worker\u2192host RPC method names to their `[params, result]` types.\n *\n * These represent the SDK client calls that the worker makes back to the\n * host to access platform services (state, entities, config, etc.).\n */\nexport interface WorkerToHostMethods {\n // Config\n \"config.get\": [params: Record<string, never>, result: Record<string, unknown>];\n\n // State\n \"state.get\": [\n params: { scopeKind: string; scopeId?: string; namespace?: string; stateKey: string },\n result: unknown,\n ];\n \"state.set\": [\n params: { scopeKind: string; scopeId?: string; namespace?: string; stateKey: string; value: unknown },\n result: void,\n ];\n \"state.delete\": [\n params: { scopeKind: string; scopeId?: string; namespace?: string; stateKey: string },\n result: void,\n ];\n\n // Entities\n \"entities.upsert\": [\n params: {\n entityType: string;\n scopeKind: PluginStateScopeKind;\n scopeId?: string;\n externalId?: string;\n title?: string;\n status?: string;\n data: Record<string, unknown>;\n },\n result: {\n id: string;\n entityType: string;\n scopeKind: PluginStateScopeKind;\n scopeId: string | null;\n externalId: string | null;\n title: string | null;\n status: string | null;\n data: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n },\n ];\n \"entities.list\": [\n params: {\n entityType?: string;\n scopeKind?: PluginStateScopeKind;\n scopeId?: string;\n externalId?: string;\n limit?: number;\n offset?: number;\n },\n result: Array<{\n id: string;\n entityType: string;\n scopeKind: PluginStateScopeKind;\n scopeId: string | null;\n externalId: string | null;\n title: string | null;\n status: string | null;\n data: Record<string, unknown>;\n createdAt: string;\n updatedAt: string;\n }>,\n ];\n\n // Events\n \"events.emit\": [\n params: { name: string; orgId: string; payload: unknown },\n result: void,\n ];\n \"events.subscribe\": [\n params: { eventPattern: string; filter?: Record<string, unknown> | null },\n result: void,\n ];\n\n // HTTP\n \"http.fetch\": [\n params: { url: string; init?: Record<string, unknown> },\n result: { status: number; statusText: string; headers: Record<string, string>; body: string },\n ];\n\n // Secrets\n \"secrets.resolve\": [\n params: { secretRef: string },\n result: string,\n ];\n\n // Activity\n \"activity.log\": [\n params: {\n orgId: string;\n message: string;\n entityType?: string;\n entityId?: string;\n metadata?: Record<string, unknown>;\n },\n result: void,\n ];\n\n // Metrics\n \"metrics.write\": [\n params: { name: string; value: number; tags?: Record<string, string> },\n result: void,\n ];\n\n // Logger\n \"log\": [\n params: { level: \"info\" | \"warn\" | \"error\" | \"debug\"; message: string; meta?: Record<string, unknown> },\n result: void,\n ];\n\n // Companies (read)\n \"organizations.list\": [\n params: { limit?: number; offset?: number },\n result: Organization[],\n ];\n \"organizations.get\": [\n params: { orgId: string },\n result: Organization | null,\n ];\n\n // Projects (read)\n \"projects.list\": [\n params: { orgId: string; limit?: number; offset?: number },\n result: Project[],\n ];\n \"projects.get\": [\n params: { projectId: string; orgId: string },\n result: Project | null,\n ];\n \"projects.listWorkspaces\": [\n params: { projectId: string; orgId: string },\n result: PluginWorkspace[],\n ];\n \"projects.getPrimaryWorkspace\": [\n params: { projectId: string; orgId: string },\n result: PluginWorkspace | null,\n ];\n \"projects.getWorkspaceForIssue\": [\n params: { issueId: string; orgId: string },\n result: PluginWorkspace | null,\n ];\n\n // Issues\n \"issues.list\": [\n params: {\n orgId: string;\n projectId?: string;\n assigneeAgentId?: string;\n reviewerAgentId?: string;\n reviewerUserId?: string;\n status?: string;\n limit?: number;\n offset?: number;\n },\n result: Issue[],\n ];\n \"issues.get\": [\n params: { issueId: string; orgId: string },\n result: Issue | null,\n ];\n \"issues.create\": [\n params: {\n orgId: string;\n projectId?: string;\n goalId?: string;\n parentId?: string;\n title: string;\n description?: string;\n status?: string;\n priority?: string;\n assigneeAgentId?: string;\n reviewerAgentId?: string;\n reviewerUserId?: string;\n },\n result: Issue,\n ];\n \"issues.update\": [\n params: {\n issueId: string;\n patch: Record<string, unknown>;\n orgId: string;\n },\n result: Issue,\n ];\n \"issues.listComments\": [\n params: { issueId: string; orgId: string },\n result: IssueComment[],\n ];\n \"issues.createComment\": [\n params: { issueId: string; body: string; orgId: string },\n result: IssueComment,\n ];\n\n // Issue Documents\n \"issues.documents.list\": [\n params: { issueId: string; orgId: string },\n result: IssueDocumentSummary[],\n ];\n \"issues.documents.get\": [\n params: { issueId: string; key: string; orgId: string },\n result: IssueDocument | null,\n ];\n \"issues.documents.upsert\": [\n params: {\n issueId: string;\n key: string;\n body: string;\n orgId: string;\n title?: string;\n format?: string;\n changeSummary?: string;\n },\n result: IssueDocument,\n ];\n \"issues.documents.delete\": [\n params: { issueId: string; key: string; orgId: string },\n result: void,\n ];\n\n // Agents (read)\n \"agents.list\": [\n params: { orgId: string; status?: string; limit?: number; offset?: number },\n result: Agent[],\n ];\n \"agents.get\": [\n params: { agentId: string; orgId: string },\n result: Agent | null,\n ];\n\n // Agents (write)\n \"agents.pause\": [\n params: { agentId: string; orgId: string },\n result: Agent,\n ];\n \"agents.resume\": [\n params: { agentId: string; orgId: string },\n result: Agent,\n ];\n \"agents.invoke\": [\n params: { agentId: string; orgId: string; prompt: string; reason?: string },\n result: { runId: string },\n ];\n\n // Agent Sessions\n \"agents.sessions.create\": [\n params: { agentId: string; orgId: string; taskKey?: string; reason?: string },\n result: { sessionId: string; agentId: string; orgId: string; status: \"active\" | \"closed\"; createdAt: string },\n ];\n \"agents.sessions.list\": [\n params: { agentId: string; orgId: string },\n result: Array<{ sessionId: string; agentId: string; orgId: string; status: \"active\" | \"closed\"; createdAt: string }>,\n ];\n \"agents.sessions.sendMessage\": [\n params: { sessionId: string; orgId: string; prompt: string; reason?: string },\n result: { runId: string },\n ];\n \"agents.sessions.close\": [\n params: { sessionId: string; orgId: string },\n result: void,\n ];\n\n // Goals\n \"goals.list\": [\n params: { orgId: string; level?: string; status?: string; limit?: number; offset?: number },\n result: Goal[],\n ];\n \"goals.get\": [\n params: { goalId: string; orgId: string },\n result: Goal | null,\n ];\n \"goals.create\": [\n params: {\n orgId: string;\n title: string;\n description?: string;\n level?: string;\n status?: string;\n parentId?: string;\n ownerAgentId?: string;\n },\n result: Goal,\n ];\n \"goals.update\": [\n params: {\n goalId: string;\n patch: Record<string, unknown>;\n orgId: string;\n },\n result: Goal,\n ];\n}\n\n/** Union of all worker\u2192host method names. */\nexport type WorkerToHostMethodName = keyof WorkerToHostMethods;\n\n// ---------------------------------------------------------------------------\n// Worker\u2192Host Notification Types (fire-and-forget, no response)\n// ---------------------------------------------------------------------------\n\n/**\n * Typed parameter shapes for worker\u2192host JSON-RPC notifications.\n *\n * Notifications are fire-and-forget \u2014 the worker does not wait for a response.\n * These are used for streaming events and logging, not for request-response RPCs.\n */\nexport interface WorkerToHostNotifications {\n /**\n * Forward a stream event to connected SSE clients.\n *\n * Emitted by the worker for each event on a stream channel. The host\n * publishes to the PluginStreamBus, which fans out to all SSE clients\n * subscribed to the (pluginId, channel, orgId) tuple.\n *\n * The `event` payload is JSON-serializable and sent as SSE `data:`.\n * The default SSE event type is `\"message\"`.\n */\n \"streams.emit\": {\n channel: string;\n orgId: string;\n event: unknown;\n };\n\n /**\n * Signal that a stream channel has been opened.\n *\n * Emitted when the worker calls `ctx.streams.open(channel, orgId)`.\n * UI clients may use this to display a \"connected\" indicator or begin\n * buffering input. The host tracks open channels so it can emit synthetic\n * close events if the worker crashes.\n */\n \"streams.open\": {\n channel: string;\n orgId: string;\n };\n\n /**\n * Signal that a stream channel has been closed.\n *\n * Emitted when the worker calls `ctx.streams.close(channel)`, or\n * synthetically by the host when a worker process exits with channels\n * still open. UI clients should treat this as terminal and disconnect\n * the SSE connection.\n */\n \"streams.close\": {\n channel: string;\n orgId: string;\n };\n}\n\n/** Union of all worker\u2192host notification method names. */\nexport type WorkerToHostNotificationName = keyof WorkerToHostNotifications;\n\n// ---------------------------------------------------------------------------\n// Typed Request / Response Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * A typed JSON-RPC request for a specific host\u2192worker method.\n */\nexport type HostToWorkerRequest<M extends HostToWorkerMethodName> =\n JsonRpcRequest<M, HostToWorkerMethods[M][0]>;\n\n/**\n * A typed JSON-RPC success response for a specific host\u2192worker method.\n */\nexport type HostToWorkerResponse<M extends HostToWorkerMethodName> =\n JsonRpcSuccessResponse<HostToWorkerMethods[M][1]>;\n\n/**\n * A typed JSON-RPC request for a specific worker\u2192host method.\n */\nexport type WorkerToHostRequest<M extends WorkerToHostMethodName> =\n JsonRpcRequest<M, WorkerToHostMethods[M][0]>;\n\n/**\n * A typed JSON-RPC success response for a specific worker\u2192host method.\n */\nexport type WorkerToHostResponse<M extends WorkerToHostMethodName> =\n JsonRpcSuccessResponse<WorkerToHostMethods[M][1]>;\n\n// ---------------------------------------------------------------------------\n// Message Factory Functions\n// ---------------------------------------------------------------------------\n\n/** Counter for generating unique request IDs when no explicit ID is provided. */\nlet _nextId = 1;\n\n/** Wrap around before reaching Number.MAX_SAFE_INTEGER to prevent precision loss. */\nconst MAX_SAFE_RPC_ID = Number.MAX_SAFE_INTEGER - 1;\n\n/**\n * Create a JSON-RPC 2.0 request message.\n *\n * @param method - The RPC method name\n * @param params - Structured parameters\n * @param id - Optional explicit request ID (auto-generated if omitted)\n */\nexport function createRequest<TMethod extends string>(\n method: TMethod,\n params: unknown,\n id?: JsonRpcId,\n): JsonRpcRequest<TMethod> {\n if (_nextId >= MAX_SAFE_RPC_ID) {\n _nextId = 1;\n }\n return {\n jsonrpc: JSONRPC_VERSION,\n id: id ?? _nextId++,\n method,\n params,\n };\n}\n\n/**\n * Create a JSON-RPC 2.0 success response.\n *\n * @param id - The request ID being responded to\n * @param result - The result value\n */\nexport function createSuccessResponse<TResult>(\n id: JsonRpcId,\n result: TResult,\n): JsonRpcSuccessResponse<TResult> {\n return {\n jsonrpc: JSONRPC_VERSION,\n id,\n result,\n };\n}\n\n/**\n * Create a JSON-RPC 2.0 error response.\n *\n * @param id - The request ID being responded to (null if the request ID could not be determined)\n * @param code - Machine-readable error code\n * @param message - Human-readable error message\n * @param data - Optional structured error data\n */\nexport function createErrorResponse<TData = unknown>(\n id: JsonRpcId | null,\n code: number,\n message: string,\n data?: TData,\n): JsonRpcErrorResponse<TData> {\n const response: JsonRpcErrorResponse<TData> = {\n jsonrpc: JSONRPC_VERSION,\n id,\n error: data !== undefined\n ? { code, message, data }\n : { code, message } as JsonRpcError<TData>,\n };\n return response;\n}\n\n/**\n * Create a JSON-RPC 2.0 notification (fire-and-forget, no response expected).\n *\n * @param method - The notification method name\n * @param params - Structured parameters\n */\nexport function createNotification<TMethod extends string>(\n method: TMethod,\n params: unknown,\n): JsonRpcNotification<TMethod> {\n return {\n jsonrpc: JSONRPC_VERSION,\n method,\n params,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Type Guards\n// ---------------------------------------------------------------------------\n\n/**\n * Check whether a value is a well-formed JSON-RPC 2.0 request.\n *\n * A request has `jsonrpc: \"2.0\"`, a string `method`, and an `id`.\n */\nexport function isJsonRpcRequest(value: unknown): value is JsonRpcRequest {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n return (\n obj.jsonrpc === JSONRPC_VERSION &&\n typeof obj.method === \"string\" &&\n \"id\" in obj &&\n obj.id !== undefined &&\n obj.id !== null\n );\n}\n\n/**\n * Check whether a value is a well-formed JSON-RPC 2.0 notification.\n *\n * A notification has `jsonrpc: \"2.0\"`, a string `method`, but no `id`.\n */\nexport function isJsonRpcNotification(\n value: unknown,\n): value is JsonRpcNotification {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n return (\n obj.jsonrpc === JSONRPC_VERSION &&\n typeof obj.method === \"string\" &&\n !(\"id\" in obj)\n );\n}\n\n/**\n * Check whether a value is a well-formed JSON-RPC 2.0 response (success or error).\n */\nexport function isJsonRpcResponse(value: unknown): value is JsonRpcResponse {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n return (\n obj.jsonrpc === JSONRPC_VERSION &&\n \"id\" in obj &&\n (\"result\" in obj || \"error\" in obj)\n );\n}\n\n/**\n * Check whether a JSON-RPC response is a success response.\n */\nexport function isJsonRpcSuccessResponse(\n response: JsonRpcResponse,\n): response is JsonRpcSuccessResponse {\n return \"result\" in response && !(\"error\" in response && response.error !== undefined);\n}\n\n/**\n * Check whether a JSON-RPC response is an error response.\n */\nexport function isJsonRpcErrorResponse(\n response: JsonRpcResponse,\n): response is JsonRpcErrorResponse {\n return \"error\" in response && response.error !== undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Serialization Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Line delimiter for JSON-RPC messages over stdio.\n *\n * Each message is a single line of JSON terminated by a newline character.\n * This follows the newline-delimited JSON (NDJSON) convention.\n */\nexport const MESSAGE_DELIMITER = \"\\n\" as const;\n\n/**\n * Serialize a JSON-RPC message to a newline-delimited string for transmission\n * over stdio.\n *\n * @param message - Any JSON-RPC message (request, response, or notification)\n * @returns The JSON string terminated with a newline\n */\nexport function serializeMessage(message: JsonRpcMessage): string {\n return JSON.stringify(message) + MESSAGE_DELIMITER;\n}\n\n/**\n * Parse a JSON string into a JSON-RPC message.\n *\n * Returns the parsed message or throws a `JsonRpcParseError` if the input\n * is not valid JSON or does not conform to the JSON-RPC 2.0 structure.\n *\n * @param line - A single line of JSON text (with or without trailing newline)\n * @returns The parsed JSON-RPC message\n * @throws {JsonRpcParseError} If parsing fails\n */\nexport function parseMessage(line: string): JsonRpcMessage {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n throw new JsonRpcParseError(\"Empty message\");\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n throw new JsonRpcParseError(`Invalid JSON: ${trimmed.slice(0, 200)}`);\n }\n\n if (typeof parsed !== \"object\" || parsed === null) {\n throw new JsonRpcParseError(\"Message must be a JSON object\");\n }\n\n const obj = parsed as Record<string, unknown>;\n\n if (obj.jsonrpc !== JSONRPC_VERSION) {\n throw new JsonRpcParseError(\n `Invalid or missing jsonrpc version (expected \"${JSONRPC_VERSION}\", got ${JSON.stringify(obj.jsonrpc)})`,\n );\n }\n\n // It's a valid JSON-RPC 2.0 envelope \u2014 return as-is and let the caller\n // use the type guards for more specific classification.\n return parsed as JsonRpcMessage;\n}\n\n// ---------------------------------------------------------------------------\n// Error Classes\n// ---------------------------------------------------------------------------\n\n/**\n * Error thrown when a JSON-RPC message cannot be parsed.\n */\nexport class JsonRpcParseError extends Error {\n override readonly name = \"JsonRpcParseError\";\n constructor(message: string) {\n super(message);\n }\n}\n\n/**\n * Error thrown when a JSON-RPC call fails with a structured error response.\n *\n * Captures the full `JsonRpcError` so callers can inspect the code and data.\n */\nexport class JsonRpcCallError extends Error {\n override readonly name = \"JsonRpcCallError\";\n /** The JSON-RPC error code. */\n readonly code: number;\n /** Optional structured error data from the response. */\n readonly data: unknown;\n\n constructor(error: JsonRpcError) {\n super(error.message);\n this.code = error.code;\n this.data = error.data;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Reset helper (testing only)\n// ---------------------------------------------------------------------------\n\n/**\n * Reset the internal request ID counter. **For testing only.**\n *\n * @internal\n */\nexport function _resetIdCounter(): void {\n _nextId = 1;\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "export const ORGANIZATION_STATUSES = [\"active\", \"paused\", \"archived\"] as const;\nexport type OrganizationStatus = (typeof ORGANIZATION_STATUSES)[number];\n\nexport const ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES = [\"lightweight\", \"reasoning\"] as const;\nexport type OrganizationIntelligenceProfilePurpose = (typeof ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES)[number];\n\nexport const ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES = [\"configured\", \"disabled\", \"invalid\"] as const;\nexport type OrganizationIntelligenceProfileStatus = (typeof ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES)[number];\n\nexport const DEPLOYMENT_MODES = [\"local_trusted\", \"authenticated\"] as const;\nexport type DeploymentMode = (typeof DEPLOYMENT_MODES)[number];\n\nexport const DEPLOYMENT_EXPOSURES = [\"private\", \"public\"] as const;\nexport type DeploymentExposure = (typeof DEPLOYMENT_EXPOSURES)[number];\n\nexport const AUTH_BASE_URL_MODES = [\"auto\", \"explicit\"] as const;\nexport type AuthBaseUrlMode = (typeof AUTH_BASE_URL_MODES)[number];\n\nexport const AGENT_STATUSES = [\n \"active\",\n \"paused\",\n \"idle\",\n \"running\",\n \"error\",\n \"pending_approval\",\n \"terminated\",\n] as const;\nexport type AgentStatus = (typeof AGENT_STATUSES)[number];\n\nexport const AGENT_RUN_CONCURRENCY_DEFAULT = 3;\nexport const AGENT_RUN_CONCURRENCY_MIN = 1;\nexport const AGENT_RUN_CONCURRENCY_MAX = 10;\n\nexport const AGENT_RUNTIME_TYPES = [\n \"process\",\n \"http\",\n \"claude_local\",\n \"codex_local\",\n \"gemini_local\",\n \"opencode_local\",\n \"pi_local\",\n \"cursor\",\n \"openclaw_gateway\",\n \"hermes_local\",\n] as const;\nexport type AgentRuntimeType = (typeof AGENT_RUNTIME_TYPES)[number];\n\nexport const AGENT_ROLES = [\n \"ceo\",\n \"cto\",\n \"cmo\",\n \"cfo\",\n \"engineer\",\n \"designer\",\n \"pm\",\n \"qa\",\n \"devops\",\n \"researcher\",\n \"general\",\n] as const;\nexport type AgentRole = (typeof AGENT_ROLES)[number];\n\nexport const AGENT_ROLE_LABELS: Record<AgentRole, string> = {\n ceo: \"CEO\",\n cto: \"CTO\",\n cmo: \"CMO\",\n cfo: \"CFO\",\n engineer: \"Engineer\",\n designer: \"Designer\",\n pm: \"PM\",\n qa: \"QA\",\n devops: \"DevOps\",\n researcher: \"Researcher\",\n general: \"General\",\n};\n\nexport const AGENT_ICON_NAMES = [\n \"bot\",\n \"cpu\",\n \"brain\",\n \"zap\",\n \"rocket\",\n \"code\",\n \"terminal\",\n \"shield\",\n \"eye\",\n \"search\",\n \"wrench\",\n \"hammer\",\n \"lightbulb\",\n \"sparkles\",\n \"star\",\n \"heart\",\n \"flame\",\n \"bug\",\n \"cog\",\n \"database\",\n \"globe\",\n \"lock\",\n \"mail\",\n \"message-square\",\n \"file-code\",\n \"git-branch\",\n \"package\",\n \"puzzle\",\n \"target\",\n \"wand\",\n \"atom\",\n \"circuit-board\",\n \"radar\",\n \"swords\",\n \"telescope\",\n \"microscope\",\n \"crown\",\n \"gem\",\n \"hexagon\",\n \"pentagon\",\n \"fingerprint\",\n] as const;\nexport type AgentIconName = (typeof AGENT_ICON_NAMES)[number];\n\nexport const AGENT_DICEBEAR_NOTIONISTS_ICON_PREFIX = \"dicebear:notionists:\" as const;\n\nexport const AGENT_AVATAR_BACKGROUND_PRESET_IDS = [\n \"mist\",\n \"slate\",\n \"sky\",\n \"mint\",\n \"peach\",\n \"violet\",\n] as const;\nexport type AgentAvatarBackgroundPresetId = (typeof AGENT_AVATAR_BACKGROUND_PRESET_IDS)[number];\n\nexport const ISSUE_STATUSES = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n] as const;\nexport type IssueStatus = (typeof ISSUE_STATUSES)[number];\n\nexport const ISSUE_PRIORITIES = [\"critical\", \"high\", \"medium\", \"low\"] as const;\nexport type IssuePriority = (typeof ISSUE_PRIORITIES)[number];\n\nexport const ISSUE_ORIGIN_KINDS = [\"manual\", \"automation_execution\"] as const;\nexport type IssueOriginKind = (typeof ISSUE_ORIGIN_KINDS)[number];\n\nexport const CALENDAR_SOURCE_TYPES = [\"rudder_local\", \"google_calendar\", \"agent_work\", \"system\"] as const;\nexport type CalendarSourceType = (typeof CALENDAR_SOURCE_TYPES)[number];\n\nexport const CALENDAR_OWNER_TYPES = [\"user\", \"agent\", \"system\"] as const;\nexport type CalendarOwnerType = (typeof CALENDAR_OWNER_TYPES)[number];\n\nexport const CALENDAR_VISIBILITIES = [\"full\", \"busy_only\", \"private\"] as const;\nexport type CalendarVisibility = (typeof CALENDAR_VISIBILITIES)[number];\n\nexport const CALENDAR_SOURCE_STATUSES = [\"active\", \"paused\", \"disconnected\", \"error\"] as const;\nexport type CalendarSourceStatus = (typeof CALENDAR_SOURCE_STATUSES)[number];\n\nexport const CALENDAR_EVENT_KINDS = [\"human_event\", \"agent_work_block\", \"external_event\", \"system_event\"] as const;\nexport type CalendarEventKind = (typeof CALENDAR_EVENT_KINDS)[number];\n\nexport const CALENDAR_EVENT_STATUSES = [\"planned\", \"in_progress\", \"actual\", \"cancelled\", \"external\", \"projected\"] as const;\nexport type CalendarEventStatus = (typeof CALENDAR_EVENT_STATUSES)[number];\n\nexport const CALENDAR_SOURCE_MODES = [\"manual\", \"derived\", \"imported\"] as const;\nexport type CalendarSourceMode = (typeof CALENDAR_SOURCE_MODES)[number];\n\nexport const CHAT_CONVERSATION_STATUSES = [\"active\", \"resolved\", \"archived\"] as const;\nexport type ChatConversationStatus = (typeof CHAT_CONVERSATION_STATUSES)[number];\n\nexport const CHAT_ISSUE_CREATION_MODES = [\"manual_approval\", \"auto_create\"] as const;\nexport type ChatIssueCreationMode = (typeof CHAT_ISSUE_CREATION_MODES)[number];\n\nexport const CHAT_MESSAGE_ROLES = [\"user\", \"assistant\", \"system\"] as const;\nexport type ChatMessageRole = (typeof CHAT_MESSAGE_ROLES)[number];\n\nexport const CHAT_MESSAGE_KINDS = [\n \"message\",\n \"ask_user\",\n \"issue_proposal\",\n \"operation_proposal\",\n \"system_event\",\n] as const;\nexport type ChatMessageKind = (typeof CHAT_MESSAGE_KINDS)[number];\n\nexport const CHAT_MESSAGE_STATUSES = [\"streaming\", \"completed\", \"stopped\", \"failed\", \"interrupted\"] as const;\nexport type ChatMessageStatus = (typeof CHAT_MESSAGE_STATUSES)[number];\n\nexport const CHAT_CONTEXT_ENTITY_TYPES = [\"issue\", \"project\", \"agent\"] as const;\nexport type ChatContextEntityType = (typeof CHAT_CONTEXT_ENTITY_TYPES)[number];\n\nexport const MESSENGER_THREAD_KINDS = [\n \"chat\",\n \"issues\",\n \"approvals\",\n \"failed-runs\",\n \"budget-alerts\",\n \"join-requests\",\n] as const;\nexport type MessengerThreadKind = (typeof MESSENGER_THREAD_KINDS)[number];\n\nexport const MESSENGER_SYSTEM_THREAD_KINDS = [\n \"failed-runs\",\n \"budget-alerts\",\n \"join-requests\",\n] as const;\nexport type MessengerSystemThreadKind = (typeof MESSENGER_SYSTEM_THREAD_KINDS)[number];\n\nexport const GOAL_LEVELS = [\"organization\", \"team\", \"agent\", \"task\"] as const;\nexport type GoalLevel = (typeof GOAL_LEVELS)[number];\n\nexport const GOAL_STATUSES = [\"planned\", \"active\", \"achieved\", \"cancelled\"] as const;\nexport type GoalStatus = (typeof GOAL_STATUSES)[number];\n\nexport const PROJECT_STATUSES = [\n \"backlog\",\n \"planned\",\n \"in_progress\",\n \"completed\",\n \"cancelled\",\n] as const;\nexport type ProjectStatus = (typeof PROJECT_STATUSES)[number];\n\nexport const ORGANIZATION_RESOURCE_KINDS = [\n \"file\",\n \"directory\",\n \"url\",\n \"connector_object\",\n] as const;\nexport type OrganizationResourceKind = (typeof ORGANIZATION_RESOURCE_KINDS)[number];\n\nexport const PROJECT_RESOURCE_ATTACHMENT_ROLES = [\n \"working_set\",\n \"reference\",\n \"tracking\",\n \"deliverable\",\n \"background\",\n] as const;\nexport type ProjectResourceAttachmentRole = (typeof PROJECT_RESOURCE_ATTACHMENT_ROLES)[number];\n\nexport const AUTOMATION_STATUSES = [\"active\", \"paused\"] as const;\nexport type AutomationStatus = (typeof AUTOMATION_STATUSES)[number];\n\nexport const AUTOMATION_CONCURRENCY_POLICIES = [\"coalesce_if_active\", \"always_enqueue\", \"skip_if_active\"] as const;\nexport type AutomationConcurrencyPolicy = (typeof AUTOMATION_CONCURRENCY_POLICIES)[number];\n\nexport const AUTOMATION_CATCH_UP_POLICIES = [\"skip_missed\", \"enqueue_missed_with_cap\"] as const;\nexport type AutomationCatchUpPolicy = (typeof AUTOMATION_CATCH_UP_POLICIES)[number];\n\nexport const AUTOMATION_OUTPUT_MODES = [\"track_issue\", \"chat_output\"] as const;\nexport type AutomationOutputMode = (typeof AUTOMATION_OUTPUT_MODES)[number];\n\nexport const AUTOMATION_TRIGGER_KINDS = [\"schedule\", \"webhook\", \"api\"] as const;\nexport type AutomationTriggerKind = (typeof AUTOMATION_TRIGGER_KINDS)[number];\n\nexport const AUTOMATION_TRIGGER_SIGNING_MODES = [\"bearer\", \"hmac_sha256\"] as const;\nexport type AutomationTriggerSigningMode = (typeof AUTOMATION_TRIGGER_SIGNING_MODES)[number];\n\nexport const AUTOMATION_RUN_STATUSES = [\n \"received\",\n \"coalesced\",\n \"skipped\",\n \"issue_created\",\n \"completed\",\n \"failed\",\n ] as const;\nexport type AutomationRunStatus = (typeof AUTOMATION_RUN_STATUSES)[number];\n\nexport const AUTOMATION_RUN_SOURCES = [\"schedule\", \"manual\", \"api\", \"webhook\"] as const;\nexport type AutomationRunSource = (typeof AUTOMATION_RUN_SOURCES)[number];\n\nexport const PAUSE_REASONS = [\"manual\", \"budget\", \"system\"] as const;\nexport type PauseReason = (typeof PAUSE_REASONS)[number];\n\nexport const PROJECT_COLORS = [\n \"linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)\",\n \"linear-gradient(135deg, #7c3aed 0%, #d946ef 100%)\",\n \"linear-gradient(135deg, #db2777 0%, #f97316 100%)\",\n \"linear-gradient(135deg, #ef4444 0%, #f59e0b 100%)\",\n \"linear-gradient(135deg, #f97316 0%, #facc15 100%)\",\n \"linear-gradient(135deg, #10b981 0%, #84cc16 100%)\",\n \"linear-gradient(135deg, #059669 0%, #14b8a6 100%)\",\n \"linear-gradient(135deg, #0d9488 0%, #06b6d4 100%)\",\n \"linear-gradient(135deg, #0284c7 0%, #2563eb 100%)\",\n \"linear-gradient(135deg, #2563eb 0%, #4f46e5 100%)\",\n \"linear-gradient(135deg, #f43f5e 0%, #ec4899 100%)\",\n \"linear-gradient(135deg, #be123c 0%, #7c2d12 100%)\",\n \"linear-gradient(135deg, #a16207 0%, #ca8a04 100%)\",\n \"linear-gradient(135deg, #16a34a 0%, #0f766e 100%)\",\n \"linear-gradient(135deg, #0891b2 0%, #4338ca 100%)\",\n \"linear-gradient(135deg, #6d28d9 0%, #be185d 100%)\",\n \"linear-gradient(135deg, #475569 0%, #0f766e 100%)\",\n \"linear-gradient(135deg, #334155 0%, #7c3aed 100%)\",\n] as const;\n\nexport const APPROVAL_TYPES = [\n \"hire_agent\",\n \"approve_ceo_strategy\",\n \"budget_override_required\",\n \"chat_issue_creation\",\n \"chat_operation\",\n] as const;\nexport type ApprovalType = (typeof APPROVAL_TYPES)[number];\n\nexport const APPROVAL_STATUSES = [\n \"pending\",\n \"revision_requested\",\n \"approved\",\n \"rejected\",\n \"cancelled\",\n] as const;\nexport type ApprovalStatus = (typeof APPROVAL_STATUSES)[number];\n\nexport const SECRET_PROVIDERS = [\n \"local_encrypted\",\n \"aws_secrets_manager\",\n \"gcp_secret_manager\",\n \"vault\",\n] as const;\nexport type SecretProvider = (typeof SECRET_PROVIDERS)[number];\n\nexport const STORAGE_PROVIDERS = [\"local_disk\", \"s3\"] as const;\nexport type StorageProvider = (typeof STORAGE_PROVIDERS)[number];\n\nexport const BILLING_TYPES = [\n \"metered_api\",\n \"subscription_included\",\n \"subscription_overage\",\n \"credits\",\n \"fixed\",\n \"unknown\",\n] as const;\nexport type BillingType = (typeof BILLING_TYPES)[number];\n\nexport const FINANCE_EVENT_KINDS = [\n \"inference_charge\",\n \"platform_fee\",\n \"credit_purchase\",\n \"credit_refund\",\n \"credit_expiry\",\n \"byok_fee\",\n \"gateway_overhead\",\n \"log_storage_charge\",\n \"logpush_charge\",\n \"provisioned_capacity_charge\",\n \"training_charge\",\n \"custom_model_import_charge\",\n \"custom_model_storage_charge\",\n \"manual_adjustment\",\n] as const;\nexport type FinanceEventKind = (typeof FINANCE_EVENT_KINDS)[number];\n\nexport const FINANCE_DIRECTIONS = [\"debit\", \"credit\"] as const;\nexport type FinanceDirection = (typeof FINANCE_DIRECTIONS)[number];\n\nexport const FINANCE_UNITS = [\n \"input_token\",\n \"output_token\",\n \"cached_input_token\",\n \"request\",\n \"credit_usd\",\n \"credit_unit\",\n \"model_unit_minute\",\n \"model_unit_hour\",\n \"gb_month\",\n \"train_token\",\n \"unknown\",\n] as const;\nexport type FinanceUnit = (typeof FINANCE_UNITS)[number];\n\nexport const BUDGET_SCOPE_TYPES = [\"organization\", \"agent\", \"project\"] as const;\nexport type BudgetScopeType = (typeof BUDGET_SCOPE_TYPES)[number];\n\nexport const BUDGET_METRICS = [\"billed_cents\"] as const;\nexport type BudgetMetric = (typeof BUDGET_METRICS)[number];\n\nexport const BUDGET_WINDOW_KINDS = [\"calendar_month_utc\", \"lifetime\"] as const;\nexport type BudgetWindowKind = (typeof BUDGET_WINDOW_KINDS)[number];\n\nexport const BUDGET_THRESHOLD_TYPES = [\"soft\", \"hard\"] as const;\nexport type BudgetThresholdType = (typeof BUDGET_THRESHOLD_TYPES)[number];\n\nexport const BUDGET_INCIDENT_STATUSES = [\"open\", \"resolved\", \"dismissed\"] as const;\nexport type BudgetIncidentStatus = (typeof BUDGET_INCIDENT_STATUSES)[number];\n\nexport const BUDGET_INCIDENT_RESOLUTION_ACTIONS = [\n \"keep_paused\",\n \"raise_budget_and_resume\",\n] as const;\nexport type BudgetIncidentResolutionAction = (typeof BUDGET_INCIDENT_RESOLUTION_ACTIONS)[number];\n\nexport const HEARTBEAT_INVOCATION_SOURCES = [\n \"timer\",\n \"assignment\",\n \"review\",\n \"on_demand\",\n \"automation\",\n] as const;\nexport type HeartbeatInvocationSource = (typeof HEARTBEAT_INVOCATION_SOURCES)[number];\n\nexport const WAKEUP_TRIGGER_DETAILS = [\"manual\", \"ping\", \"callback\", \"system\"] as const;\nexport type WakeupTriggerDetail = (typeof WAKEUP_TRIGGER_DETAILS)[number];\n\nexport const WAKEUP_REQUEST_STATUSES = [\n \"queued\",\n \"deferred_issue_execution\",\n \"deferred_agent_paused\",\n \"claimed\",\n \"coalesced\",\n \"skipped\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type WakeupRequestStatus = (typeof WAKEUP_REQUEST_STATUSES)[number];\n\nexport const HEARTBEAT_RUN_STATUSES = [\n \"queued\",\n \"running\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n \"timed_out\",\n] as const;\nexport type HeartbeatRunStatus = (typeof HEARTBEAT_RUN_STATUSES)[number];\n\nexport const LIVE_EVENT_TYPES = [\n \"heartbeat.run.queued\",\n \"heartbeat.run.status\",\n \"heartbeat.run.event\",\n \"heartbeat.run.log\",\n \"agent.status\",\n \"activity.logged\",\n \"plugin.ui.updated\",\n \"plugin.worker.crashed\",\n \"plugin.worker.restarted\",\n] as const;\nexport type LiveEventType = (typeof LIVE_EVENT_TYPES)[number];\n\nexport const PRINCIPAL_TYPES = [\"user\", \"agent\"] as const;\nexport type PrincipalType = (typeof PRINCIPAL_TYPES)[number];\n\nexport const MEMBERSHIP_STATUSES = [\"pending\", \"active\", \"suspended\"] as const;\nexport type MembershipStatus = (typeof MEMBERSHIP_STATUSES)[number];\n\nexport const INSTANCE_USER_ROLES = [\"instance_admin\"] as const;\nexport type InstanceUserRole = (typeof INSTANCE_USER_ROLES)[number];\n\nexport const INVITE_TYPES = [\"company_join\", \"bootstrap_ceo\"] as const;\nexport type InviteType = (typeof INVITE_TYPES)[number];\n\nexport const INVITE_JOIN_TYPES = [\"human\", \"agent\", \"both\"] as const;\nexport type InviteJoinType = (typeof INVITE_JOIN_TYPES)[number];\n\nexport const JOIN_REQUEST_TYPES = [\"human\", \"agent\"] as const;\nexport type JoinRequestType = (typeof JOIN_REQUEST_TYPES)[number];\n\nexport const JOIN_REQUEST_STATUSES = [\"pending_approval\", \"approved\", \"rejected\"] as const;\nexport type JoinRequestStatus = (typeof JOIN_REQUEST_STATUSES)[number];\n\nexport const PERMISSION_KEYS = [\n \"agents:create\",\n \"users:invite\",\n \"users:manage_permissions\",\n \"tasks:assign\",\n \"tasks:assign_scope\",\n \"joins:approve\",\n] as const;\nexport type PermissionKey = (typeof PERMISSION_KEYS)[number];\n\n// ---------------------------------------------------------------------------\n// Plugin System \u2014 see doc/plugins/PLUGIN_SPEC.md for the full specification\n// ---------------------------------------------------------------------------\n\n/**\n * The current version of the Plugin API contract.\n *\n * Increment this value whenever a breaking change is made to the plugin API\n * so that the host can reject incompatible plugin manifests.\n *\n * @see PLUGIN_SPEC.md \u00A74 \u2014 Versioning\n */\nexport const PLUGIN_API_VERSION = 1 as const;\n\n/**\n * Lifecycle statuses for an installed plugin.\n *\n * State machine: installed \u2192 ready | error, ready \u2192 disabled | error | upgrade_pending | uninstalled,\n * disabled \u2192 ready | uninstalled, error \u2192 ready | uninstalled,\n * upgrade_pending \u2192 ready | error | uninstalled, uninstalled \u2192 installed (reinstall).\n *\n * @see {@link PluginStatus} \u2014 inferred union type\n * @see PLUGIN_SPEC.md \u00A721.3 `plugins.status`\n */\nexport const PLUGIN_STATUSES = [\n \"installed\",\n \"ready\",\n \"disabled\",\n \"error\",\n \"upgrade_pending\",\n \"uninstalled\",\n] as const;\nexport type PluginStatus = (typeof PLUGIN_STATUSES)[number];\n\n/**\n * Plugin classification categories. A plugin declares one or more categories\n * in its manifest to describe its primary purpose.\n *\n * @see PLUGIN_SPEC.md \u00A76.2\n */\nexport const PLUGIN_CATEGORIES = [\n \"connector\",\n \"workspace\",\n \"automation\",\n \"ui\",\n] as const;\nexport type PluginCategory = (typeof PLUGIN_CATEGORIES)[number];\n\n/**\n * Named permissions the host grants to a plugin. Plugins declare required\n * capabilities in their manifest; the host enforces them at runtime via the\n * plugin capability validator.\n *\n * Grouped into: Data Read, Data Write, Plugin State, Runtime/Integration,\n * Agent Tools, and UI.\n *\n * @see PLUGIN_SPEC.md \u00A715 \u2014 Capability Model\n */\nexport const PLUGIN_CAPABILITIES = [\n // Data Read\n \"organizations.read\",\n \"projects.read\",\n \"project.workspaces.read\",\n \"issues.read\",\n \"issue.comments.read\",\n \"issue.documents.read\",\n \"agents.read\",\n \"goals.read\",\n \"goals.create\",\n \"goals.update\",\n \"activity.read\",\n \"costs.read\",\n // Data Write\n \"issues.create\",\n \"issues.update\",\n \"issue.comments.create\",\n \"issue.documents.write\",\n \"agents.pause\",\n \"agents.resume\",\n \"agents.invoke\",\n \"agent.sessions.create\",\n \"agent.sessions.list\",\n \"agent.sessions.send\",\n \"agent.sessions.close\",\n \"activity.log.write\",\n \"metrics.write\",\n // Plugin State\n \"plugin.state.read\",\n \"plugin.state.write\",\n // Runtime / Integration\n \"events.subscribe\",\n \"events.emit\",\n \"jobs.schedule\",\n \"webhooks.receive\",\n \"http.outbound\",\n \"secrets.read-ref\",\n // Agent Tools\n \"agent.tools.register\",\n // UI\n \"instance.settings.register\",\n \"ui.sidebar.register\",\n \"ui.page.register\",\n \"ui.detailTab.register\",\n \"ui.dashboardWidget.register\",\n \"ui.commentAnnotation.register\",\n \"ui.action.register\",\n] as const;\nexport type PluginCapability = (typeof PLUGIN_CAPABILITIES)[number];\n\n/**\n * UI extension slot types. Each slot type corresponds to a mount point in the\n * Rudder UI where plugin components can be rendered.\n *\n * @see PLUGIN_SPEC.md \u00A719 \u2014 UI Extension Model\n */\nexport const PLUGIN_UI_SLOT_TYPES = [\n \"page\",\n \"detailTab\",\n \"taskDetailView\",\n \"dashboardWidget\",\n \"sidebar\",\n \"sidebarPanel\",\n \"projectSidebarItem\",\n \"globalToolbarButton\",\n \"toolbarButton\",\n \"contextMenuItem\",\n \"commentAnnotation\",\n \"commentContextMenuItem\",\n \"settingsPage\",\n] as const;\nexport type PluginUiSlotType = (typeof PLUGIN_UI_SLOT_TYPES)[number];\n\n/**\n * Reserved organization-scoped route segments that plugin page routes may not claim.\n *\n * These map to first-class host pages under `/:organizationPrefix/...`.\n */\nexport const PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS = [\n \"dashboard\",\n \"onboarding\",\n \"organizations\",\n \"organization\",\n \"settings\",\n \"plugins\",\n \"org\",\n \"agents\",\n \"projects\",\n \"issues\",\n \"goals\",\n \"approvals\",\n \"costs\",\n \"activity\",\n \"inbox\",\n \"design-guide\",\n \"tests\",\n] as const;\nexport type PluginReservedCompanyRouteSegment =\n (typeof PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS)[number];\n\n/**\n * Launcher placement zones describe where a plugin-owned launcher can appear\n * in the host UI. These are intentionally aligned with current slot surfaces\n * so manifest authors can describe launch intent without coupling to a single\n * component implementation detail.\n */\nexport const PLUGIN_LAUNCHER_PLACEMENT_ZONES = [\n \"page\",\n \"detailTab\",\n \"taskDetailView\",\n \"dashboardWidget\",\n \"sidebar\",\n \"sidebarPanel\",\n \"projectSidebarItem\",\n \"globalToolbarButton\",\n \"toolbarButton\",\n \"contextMenuItem\",\n \"commentAnnotation\",\n \"commentContextMenuItem\",\n \"settingsPage\",\n] as const;\nexport type PluginLauncherPlacementZone = (typeof PLUGIN_LAUNCHER_PLACEMENT_ZONES)[number];\n\n/**\n * Launcher action kinds describe what the launcher does when activated.\n */\nexport const PLUGIN_LAUNCHER_ACTIONS = [\n \"navigate\",\n \"openModal\",\n \"openDrawer\",\n \"openPopover\",\n \"performAction\",\n \"deepLink\",\n] as const;\nexport type PluginLauncherAction = (typeof PLUGIN_LAUNCHER_ACTIONS)[number];\n\n/**\n * Optional size hints the host can use when rendering plugin-owned launcher\n * destinations such as overlays, drawers, or full page handoffs.\n */\nexport const PLUGIN_LAUNCHER_BOUNDS = [\n \"inline\",\n \"compact\",\n \"default\",\n \"wide\",\n \"full\",\n] as const;\nexport type PluginLauncherBounds = (typeof PLUGIN_LAUNCHER_BOUNDS)[number];\n\n/**\n * Render environments describe the container a launcher expects after it is\n * activated. The current host may map these to concrete UI primitives.\n */\nexport const PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS = [\n \"hostInline\",\n \"hostOverlay\",\n \"hostRoute\",\n \"external\",\n \"iframe\",\n] as const;\nexport type PluginLauncherRenderEnvironment =\n (typeof PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS)[number];\n\n/**\n * Entity types that a `detailTab` UI slot can attach to.\n *\n * @see PLUGIN_SPEC.md \u00A719.3 \u2014 Detail Tabs\n */\nexport const PLUGIN_UI_SLOT_ENTITY_TYPES = [\n \"project\",\n \"issue\",\n \"agent\",\n \"goal\",\n \"run\",\n \"comment\",\n] as const;\nexport type PluginUiSlotEntityType = (typeof PLUGIN_UI_SLOT_ENTITY_TYPES)[number];\n\n/**\n * Scope kinds for plugin state storage. Determines the granularity at which\n * a plugin stores key-value state data.\n *\n * @see PLUGIN_SPEC.md \u00A721.3 `plugin_state.scope_kind`\n */\nexport const PLUGIN_STATE_SCOPE_KINDS = [\n \"instance\",\n \"organization\",\n \"project\",\n \"project_workspace\",\n \"agent\",\n \"issue\",\n \"goal\",\n \"run\",\n] as const;\nexport type PluginStateScopeKind = (typeof PLUGIN_STATE_SCOPE_KINDS)[number];\n\n/** Statuses for a plugin's scheduled job definition. */\nexport const PLUGIN_JOB_STATUSES = [\n \"active\",\n \"paused\",\n \"failed\",\n] as const;\nexport type PluginJobStatus = (typeof PLUGIN_JOB_STATUSES)[number];\n\n/** Statuses for individual job run executions. */\nexport const PLUGIN_JOB_RUN_STATUSES = [\n \"pending\",\n \"queued\",\n \"running\",\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type PluginJobRunStatus = (typeof PLUGIN_JOB_RUN_STATUSES)[number];\n\n/** What triggered a particular job run. */\nexport const PLUGIN_JOB_RUN_TRIGGERS = [\n \"schedule\",\n \"manual\",\n \"retry\",\n] as const;\nexport type PluginJobRunTrigger = (typeof PLUGIN_JOB_RUN_TRIGGERS)[number];\n\n/** Statuses for inbound webhook deliveries. */\nexport const PLUGIN_WEBHOOK_DELIVERY_STATUSES = [\n \"pending\",\n \"success\",\n \"failed\",\n] as const;\nexport type PluginWebhookDeliveryStatus = (typeof PLUGIN_WEBHOOK_DELIVERY_STATUSES)[number];\n\n/**\n * Core domain event types that plugins can subscribe to via the\n * `events.subscribe` capability.\n *\n * @see PLUGIN_SPEC.md \u00A716 \u2014 Event System\n */\nexport const PLUGIN_EVENT_TYPES = [\n \"organization.created\",\n \"organization.updated\",\n \"project.created\",\n \"project.updated\",\n \"project.workspace_created\",\n \"project.workspace_updated\",\n \"project.workspace_deleted\",\n \"issue.created\",\n \"issue.updated\",\n \"issue.comment.created\",\n \"agent.created\",\n \"agent.updated\",\n \"agent.status_changed\",\n \"agent.run.started\",\n \"agent.run.finished\",\n \"agent.run.failed\",\n \"agent.run.cancelled\",\n \"goal.created\",\n \"goal.updated\",\n \"approval.created\",\n \"approval.decided\",\n \"cost_event.created\",\n \"activity.logged\",\n] as const;\nexport type PluginEventType = (typeof PLUGIN_EVENT_TYPES)[number];\n\n/**\n * Error codes returned by the plugin bridge when a UI \u2192 worker call fails.\n *\n * @see PLUGIN_SPEC.md \u00A719.7 \u2014 Error Propagation Through The Bridge\n */\nexport const PLUGIN_BRIDGE_ERROR_CODES = [\n \"WORKER_UNAVAILABLE\",\n \"CAPABILITY_DENIED\",\n \"WORKER_ERROR\",\n \"TIMEOUT\",\n \"UNKNOWN\",\n] as const;\nexport type PluginBridgeErrorCode = (typeof PLUGIN_BRIDGE_ERROR_CODES)[number];\n", "import { z } from \"zod\";\n\nexport const instanceLocaleSchema = z.enum([\"en\", \"zh-CN\"]);\n\nexport const instanceGeneralSettingsSchema = z.object({\n censorUsernameInLogs: z.boolean().default(false),\n showDeveloperDiagnostics: z.boolean().default(false),\n locale: instanceLocaleSchema.default(\"en\"),\n}).strict();\n\nexport const patchInstanceGeneralSettingsSchema = instanceGeneralSettingsSchema.partial();\n\nexport const instanceNotificationSettingsSchema = z.object({\n desktopInboxNotifications: z.boolean().default(true),\n desktopDockBadge: z.boolean().default(true),\n desktopIssueNotifications: z.boolean().default(true),\n desktopChatNotifications: z.boolean().default(true),\n}).strict();\n\nexport const patchInstanceNotificationSettingsSchema = instanceNotificationSettingsSchema.partial();\n\nexport const instanceLangfuseSettingsSchema = z.object({\n enabled: z.boolean().default(false),\n baseUrl: z.string().url().default(\"http://localhost:3000\"),\n publicKey: z.string().default(\"\"),\n environment: z.string().default(\"\"),\n secretKeyConfigured: z.boolean().default(false),\n managedByEnv: z.boolean().default(false),\n}).strict();\n\nexport const patchInstanceLangfuseSettingsSchema = z.object({\n enabled: z.boolean().optional(),\n baseUrl: z.string().url().optional(),\n publicKey: z.string().optional(),\n secretKey: z.string().optional(),\n environment: z.string().optional(),\n clearSecretKey: z.boolean().optional(),\n}).strict();\n\nexport const OPERATOR_PROFILE_MORE_ABOUT_YOU_MAX_LENGTH = 8000;\n\nexport const operatorProfileSettingsSchema = z.object({\n nickname: z.string().max(80).default(\"\"),\n moreAboutYou: z.string().max(OPERATOR_PROFILE_MORE_ABOUT_YOU_MAX_LENGTH).default(\"\"),\n}).strict();\n\nexport const patchOperatorProfileSettingsSchema = operatorProfileSettingsSchema.partial();\n\nexport const instancePathPickerSelectionTypeSchema = z.enum([\"file\", \"directory\"]);\n\nexport const instancePathPickerRequestSchema = z.object({\n selectionType: instancePathPickerSelectionTypeSchema,\n}).strict();\n\nexport const instancePathPickerResultSchema = z.object({\n path: z.string().nullable(),\n cancelled: z.boolean(),\n}).strict();\n\nexport type InstanceGeneralSettings = z.infer<typeof instanceGeneralSettingsSchema>;\nexport type PatchInstanceGeneralSettings = z.infer<typeof patchInstanceGeneralSettingsSchema>;\nexport type InstanceLangfuseSettings = z.infer<typeof instanceLangfuseSettingsSchema>;\nexport type PatchInstanceLangfuseSettings = z.infer<typeof patchInstanceLangfuseSettingsSchema>;\nexport type InstanceLocale = z.infer<typeof instanceLocaleSchema>;\nexport type OperatorProfileSettings = z.infer<typeof operatorProfileSettingsSchema>;\nexport type PatchOperatorProfileSettings = z.infer<typeof patchOperatorProfileSettingsSchema>;\nexport type InstanceNotificationSettings = z.infer<typeof instanceNotificationSettingsSchema>;\nexport type PatchInstanceNotificationSettings = z.infer<typeof patchInstanceNotificationSettingsSchema>;\nexport type InstancePathPickerSelectionType = z.infer<typeof instancePathPickerSelectionTypeSchema>;\nexport type InstancePathPickerRequest = z.infer<typeof instancePathPickerRequestSchema>;\nexport type InstancePathPickerResult = z.infer<typeof instancePathPickerResultSchema>;\n", "import { z } from \"zod\";\nimport {\n BUDGET_INCIDENT_RESOLUTION_ACTIONS,\n BUDGET_METRICS,\n BUDGET_SCOPE_TYPES,\n BUDGET_WINDOW_KINDS,\n} from \"../constants.js\";\n\nexport const upsertBudgetPolicySchema = z.object({\n scopeType: z.enum(BUDGET_SCOPE_TYPES),\n scopeId: z.string().uuid(),\n metric: z.enum(BUDGET_METRICS).optional().default(\"billed_cents\"),\n windowKind: z.enum(BUDGET_WINDOW_KINDS).optional().default(\"calendar_month_utc\"),\n amount: z.number().int().nonnegative(),\n warnPercent: z.number().int().min(1).max(99).optional().default(80),\n hardStopEnabled: z.boolean().optional().default(true),\n notifyEnabled: z.boolean().optional().default(true),\n isActive: z.boolean().optional().default(true),\n});\n\nexport type UpsertBudgetPolicy = z.infer<typeof upsertBudgetPolicySchema>;\n\nexport const resolveBudgetIncidentSchema = z.object({\n action: z.enum(BUDGET_INCIDENT_RESOLUTION_ACTIONS),\n amount: z.number().int().nonnegative().optional(),\n decisionNote: z.string().optional().nullable(),\n}).superRefine((value, ctx) => {\n if (value.action === \"raise_budget_and_resume\" && typeof value.amount !== \"number\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"amount is required when raising a budget\",\n path: [\"amount\"],\n });\n }\n});\n\nexport type ResolveBudgetIncident = z.infer<typeof resolveBudgetIncidentSchema>;\n", "import { z } from \"zod\";\nimport { CHAT_ISSUE_CREATION_MODES, ORGANIZATION_STATUSES } from \"../constants.js\";\n\nconst logoAssetIdSchema = z.string().uuid().nullable().optional();\nconst brandColorSchema = z.string().regex(/^#[0-9a-fA-F]{6}$/).nullable().optional();\nexport const createOrganizationSchema = z.object({\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n defaultChatIssueCreationMode: z.enum(CHAT_ISSUE_CREATION_MODES).optional().default(\"manual_approval\"),\n brandColor: brandColorSchema,\n requireBoardApprovalForNewAgents: z.boolean().optional(),\n});\n\nexport type CreateOrganization = z.infer<typeof createOrganizationSchema>;\n\nexport const updateOrganizationSchema = createOrganizationSchema\n .partial()\n .extend({\n status: z.enum(ORGANIZATION_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n requireBoardApprovalForNewAgents: z.boolean().optional(),\n defaultChatIssueCreationMode: z.enum(CHAT_ISSUE_CREATION_MODES).optional(),\n brandColor: brandColorSchema,\n logoAssetId: logoAssetIdSchema,\n });\n\nexport type UpdateOrganization = z.infer<typeof updateOrganizationSchema>;\n\nexport const updateOrganizationBrandingSchema = z\n .object({\n name: z.string().min(1).optional(),\n description: z.string().nullable().optional(),\n brandColor: brandColorSchema,\n logoAssetId: logoAssetIdSchema,\n })\n .strict()\n .refine(\n (value) =>\n value.name !== undefined\n || value.description !== undefined\n || value.brandColor !== undefined\n || value.logoAssetId !== undefined,\n \"At least one branding field must be provided\",\n );\n\nexport type UpdateOrganizationBranding = z.infer<typeof updateOrganizationBrandingSchema>;\n\nexport const updateOrganizationWorkspaceFileSchema = z.object({\n content: z.string(),\n});\n\nexport type UpdateOrganizationWorkspaceFile = z.infer<typeof updateOrganizationWorkspaceFileSchema>;\n", "import { z } from \"zod\";\nimport { SECRET_PROVIDERS } from \"../constants.js\";\n\nexport const envBindingPlainSchema = z.object({\n type: z.literal(\"plain\"),\n value: z.string(),\n});\n\nexport const envBindingSecretRefSchema = z.object({\n type: z.literal(\"secret_ref\"),\n secretId: z.string().uuid(),\n version: z.union([z.literal(\"latest\"), z.number().int().positive()]).optional(),\n});\n\n// Backward-compatible union that accepts legacy inline values.\nexport const envBindingSchema = z.union([\n z.string(),\n envBindingPlainSchema,\n envBindingSecretRefSchema,\n]);\n\nexport const envConfigSchema = z.record(envBindingSchema);\n\nexport const createSecretSchema = z.object({\n name: z.string().min(1),\n provider: z.enum(SECRET_PROVIDERS).optional(),\n value: z.string().min(1),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type CreateSecret = z.infer<typeof createSecretSchema>;\n\nexport const rotateSecretSchema = z.object({\n value: z.string().min(1),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type RotateSecret = z.infer<typeof rotateSecretSchema>;\n\nexport const updateSecretSchema = z.object({\n name: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n externalRef: z.string().optional().nullable(),\n});\n\nexport type UpdateSecret = z.infer<typeof updateSecretSchema>;\n", "import { z } from \"zod\";\nimport { AGENT_RUNTIME_TYPES } from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\n\nconst agentRuntimeTypes = new Set<string>(AGENT_RUNTIME_TYPES);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function validateModelFallbacksConfig(\n value: Record<string, unknown>,\n ctx: z.RefinementCtx,\n pathPrefix: Array<string | number>,\n) {\n const fallbackModels = value.modelFallbacks;\n if (fallbackModels === undefined) return;\n\n if (!Array.isArray(fallbackModels)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks must be an array\",\n path: [...pathPrefix, \"modelFallbacks\"],\n });\n return;\n }\n\n fallbackModels.forEach((fallback, index) => {\n if (typeof fallback === \"string\") {\n if (fallback.trim().length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks string entries must be non-empty\",\n path: [...pathPrefix, \"modelFallbacks\", index],\n });\n }\n return;\n }\n\n if (!isRecord(fallback)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must be strings or runtime/model objects\",\n path: [...pathPrefix, \"modelFallbacks\", index],\n });\n return;\n }\n\n if (typeof fallback.agentRuntimeType !== \"string\" || fallback.agentRuntimeType.trim().length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must include agentRuntimeType\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"agentRuntimeType\"],\n });\n } else if (!agentRuntimeTypes.has(fallback.agentRuntimeType)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must include a valid agentRuntimeType\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"agentRuntimeType\"],\n });\n }\n if (typeof fallback.model !== \"string\" || fallback.model.trim().length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entries must include model\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"model\"],\n });\n }\n if (fallback.config !== undefined && !isRecord(fallback.config)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entry config must be an object\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"config\"],\n });\n } else if (isRecord(fallback.config) && fallback.config.env !== undefined) {\n const parsed = envConfigSchema.safeParse(fallback.config.env);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"modelFallbacks entry config.env must be a map of valid env bindings\",\n path: [...pathPrefix, \"modelFallbacks\", index, \"config\", \"env\"],\n });\n }\n }\n });\n}\n", "import { z } from \"zod\";\nimport {\n AGENT_RUNTIME_TYPES,\n ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES,\n ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES,\n} from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\nimport { validateModelFallbacksConfig } from \"./model-fallbacks.js\";\n\nexport const organizationIntelligenceProfilePurposeSchema = z.enum(\n ORGANIZATION_INTELLIGENCE_PROFILE_PURPOSES,\n);\n\nexport const organizationIntelligenceProfileStatusSchema = z.enum(\n ORGANIZATION_INTELLIGENCE_PROFILE_STATUSES,\n);\n\nexport const organizationIntelligenceProfileConfigSchema = z.record(z.unknown()).superRefine((value, ctx) => {\n const envValue = value.env;\n if (envValue !== undefined) {\n const parsed = envConfigSchema.safeParse(envValue);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"agentRuntimeConfig.env must be a map of valid env bindings\",\n path: [\"env\"],\n });\n }\n }\n\n validateModelFallbacksConfig(value, ctx, []);\n});\n\nexport const upsertOrganizationIntelligenceProfileSchema = z.object({\n agentRuntimeType: z.enum(AGENT_RUNTIME_TYPES),\n agentRuntimeConfig: organizationIntelligenceProfileConfigSchema.default({}),\n status: organizationIntelligenceProfileStatusSchema.optional().default(\"configured\"),\n});\n\nexport type OrganizationIntelligenceProfilePurposeInput = z.infer<typeof organizationIntelligenceProfilePurposeSchema>;\nexport type UpsertOrganizationIntelligenceProfileInput = z.infer<typeof upsertOrganizationIntelligenceProfileSchema>;\n", "import { z } from \"zod\";\nimport { ORGANIZATION_RESOURCE_KINDS, PROJECT_RESOURCE_ATTACHMENT_ROLES } from \"../constants.js\";\n\nexport const organizationResourceKindSchema = z.enum(ORGANIZATION_RESOURCE_KINDS);\nexport const projectResourceAttachmentRoleSchema = z.enum(PROJECT_RESOURCE_ATTACHMENT_ROLES);\n\nexport const createOrganizationResourceSchema = z.object({\n name: z.string().min(1),\n kind: organizationResourceKindSchema,\n locator: z.string().min(1),\n description: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateOrganizationResource = z.infer<typeof createOrganizationResourceSchema>;\n\nexport const updateOrganizationResourceSchema = z.object({\n name: z.string().min(1).optional(),\n kind: organizationResourceKindSchema.optional(),\n locator: z.string().min(1).optional(),\n description: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n}).strict();\n\nexport type UpdateOrganizationResource = z.infer<typeof updateOrganizationResourceSchema>;\n\nexport const projectResourceAttachmentInputSchema = z.object({\n resourceId: z.string().uuid(),\n role: projectResourceAttachmentRoleSchema.optional(),\n note: z.string().optional().nullable(),\n sortOrder: z.number().int().nonnegative().optional(),\n}).strict();\n\nexport type ProjectResourceAttachmentInputPayload = z.infer<typeof projectResourceAttachmentInputSchema>;\n\nexport const updateProjectResourceAttachmentSchema = z.object({\n role: projectResourceAttachmentRoleSchema.optional(),\n note: z.string().optional().nullable(),\n sortOrder: z.number().int().nonnegative().optional(),\n}).strict();\n\nexport type UpdateProjectResourceAttachment = z.infer<typeof updateProjectResourceAttachmentSchema>;\n\nexport const createProjectInlineResourceSchema = createOrganizationResourceSchema.extend({\n role: projectResourceAttachmentRoleSchema.optional(),\n note: z.string().optional().nullable(),\n sortOrder: z.number().int().nonnegative().optional(),\n}).strict();\n\nexport type CreateProjectInlineResource = z.infer<typeof createProjectInlineResourceSchema>;\n", "import { z } from \"zod\";\nimport {\n AUTOMATION_CATCH_UP_POLICIES,\n AUTOMATION_CONCURRENCY_POLICIES,\n AUTOMATION_OUTPUT_MODES,\n AUTOMATION_STATUSES,\n CHAT_CONTEXT_ENTITY_TYPES,\n CHAT_CONVERSATION_STATUSES,\n CHAT_ISSUE_CREATION_MODES,\n CHAT_MESSAGE_KINDS,\n CHAT_MESSAGE_ROLES,\n CHAT_MESSAGE_STATUSES,\n} from \"../constants.js\";\n\nexport const chatConversationStatusSchema = z.enum(CHAT_CONVERSATION_STATUSES);\nexport const chatIssueCreationModeSchema = z.enum(CHAT_ISSUE_CREATION_MODES);\nexport const chatMessageRoleSchema = z.enum(CHAT_MESSAGE_ROLES);\nexport const chatMessageKindSchema = z.enum(CHAT_MESSAGE_KINDS);\nexport const chatMessageStatusSchema = z.enum(CHAT_MESSAGE_STATUSES);\nexport const chatContextEntityTypeSchema = z.enum(CHAT_CONTEXT_ENTITY_TYPES);\n\nexport const createChatContextLinkSchema = z.object({\n entityType: chatContextEntityTypeSchema,\n entityId: z.string().min(1),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport const createChatConversationSchema = z.object({\n title: z.string().trim().min(1).max(200).optional(),\n summary: z.string().trim().max(5000).optional().nullable(),\n preferredAgentId: z.string().uuid().optional().nullable(),\n issueCreationMode: chatIssueCreationModeSchema.optional(),\n planMode: z.boolean().optional(),\n contextLinks: z.array(createChatContextLinkSchema).optional().default([]),\n});\n\nexport const setChatProjectContextSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n});\n\nexport const updateChatConversationSchema = createChatConversationSchema\n .partial()\n .extend({\n status: chatConversationStatusSchema.optional(),\n routedAgentId: z.string().uuid().optional().nullable(),\n primaryIssueId: z.string().uuid().optional().nullable(),\n resolvedAt: z.string().datetime().optional().nullable(),\n });\n\nexport const addChatMessageSchema = z.object({\n body: z.string().trim().min(1).max(20000),\n editUserMessageId: z.string().uuid().optional().nullable(),\n});\n\nconst chatRichReferenceDisplaySchema = z.enum([\"card\", \"inline\"]);\nconst chatIssueIdentifierSchema = z.string().trim().min(1).max(64).regex(/^[A-Z0-9][A-Z0-9-]*$/i);\nconst chatAskUserIdentifierSchema = z.string().trim().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/);\n\nexport const chatAskUserOptionSchema = z.object({\n id: chatAskUserIdentifierSchema,\n label: z.string().trim().min(1).max(80),\n description: z.string().trim().min(1).max(220).optional(),\n recommended: z.boolean().optional(),\n});\n\nexport const chatAskUserQuestionSchema = z.object({\n id: chatAskUserIdentifierSchema,\n header: z.string().trim().min(1).max(32).optional(),\n question: z.string().trim().min(1).max(240),\n options: z.array(chatAskUserOptionSchema).min(2).max(3),\n selectionMode: z.enum([\"single\", \"multiple\"]).optional(),\n allowFreeform: z.boolean().optional(),\n}).superRefine((question, ctx) => {\n const optionIds = new Set<string>();\n question.options.forEach((option, index) => {\n if (optionIds.has(option.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Option ids must be unique within each question\",\n path: [\"options\", index, \"id\"],\n });\n return;\n }\n optionIds.add(option.id);\n });\n});\n\nexport const chatAskUserRequestSchema = z.object({\n questions: z.array(chatAskUserQuestionSchema).min(1).max(3),\n}).superRefine((request, ctx) => {\n const questionIds = new Set<string>();\n request.questions.forEach((question, index) => {\n if (questionIds.has(question.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Question ids must be unique within requestUserInput\",\n path: [\"questions\", index, \"id\"],\n });\n return;\n }\n questionIds.add(question.id);\n });\n});\n\nconst chatIssueRichReferenceSchema = z.object({\n type: z.literal(\"issue\"),\n issueId: z.string().uuid().optional(),\n identifier: chatIssueIdentifierSchema.optional(),\n display: chatRichReferenceDisplaySchema.optional(),\n}).refine((value) => Boolean(value.issueId || value.identifier), {\n message: \"issueId or identifier is required\",\n});\n\nconst chatIssueCommentRichReferenceSchema = z.object({\n type: z.literal(\"issue_comment\"),\n issueId: z.string().uuid().optional(),\n identifier: chatIssueIdentifierSchema.optional(),\n commentId: z.string().uuid(),\n display: chatRichReferenceDisplaySchema.optional(),\n}).refine((value) => Boolean(value.issueId || value.identifier), {\n message: \"issueId or identifier is required\",\n});\n\nexport const chatRichReferenceSchema = z.union([\n chatIssueRichReferenceSchema,\n chatIssueCommentRichReferenceSchema,\n]);\n\nexport const chatRichReferencesSchema = z.array(chatRichReferenceSchema).max(5);\n\nexport function chatRichReferencesFromStructuredPayload(payload: unknown) {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) return [];\n const rawReferences = (payload as Record<string, unknown>).richReferences;\n if (!Array.isArray(rawReferences)) return [];\n\n return rawReferences\n .map((reference) => chatRichReferenceSchema.safeParse(reference))\n .filter((result): result is z.SafeParseSuccess<z.infer<typeof chatRichReferenceSchema>> => result.success)\n .map((result) => result.data)\n .slice(0, 5);\n}\n\nexport function chatAskUserRequestFromStructuredPayload(payload: unknown) {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n const rawRequest = (payload as Record<string, unknown>).requestUserInput;\n const parsed = chatAskUserRequestSchema.safeParse(rawRequest);\n return parsed.success ? parsed.data : null;\n}\n\nexport const chatAutomationCreateSchema = z.object({\n title: z.string().trim().min(1).max(200),\n description: z.string().trim().max(20_000).optional().nullable(),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n parentIssueId: z.string().uuid().optional().nullable(),\n priority: z.enum([\"critical\", \"high\", \"medium\", \"low\"]).optional().default(\"medium\"),\n status: z.enum(AUTOMATION_STATUSES).optional().default(\"active\"),\n concurrencyPolicy: z.enum(AUTOMATION_CONCURRENCY_POLICIES).optional().default(\"coalesce_if_active\"),\n catchUpPolicy: z.enum(AUTOMATION_CATCH_UP_POLICIES).optional().default(\"skip_missed\"),\n outputMode: z.enum(AUTOMATION_OUTPUT_MODES).optional().default(\"chat_output\"),\n schedule: z.object({\n cronExpression: z.string().trim().min(1),\n timezone: z.string().trim().min(1),\n label: z.string().trim().max(120).optional().nullable(),\n enabled: z.boolean().optional().default(true),\n }),\n});\n\nexport function chatAutomationCreateFromStructuredPayload(payload: unknown) {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n const rawRequest = (payload as Record<string, unknown>).automationCreate;\n const parsed = chatAutomationCreateSchema.safeParse(rawRequest);\n return parsed.success ? parsed.data : null;\n}\n\nexport function sanitizeChatStructuredPayload(payload: Record<string, unknown> | null | undefined) {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) return null;\n const next = { ...payload };\n const requestUserInput = chatAskUserRequestFromStructuredPayload(payload);\n if (requestUserInput) {\n next.requestUserInput = requestUserInput;\n } else {\n delete next.requestUserInput;\n }\n const richReferences = chatRichReferencesFromStructuredPayload(payload);\n if (richReferences.length > 0) {\n next.richReferences = richReferences;\n } else {\n delete next.richReferences;\n }\n const automationCreate = chatAutomationCreateFromStructuredPayload(payload);\n if (automationCreate) {\n next.automationCreate = automationCreate;\n } else {\n delete next.automationCreate;\n }\n return Object.keys(next).length > 0 ? next : null;\n}\n\nexport const createChatAttachmentMetadataSchema = z.object({\n messageId: z.string().uuid(),\n});\n\nconst chatIssueProposalSchema = z.object({\n title: z.string().trim().min(1).max(200),\n description: z.string().trim().min(1).max(20000),\n priority: z.enum([\"critical\", \"high\", \"medium\", \"low\"]).optional().default(\"medium\"),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n parentId: z.string().uuid().optional().nullable(),\n assigneeAgentId: z.string().uuid().optional().nullable(),\n assigneeUserId: z.string().trim().optional().nullable(),\n reviewerAgentId: z.string().uuid().optional().nullable(),\n reviewerUserId: z.string().trim().optional().nullable(),\n labelIds: z.array(z.string().uuid()).optional(),\n});\n\nexport const convertChatToIssueSchema = z.object({\n messageId: z.string().uuid().optional().nullable(),\n proposal: chatIssueProposalSchema.optional(),\n});\n\nexport const chatOperationProposalSchema = z.object({\n targetType: z.enum([\"organization\", \"agent\"]),\n targetId: z.string().min(1),\n summary: z.string().trim().min(1).max(500),\n patch: z.record(z.unknown()),\n});\n\nexport const resolveChatOperationProposalSchema = z.object({\n action: z.enum([\"approve\", \"reject\", \"requestRevision\"]),\n decisionNote: z.string().trim().max(5000).optional().nullable(),\n});\n\nexport const updateChatConversationUserStateSchema = z.object({\n pinned: z.boolean().optional(),\n unread: z.boolean().optional(),\n});\n\nexport type ChatConversationStatus = z.infer<typeof chatConversationStatusSchema>;\nexport type ChatIssueCreationMode = z.infer<typeof chatIssueCreationModeSchema>;\nexport type ChatMessageRole = z.infer<typeof chatMessageRoleSchema>;\nexport type ChatMessageKind = z.infer<typeof chatMessageKindSchema>;\nexport type ChatMessageStatus = z.infer<typeof chatMessageStatusSchema>;\nexport type ChatContextEntityType = z.infer<typeof chatContextEntityTypeSchema>;\nexport type CreateChatContextLink = z.infer<typeof createChatContextLinkSchema>;\nexport type CreateChatConversation = z.infer<typeof createChatConversationSchema>;\nexport type SetChatProjectContext = z.infer<typeof setChatProjectContextSchema>;\nexport type UpdateChatConversation = z.infer<typeof updateChatConversationSchema>;\nexport type AddChatMessage = z.infer<typeof addChatMessageSchema>;\nexport type ChatAskUserOption = z.infer<typeof chatAskUserOptionSchema>;\nexport type ChatAskUserQuestion = z.infer<typeof chatAskUserQuestionSchema>;\nexport type ChatAskUserRequest = z.infer<typeof chatAskUserRequestSchema>;\nexport type ChatRichReference = z.infer<typeof chatRichReferenceSchema>;\nexport type ChatAutomationCreate = z.infer<typeof chatAutomationCreateSchema>;\nexport type CreateChatAttachmentMetadata = z.infer<typeof createChatAttachmentMetadataSchema>;\nexport type ConvertChatToIssue = z.infer<typeof convertChatToIssueSchema>;\nexport type ChatOperationProposal = z.infer<typeof chatOperationProposalSchema>;\nexport type ResolveChatOperationProposal = z.infer<typeof resolveChatOperationProposalSchema>;\nexport type UpdateChatConversationUserState = z.infer<typeof updateChatConversationUserStateSchema>;\n", "import { z } from \"zod\";\n\nexport const organizationSkillSourceTypeSchema = z.enum([\"local_path\", \"github\", \"url\", \"catalog\", \"skills_sh\"]);\nexport const organizationSkillTrustLevelSchema = z.enum([\"markdown_only\", \"assets\", \"scripts_executables\"]);\nexport const organizationSkillCompatibilitySchema = z.enum([\"compatible\", \"unknown\", \"invalid\"]);\nexport const organizationSkillSourceBadgeSchema = z.enum([\n \"rudder\",\n \"community\",\n \"github\",\n \"local\",\n \"url\",\n \"catalog\",\n \"skills_sh\",\n]);\n\nexport const organizationSkillFileInventoryEntrySchema = z.object({\n path: z.string().min(1),\n kind: z.enum([\"skill\", \"markdown\", \"reference\", \"script\", \"asset\", \"other\"]),\n});\n\nexport const organizationSkillSchema = z.object({\n id: z.string().uuid(),\n orgId: z.string().uuid(),\n key: z.string().min(1),\n slug: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullable(),\n markdown: z.string(),\n sourceType: organizationSkillSourceTypeSchema,\n sourceLocator: z.string().nullable(),\n sourceRef: z.string().nullable(),\n trustLevel: organizationSkillTrustLevelSchema,\n compatibility: organizationSkillCompatibilitySchema,\n fileInventory: z.array(organizationSkillFileInventoryEntrySchema).default([]),\n metadata: z.record(z.unknown()).nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\nexport const organizationSkillListItemSchema = organizationSkillSchema.extend({\n attachedAgentCount: z.number().int().nonnegative(),\n editable: z.boolean(),\n editableReason: z.string().nullable(),\n sourceLabel: z.string().nullable(),\n sourceBadge: organizationSkillSourceBadgeSchema,\n sourcePath: z.string().nullable(),\n workspaceEditPath: z.string().nullable(),\n});\n\nexport const organizationSkillUsageAgentSchema = z.object({\n id: z.string().uuid(),\n name: z.string().min(1),\n urlKey: z.string().min(1),\n agentRuntimeType: z.string().min(1),\n desired: z.boolean(),\n actualState: z.string().nullable(),\n});\n\nexport const organizationSkillDetailSchema = organizationSkillSchema.extend({\n attachedAgentCount: z.number().int().nonnegative(),\n usedByAgents: z.array(organizationSkillUsageAgentSchema).default([]),\n editable: z.boolean(),\n editableReason: z.string().nullable(),\n sourceLabel: z.string().nullable(),\n sourceBadge: organizationSkillSourceBadgeSchema,\n sourcePath: z.string().nullable(),\n workspaceEditPath: z.string().nullable(),\n});\n\nexport const organizationSkillUpdateStatusSchema = z.object({\n supported: z.boolean(),\n reason: z.string().nullable(),\n trackingRef: z.string().nullable(),\n currentRef: z.string().nullable(),\n latestRef: z.string().nullable(),\n hasUpdate: z.boolean(),\n});\n\nexport const organizationSkillImportSchema = z.object({\n source: z.string().min(1),\n});\n\nexport const organizationSkillProjectScanRequestSchema = z.object({\n projectIds: z.array(z.string().uuid()).optional(),\n workspaceIds: z.array(z.string().uuid()).optional(),\n});\n\nexport const organizationSkillProjectScanSkippedSchema = z.object({\n projectId: z.string().uuid(),\n projectName: z.string().min(1),\n workspaceId: z.string().uuid().nullable(),\n workspaceName: z.string().nullable(),\n path: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillProjectScanConflictSchema = z.object({\n slug: z.string().min(1),\n key: z.string().min(1),\n projectId: z.string().uuid(),\n projectName: z.string().min(1),\n workspaceId: z.string().uuid(),\n workspaceName: z.string().min(1),\n path: z.string().min(1),\n existingSkillId: z.string().uuid(),\n existingSkillKey: z.string().min(1),\n existingSourceLocator: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillProjectScanResultSchema = z.object({\n scannedProjects: z.number().int().nonnegative(),\n scannedWorkspaces: z.number().int().nonnegative(),\n discovered: z.number().int().nonnegative(),\n imported: z.array(organizationSkillSchema),\n updated: z.array(organizationSkillSchema),\n skipped: z.array(organizationSkillProjectScanSkippedSchema),\n conflicts: z.array(organizationSkillProjectScanConflictSchema),\n warnings: z.array(z.string()),\n});\n\nexport const organizationSkillLocalScanRequestSchema = z.object({\n roots: z.array(z.string().min(1)).optional(),\n});\n\nexport const organizationSkillLocalScanSkippedSchema = z.object({\n root: z.string().min(1),\n path: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillLocalScanConflictSchema = z.object({\n root: z.string().min(1),\n path: z.string().min(1),\n slug: z.string().min(1),\n key: z.string().min(1),\n existingSkillId: z.string().uuid(),\n existingSkillKey: z.string().min(1),\n existingSourceLocator: z.string().nullable(),\n reason: z.string().min(1),\n});\n\nexport const organizationSkillLocalScanResultSchema = z.object({\n scannedRoots: z.number().int().nonnegative(),\n discovered: z.number().int().nonnegative(),\n imported: z.array(organizationSkillSchema),\n updated: z.array(organizationSkillSchema),\n skipped: z.array(organizationSkillLocalScanSkippedSchema),\n conflicts: z.array(organizationSkillLocalScanConflictSchema),\n warnings: z.array(z.string()),\n});\n\nexport const organizationSkillCreateSchema = z.object({\n name: z.string().min(1),\n slug: z.string().min(1).nullable().optional(),\n description: z.string().nullable().optional(),\n markdown: z.string().nullable().optional(),\n});\n\nexport const organizationSkillFileDetailSchema = z.object({\n skillId: z.string().uuid(),\n path: z.string().min(1),\n kind: z.enum([\"skill\", \"markdown\", \"reference\", \"script\", \"asset\", \"other\"]),\n content: z.string(),\n language: z.string().nullable(),\n markdown: z.boolean(),\n editable: z.boolean(),\n});\n\nexport const organizationSkillFileUpdateSchema = z.object({\n path: z.string().min(1),\n content: z.string(),\n});\n\nexport type OrganizationSkillImport = z.infer<typeof organizationSkillImportSchema>;\nexport type OrganizationSkillProjectScan = z.infer<typeof organizationSkillProjectScanRequestSchema>;\nexport type OrganizationSkillLocalScan = z.infer<typeof organizationSkillLocalScanRequestSchema>;\nexport type OrganizationSkillCreate = z.infer<typeof organizationSkillCreateSchema>;\nexport type OrganizationSkillFileUpdate = z.infer<typeof organizationSkillFileUpdateSchema>;\n", "import { z } from \"zod\";\n\nexport const agentSkillStateSchema = z.enum([\n \"available\",\n \"configured\",\n \"installed\",\n \"missing\",\n \"stale\",\n \"external\",\n]);\n\nexport const agentSkillOriginSchema = z.preprocess((value) => {\n if (value === \"company_managed\") return \"organization_managed\";\n return value;\n}, z.enum([\n \"organization_managed\",\n \"user_installed\",\n \"external_unknown\",\n]));\n\nexport const agentSkillSourceClassSchema = z.enum([\n \"bundled\",\n \"organization\",\n \"agent_home\",\n \"global\",\n \"adapter_home\",\n]);\n\nexport const agentSkillSyncModeSchema = z.enum([\n \"unsupported\",\n \"persistent\",\n \"ephemeral\",\n]);\n\nexport const agentSkillEntrySchema = z.object({\n key: z.string().min(1),\n selectionKey: z.string().min(1),\n runtimeName: z.string().min(1).nullable(),\n description: z.string().nullable().optional(),\n desired: z.boolean(),\n configurable: z.boolean(),\n alwaysEnabled: z.boolean(),\n managed: z.boolean(),\n state: agentSkillStateSchema,\n sourceClass: agentSkillSourceClassSchema,\n origin: agentSkillOriginSchema.optional(),\n originLabel: z.string().nullable().optional(),\n locationLabel: z.string().nullable().optional(),\n readOnly: z.boolean().optional(),\n sourcePath: z.string().nullable().optional(),\n targetPath: z.string().nullable().optional(),\n workspaceEditPath: z.string().nullable().optional(),\n detail: z.string().nullable().optional(),\n});\n\nexport const agentSkillSnapshotSchema = z.object({\n agentRuntimeType: z.string().min(1),\n supported: z.boolean(),\n mode: agentSkillSyncModeSchema,\n desiredSkills: z.array(z.string().min(1)),\n entries: z.array(agentSkillEntrySchema),\n warnings: z.array(z.string()),\n});\n\nexport const agentSkillSyncSchema = z.object({\n desiredSkills: z.array(z.string().min(1)),\n});\n\nexport const agentSkillEnableSchema = z.object({\n skills: z.array(z.string().min(1)).min(1),\n});\n\nexport type AgentSkillSync = z.infer<typeof agentSkillSyncSchema>;\nexport type AgentSkillEnable = z.infer<typeof agentSkillEnableSchema>;\n", "import { z } from \"zod\";\n\nexport const portabilityIncludeSchema = z\n .object({\n organization: z.boolean().optional(),\n agents: z.boolean().optional(),\n projects: z.boolean().optional(),\n issues: z.boolean().optional(),\n skills: z.boolean().optional(),\n })\n .partial();\n\nexport const portabilityEnvInputSchema = z.object({\n key: z.string().min(1),\n description: z.string().nullable(),\n agentSlug: z.string().min(1).nullable(),\n kind: z.enum([\"secret\", \"plain\"]),\n requirement: z.enum([\"required\", \"optional\"]),\n defaultValue: z.string().nullable(),\n portability: z.enum([\"portable\", \"system_dependent\"]),\n});\n\nexport const portabilityFileEntrySchema = z.union([\n z.string(),\n z.object({\n encoding: z.literal(\"base64\"),\n data: z.string(),\n contentType: z.string().min(1).optional().nullable(),\n }),\n]);\n\nexport const portabilityOrganizationManifestEntrySchema = z.object({\n path: z.string().min(1),\n name: z.string().min(1),\n description: z.string().nullable(),\n brandColor: z.string().nullable(),\n logoPath: z.string().nullable(),\n requireBoardApprovalForNewAgents: z.boolean(),\n});\n\nexport const portabilitySidebarOrderSchema = z.object({\n agents: z.array(z.string().min(1)).default([]),\n projects: z.array(z.string().min(1)).default([]),\n});\n\nexport const portabilityAgentManifestEntrySchema = z.object({\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n skills: z.array(z.string().min(1)).default([]),\n role: z.string().min(1),\n title: z.string().nullable(),\n icon: z.string().nullable(),\n capabilities: z.string().nullable(),\n reportsToSlug: z.string().min(1).nullable(),\n agentRuntimeType: z.string().min(1),\n agentRuntimeConfig: z.record(z.unknown()),\n runtimeConfig: z.record(z.unknown()),\n permissions: z.record(z.unknown()),\n budgetMonthlyCents: z.number().int().nonnegative(),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilitySkillManifestEntrySchema = z.object({\n key: z.string().min(1),\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n description: z.string().nullable(),\n sourceType: z.string().min(1),\n sourceLocator: z.string().nullable(),\n sourceRef: z.string().nullable(),\n trustLevel: z.string().nullable(),\n compatibility: z.string().nullable(),\n metadata: z.record(z.unknown()).nullable(),\n fileInventory: z.array(z.object({\n path: z.string().min(1),\n kind: z.string().min(1),\n })).default([]),\n});\n\nexport const portabilityProjectManifestEntrySchema = z.object({\n slug: z.string().min(1),\n name: z.string().min(1),\n path: z.string().min(1),\n description: z.string().nullable(),\n ownerAgentSlug: z.string().min(1).nullable(),\n leadAgentSlug: z.string().min(1).nullable(),\n targetDate: z.string().nullable(),\n color: z.string().nullable(),\n status: z.string().nullable(),\n executionWorkspacePolicy: z.record(z.unknown()).nullable(),\n workspaces: z.array(z.object({\n key: z.string().min(1),\n name: z.string().min(1),\n sourceType: z.string().nullable(),\n repoUrl: z.string().nullable(),\n repoRef: z.string().nullable(),\n defaultRef: z.string().nullable(),\n visibility: z.string().nullable(),\n setupCommand: z.string().nullable(),\n cleanupCommand: z.string().nullable(),\n metadata: z.record(z.unknown()).nullable(),\n isPrimary: z.boolean(),\n })).default([]),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilityIssueAutomationTriggerManifestEntrySchema = z.object({\n kind: z.string().min(1),\n label: z.string().nullable(),\n enabled: z.boolean(),\n cronExpression: z.string().nullable(),\n timezone: z.string().nullable(),\n signingMode: z.string().nullable(),\n replayWindowSec: z.number().int().nullable(),\n});\n\nexport const portabilityIssueAutomationManifestEntrySchema = z.object({\n concurrencyPolicy: z.string().nullable(),\n catchUpPolicy: z.string().nullable(),\n triggers: z.array(portabilityIssueAutomationTriggerManifestEntrySchema).default([]),\n});\n\nexport const portabilityIssueManifestEntrySchema = z.object({\n slug: z.string().min(1),\n identifier: z.string().min(1).nullable(),\n title: z.string().min(1),\n path: z.string().min(1),\n projectSlug: z.string().min(1).nullable(),\n projectWorkspaceKey: z.string().min(1).nullable(),\n assigneeAgentSlug: z.string().min(1).nullable(),\n description: z.string().nullable(),\n recurring: z.boolean().default(false),\n automation: portabilityIssueAutomationManifestEntrySchema.nullable(),\n legacyRecurrence: z.record(z.unknown()).nullable(),\n status: z.string().nullable(),\n priority: z.string().nullable(),\n labelIds: z.array(z.string().min(1)).default([]),\n billingCode: z.string().nullable(),\n executionWorkspaceSettings: z.record(z.unknown()).nullable(),\n assigneeAgentRuntimeOverrides: z.record(z.unknown()).nullable(),\n metadata: z.record(z.unknown()).nullable(),\n});\n\nexport const portabilityManifestSchema = z.object({\n schemaVersion: z.number().int().positive(),\n generatedAt: z.string().datetime(),\n source: z\n .object({\n orgId: z.string().uuid(),\n organizationName: z.string().min(1),\n })\n .nullable(),\n includes: z.object({\n organization: z.boolean(),\n agents: z.boolean(),\n projects: z.boolean(),\n issues: z.boolean(),\n skills: z.boolean(),\n }),\n organization: portabilityOrganizationManifestEntrySchema.nullable(),\n sidebar: portabilitySidebarOrderSchema.nullable(),\n agents: z.array(portabilityAgentManifestEntrySchema),\n skills: z.array(portabilitySkillManifestEntrySchema).default([]),\n projects: z.array(portabilityProjectManifestEntrySchema).default([]),\n issues: z.array(portabilityIssueManifestEntrySchema).default([]),\n envInputs: z.array(portabilityEnvInputSchema).default([]),\n});\n\nexport const portabilitySourceSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"inline\"),\n rootPath: z.string().min(1).optional().nullable(),\n files: z.record(portabilityFileEntrySchema),\n }),\n z.object({\n type: z.literal(\"github\"),\n url: z.string().url(),\n }),\n]);\n\nexport const portabilityTargetSchema = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"new_organization\"),\n newOrganizationName: z.string().min(1).optional().nullable(),\n }),\n z.object({\n mode: z.literal(\"existing_organization\"),\n orgId: z.string().uuid(),\n }),\n]);\n\nexport const portabilityAgentSelectionSchema = z.union([\n z.literal(\"all\"),\n z.array(z.string().min(1)),\n]);\n\nexport const portabilityCollisionStrategySchema = z.enum([\"rename\", \"skip\", \"replace\"]);\n\nexport const organizationPortabilityExportSchema = z.object({\n include: portabilityIncludeSchema.optional(),\n agents: z.array(z.string().min(1)).optional(),\n skills: z.array(z.string().min(1)).optional(),\n projects: z.array(z.string().min(1)).optional(),\n issues: z.array(z.string().min(1)).optional(),\n projectIssues: z.array(z.string().min(1)).optional(),\n selectedFiles: z.array(z.string().min(1)).optional(),\n expandReferencedSkills: z.boolean().optional(),\n sidebarOrder: portabilitySidebarOrderSchema.partial().optional(),\n});\n\nexport type OrganizationPortabilityExport = z.infer<typeof organizationPortabilityExportSchema>;\n\nexport const organizationPortabilityPreviewSchema = z.object({\n source: portabilitySourceSchema,\n include: portabilityIncludeSchema.optional(),\n target: portabilityTargetSchema,\n agents: portabilityAgentSelectionSchema.optional(),\n collisionStrategy: portabilityCollisionStrategySchema.optional(),\n nameOverrides: z.record(z.string().min(1), z.string().min(1)).optional(),\n selectedFiles: z.array(z.string().min(1)).optional(),\n});\n\nexport type OrganizationPortabilityPreview = z.infer<typeof organizationPortabilityPreviewSchema>;\n\nexport const portabilityAdapterOverrideSchema = z.object({\n agentRuntimeType: z.string().min(1),\n agentRuntimeConfig: z.record(z.unknown()).optional(),\n});\n\nexport const organizationPortabilityImportSchema = organizationPortabilityPreviewSchema.extend({\n agentRuntimeOverrides: z.record(z.string().min(1), portabilityAdapterOverrideSchema).optional(),\n});\n\nexport type OrganizationPortabilityImport = z.infer<typeof organizationPortabilityImportSchema>;\n", "import { z } from \"zod\";\nimport {\n AGENT_AVATAR_BACKGROUND_PRESET_IDS,\n AGENT_DICEBEAR_NOTIONISTS_ICON_PREFIX,\n AGENT_RUNTIME_TYPES,\n AGENT_ICON_NAMES,\n AGENT_ROLES,\n AGENT_STATUSES,\n} from \"../constants.js\";\nimport { envConfigSchema } from \"./secret.js\";\nimport { validateModelFallbacksConfig } from \"./model-fallbacks.js\";\n\nexport const agentPermissionsSchema = z.object({\n canCreateAgents: z.boolean().optional().default(false),\n});\n\nexport const agentInstructionsBundleModeSchema = z.enum([\"managed\", \"external\"]);\n\nexport const updateAgentInstructionsBundleSchema = z.object({\n mode: agentInstructionsBundleModeSchema.optional(),\n rootPath: z.string().trim().min(1).nullable().optional(),\n entryFile: z.string().trim().min(1).optional(),\n clearLegacyPromptTemplate: z.boolean().optional().default(false),\n});\n\nexport type UpdateAgentInstructionsBundle = z.infer<typeof updateAgentInstructionsBundleSchema>;\n\nexport const upsertAgentInstructionsFileSchema = z.object({\n path: z.string().trim().min(1),\n content: z.string(),\n clearLegacyPromptTemplate: z.boolean().optional().default(false),\n});\n\nexport type UpsertAgentInstructionsFile = z.infer<typeof upsertAgentInstructionsFileSchema>;\n\nconst agentRuntimeConfigSchema = z.record(z.unknown()).superRefine((value, ctx) => {\n const envValue = value.env;\n if (envValue !== undefined) {\n const parsed = envConfigSchema.safeParse(envValue);\n if (!parsed.success) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"agentRuntimeConfig.env must be a map of valid env bindings\",\n path: [\"env\"],\n });\n }\n }\n\n validateModelFallbacksConfig(value, ctx, []);\n});\n\nconst optionalAgentNameSchema = z.preprocess(\n (value) => {\n if (typeof value !== \"string\") return value;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n },\n z.string().trim().min(1).optional(),\n);\n\nexport const uploadedAgentIconSchema = z.string().regex(\n new RegExp(\n \"^asset:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\"\n + `(?:\\\\?bg=(?:${AGENT_AVATAR_BACKGROUND_PRESET_IDS.join(\"|\")}))?$`,\n \"i\",\n ),\n \"Invalid uploaded avatar reference\",\n);\n\nexport const diceBearNotionistsAgentIconSchema = z.string().regex(\n new RegExp(\n `^${AGENT_DICEBEAR_NOTIONISTS_ICON_PREFIX}`\n + \"[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\"\n + `(?:\\\\?bg=(?:${AGENT_AVATAR_BACKGROUND_PRESET_IDS.join(\"|\")}))?$`,\n \"i\",\n ),\n \"Invalid DiceBear avatar reference\",\n);\n\nexport const agentIconSchema = z.preprocess(\n (value) => {\n if (typeof value !== \"string\") return value;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n },\n z.union([\n z.enum(AGENT_ICON_NAMES),\n uploadedAgentIconSchema,\n diceBearNotionistsAgentIconSchema,\n ]).nullable(),\n);\n\nexport const createAgentSchema = z.object({\n name: optionalAgentNameSchema,\n role: z.enum(AGENT_ROLES).optional().default(\"general\"),\n title: z.string().optional().nullable(),\n icon: agentIconSchema.optional(),\n reportsTo: z.string().uuid().optional().nullable(),\n capabilities: z.string().optional().nullable(),\n desiredSkills: z.array(z.string().min(1)).optional(),\n agentRuntimeType: z.enum(AGENT_RUNTIME_TYPES).optional().default(\"process\"),\n agentRuntimeConfig: agentRuntimeConfigSchema.optional().default({}),\n runtimeConfig: z.record(z.unknown()).optional().default({}),\n budgetMonthlyCents: z.number().int().nonnegative().optional().default(0),\n permissions: agentPermissionsSchema.optional(),\n metadata: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateAgent = z.infer<typeof createAgentSchema>;\n\nexport const createAgentHireSchema = createAgentSchema.extend({\n sourceIssueId: z.string().uuid().optional().nullable(),\n sourceIssueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateAgentHire = z.infer<typeof createAgentHireSchema>;\n\nexport const updateAgentSchema = createAgentSchema\n .omit({ permissions: true })\n .partial()\n .extend({\n permissions: z.never().optional(),\n replaceAgentRuntimeConfig: z.boolean().optional(),\n status: z.enum(AGENT_STATUSES).optional(),\n spentMonthlyCents: z.number().int().nonnegative().optional(),\n });\n\nexport type UpdateAgent = z.infer<typeof updateAgentSchema>;\n\nexport const updateAgentInstructionsPathSchema = z.object({\n path: z.string().trim().min(1).nullable(),\n agentRuntimeConfigKey: z.string().trim().min(1).optional(),\n});\n\nexport type UpdateAgentInstructionsPath = z.infer<typeof updateAgentInstructionsPathSchema>;\n\nexport const createAgentKeySchema = z.object({\n name: z.string().min(1).default(\"default\"),\n});\n\nexport type CreateAgentKey = z.infer<typeof createAgentKeySchema>;\n\nexport const wakeAgentSchema = z.object({\n source: z.enum([\"timer\", \"assignment\", \"review\", \"on_demand\", \"automation\"]).optional().default(\"on_demand\"),\n triggerDetail: z.enum([\"manual\", \"ping\", \"callback\", \"system\"]).optional(),\n reason: z.string().optional().nullable(),\n payload: z.record(z.unknown()).optional().nullable(),\n idempotencyKey: z.string().optional().nullable(),\n forceFreshSession: z.preprocess(\n (value) => (value === null ? undefined : value),\n z.boolean().optional().default(false),\n ),\n});\n\nexport type WakeAgent = z.infer<typeof wakeAgentSchema>;\n\nexport const resetAgentSessionSchema = z.object({\n taskKey: z.string().min(1).optional().nullable(),\n});\n\nexport type ResetAgentSession = z.infer<typeof resetAgentSessionSchema>;\n\nexport const testAgentRuntimeEnvironmentSchema = z.object({\n agentRuntimeConfig: agentRuntimeConfigSchema.optional().default({}),\n});\n\nexport type TestAgentRuntimeEnvironment = z.infer<typeof testAgentRuntimeEnvironmentSchema>;\n\nexport const updateAgentPermissionsSchema = z.object({\n canCreateAgents: z.boolean(),\n canAssignTasks: z.boolean(),\n});\n\nexport type UpdateAgentPermissions = z.infer<typeof updateAgentPermissionsSchema>;\n", "import { z } from \"zod\";\nimport { PROJECT_COLORS, PROJECT_STATUSES } from \"../constants.js\";\nimport {\n createProjectInlineResourceSchema,\n projectResourceAttachmentInputSchema,\n} from \"./resource.js\";\n\nconst executionWorkspaceStrategySchema = z\n .object({\n type: z.enum([\"project_primary\", \"git_worktree\", \"adapter_managed\", \"cloud_sandbox\"]).optional(),\n baseRef: z.string().optional().nullable(),\n branchTemplate: z.string().optional().nullable(),\n worktreeParentDir: z.string().optional().nullable(),\n provisionCommand: z.string().optional().nullable(),\n teardownCommand: z.string().optional().nullable(),\n })\n .strict();\n\nexport const projectExecutionWorkspacePolicySchema = z\n .object({\n enabled: z.boolean(),\n defaultMode: z.enum([\"shared_workspace\", \"isolated_workspace\", \"operator_branch\", \"adapter_default\"]).optional(),\n allowIssueOverride: z.boolean().optional(),\n defaultProjectWorkspaceId: z.string().uuid().optional().nullable(),\n workspaceStrategy: executionWorkspaceStrategySchema.optional().nullable(),\n workspaceRuntime: z.record(z.unknown()).optional().nullable(),\n branchPolicy: z.record(z.unknown()).optional().nullable(),\n pullRequestPolicy: z.record(z.unknown()).optional().nullable(),\n runtimePolicy: z.record(z.unknown()).optional().nullable(),\n cleanupPolicy: z.record(z.unknown()).optional().nullable(),\n })\n .strict();\n\nconst projectWorkspaceSourceTypeSchema = z.enum([\"local_path\", \"git_repo\", \"remote_managed\", \"non_git_path\"]);\nconst projectWorkspaceVisibilitySchema = z.enum([\"default\", \"advanced\"]);\n\nconst projectWorkspaceFields = {\n name: z.string().min(1).optional(),\n sourceType: projectWorkspaceSourceTypeSchema.optional(),\n cwd: z.string().min(1).optional().nullable(),\n repoUrl: z.string().url().optional().nullable(),\n repoRef: z.string().optional().nullable(),\n defaultRef: z.string().optional().nullable(),\n visibility: projectWorkspaceVisibilitySchema.optional(),\n setupCommand: z.string().optional().nullable(),\n cleanupCommand: z.string().optional().nullable(),\n remoteProvider: z.string().optional().nullable(),\n remoteWorkspaceRef: z.string().optional().nullable(),\n sharedWorkspaceKey: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n};\n\nconst projectColorValues = new Set<string>(PROJECT_COLORS);\nconst legacyProjectColorSchema = z.string().regex(/^#[0-9a-fA-F]{6}$/);\nconst projectColorSchema = z.string().refine(\n (value) => legacyProjectColorSchema.safeParse(value).success || projectColorValues.has(value),\n \"Color must be a 6-digit hex value or a supported project gradient\",\n);\n\nfunction validateProjectWorkspace(value: Record<string, unknown>, ctx: z.RefinementCtx) {\n const sourceType = value.sourceType ?? \"local_path\";\n const hasCwd = typeof value.cwd === \"string\" && value.cwd.trim().length > 0;\n const hasRepo = typeof value.repoUrl === \"string\" && value.repoUrl.trim().length > 0;\n const hasRemoteRef = typeof value.remoteWorkspaceRef === \"string\" && value.remoteWorkspaceRef.trim().length > 0;\n\n if (sourceType === \"remote_managed\") {\n if (!hasRemoteRef && !hasRepo) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Remote-managed workspace requires remoteWorkspaceRef or repoUrl.\",\n path: [\"remoteWorkspaceRef\"],\n });\n }\n return;\n }\n\n if (!hasCwd && !hasRepo) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Workspace requires at least one of cwd or repoUrl.\",\n path: [\"cwd\"],\n });\n }\n}\n\nexport const createProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional().default(false),\n}).superRefine(validateProjectWorkspace);\n\nexport type CreateProjectWorkspace = z.infer<typeof createProjectWorkspaceSchema>;\n\nexport const updateProjectWorkspaceSchema = z.object({\n ...projectWorkspaceFields,\n isPrimary: z.boolean().optional(),\n}).partial();\n\nexport type UpdateProjectWorkspace = z.infer<typeof updateProjectWorkspaceSchema>;\n\nconst projectFields = {\n /** @deprecated Use goalIds instead */\n goalId: z.string().uuid().optional().nullable(),\n goalIds: z.array(z.string().uuid()).optional(),\n name: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(PROJECT_STATUSES).optional().default(\"backlog\"),\n leadAgentId: z.string().uuid().optional().nullable(),\n targetDate: z.string().optional().nullable(),\n color: projectColorSchema.optional().nullable(),\n executionWorkspacePolicy: projectExecutionWorkspacePolicySchema.optional().nullable(),\n resourceAttachments: z.array(projectResourceAttachmentInputSchema).optional(),\n newResources: z.array(createProjectInlineResourceSchema).optional(),\n archivedAt: z.string().datetime().optional().nullable(),\n};\n\nexport const createProjectSchema = z.object({\n ...projectFields,\n});\n\nexport type CreateProject = z.infer<typeof createProjectSchema>;\n\nexport const updateProjectSchema = z.object(projectFields).partial();\n\nexport type UpdateProject = z.infer<typeof updateProjectSchema>;\n\nexport type ProjectExecutionWorkspacePolicy = z.infer<typeof projectExecutionWorkspacePolicySchema>;\n", "import { z } from \"zod\";\nimport { ISSUE_PRIORITIES, ISSUE_STATUSES } from \"../constants.js\";\n\nconst executionWorkspaceStrategySchema = z\n .object({\n type: z.enum([\"project_primary\", \"git_worktree\", \"adapter_managed\", \"cloud_sandbox\"]).optional(),\n baseRef: z.string().optional().nullable(),\n branchTemplate: z.string().optional().nullable(),\n worktreeParentDir: z.string().optional().nullable(),\n provisionCommand: z.string().optional().nullable(),\n teardownCommand: z.string().optional().nullable(),\n })\n .strict();\n\nexport const issueExecutionWorkspaceSettingsSchema = z\n .object({\n mode: z.enum([\"inherit\", \"shared_workspace\", \"isolated_workspace\", \"operator_branch\", \"reuse_existing\", \"agent_default\"]).optional(),\n workspaceStrategy: executionWorkspaceStrategySchema.optional().nullable(),\n workspaceRuntime: z.record(z.unknown()).optional().nullable(),\n })\n .strict();\n\nexport const issueAssigneeAdapterOverridesSchema = z\n .object({\n agentRuntimeConfig: z.record(z.unknown()).optional(),\n useProjectWorkspace: z.boolean().optional(),\n })\n .strict();\n\nexport const createIssueSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n projectWorkspaceId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n parentId: z.string().uuid().optional().nullable(),\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n status: z.enum(ISSUE_STATUSES).optional().default(\"backlog\"),\n priority: z.enum(ISSUE_PRIORITIES).optional().default(\"medium\"),\n assigneeAgentId: z.string().uuid().optional().nullable(),\n assigneeUserId: z.string().optional().nullable(),\n reviewerAgentId: z.string().uuid().optional().nullable(),\n reviewerUserId: z.string().optional().nullable(),\n requestDepth: z.number().int().nonnegative().optional().default(0),\n billingCode: z.string().optional().nullable(),\n assigneeAgentRuntimeOverrides: issueAssigneeAdapterOverridesSchema.optional().nullable(),\n executionWorkspaceId: z.string().uuid().optional().nullable(),\n executionWorkspacePreference: z.enum([\n \"inherit\",\n \"shared_workspace\",\n \"isolated_workspace\",\n \"operator_branch\",\n \"reuse_existing\",\n \"agent_default\",\n ]).optional().nullable(),\n executionWorkspaceSettings: issueExecutionWorkspaceSettingsSchema.optional().nullable(),\n labelIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateIssue = z.infer<typeof createIssueSchema>;\n\nexport const createIssueLabelSchema = z.object({\n name: z.string().trim().min(1).max(48),\n color: z.string().regex(/^#(?:[0-9a-fA-F]{6})$/, \"Color must be a 6-digit hex value\"),\n});\n\nexport type CreateIssueLabel = z.infer<typeof createIssueLabelSchema>;\n\nexport const updateIssueLabelSchema = createIssueLabelSchema.partial().refine(\n (value) => value.name !== undefined || value.color !== undefined,\n {\n message: \"At least one label field must be provided\",\n },\n);\n\nexport type UpdateIssueLabel = z.infer<typeof updateIssueLabelSchema>;\n\nexport const updateIssueSchema = createIssueSchema.partial().extend({\n comment: z.string().min(1).optional(),\n reopen: z.boolean().optional(),\n hiddenAt: z.string().datetime().nullable().optional(),\n reviewDecision: z.enum([\"approve\", \"request_changes\", \"needs_followup\", \"blocked\"]).optional(),\n});\n\nexport type UpdateIssue = z.infer<typeof updateIssueSchema>;\nexport type IssueExecutionWorkspaceSettings = z.infer<typeof issueExecutionWorkspaceSettingsSchema>;\n\nexport const reorderIssueSchema = z\n .object({\n issueId: z.string().uuid(),\n targetStatus: z.enum(ISSUE_STATUSES),\n previousIssueId: z.string().uuid().optional().nullable(),\n nextIssueId: z.string().uuid().optional().nullable(),\n position: z.enum([\"start\", \"end\"]).optional(),\n })\n .refine(\n (value) => !(value.previousIssueId && value.nextIssueId && value.previousIssueId === value.nextIssueId),\n {\n message: \"previousIssueId and nextIssueId must be different\",\n },\n );\n\nexport type ReorderIssue = z.infer<typeof reorderIssueSchema>;\n\nexport const checkoutIssueSchema = z.object({\n agentId: z.string().uuid(),\n expectedStatuses: z.array(z.enum(ISSUE_STATUSES)).nonempty(),\n});\n\nexport type CheckoutIssue = z.infer<typeof checkoutIssueSchema>;\n\nexport const addIssueCommentSchema = z.object({\n body: z.string().min(1),\n reopen: z.boolean().optional(),\n interrupt: z.boolean().optional(),\n});\n\nexport type AddIssueComment = z.infer<typeof addIssueCommentSchema>;\n\nexport const reportIssueCommitSchema = z.object({\n sha: z.string().trim().regex(/^[0-9a-f]{7,64}$/i, \"Commit SHA must be 7 to 64 hexadecimal characters\"),\n message: z.string().trim().min(1).max(500),\n branch: z.string().trim().min(1).max(255).optional().nullable(),\n repoPath: z.string().trim().min(1).max(2048).optional().nullable(),\n workspacePath: z.string().trim().min(1).max(2048).optional().nullable(),\n commitCount: z.number().int().positive().max(1000).optional(),\n});\n\nexport type ReportIssueCommit = z.infer<typeof reportIssueCommitSchema>;\n\nexport const linkIssueApprovalSchema = z.object({\n approvalId: z.string().uuid(),\n});\n\nexport type LinkIssueApproval = z.infer<typeof linkIssueApprovalSchema>;\n\nexport const createIssueAttachmentMetadataSchema = z.object({\n issueCommentId: z.string().uuid().optional().nullable(),\n usage: z.enum([\"issue\", \"description_inline\", \"document_inline\", \"comment_inline\", \"comment_attachment\"]).optional(),\n});\n\nexport type CreateIssueAttachmentMetadata = z.infer<typeof createIssueAttachmentMetadataSchema>;\n\nexport const createIssueWorkspaceAttachmentSchema = z.object({\n path: z.string().trim().min(1).max(2048),\n});\n\nexport type CreateIssueWorkspaceAttachment = z.infer<typeof createIssueWorkspaceAttachmentSchema>;\n\nexport const ISSUE_DOCUMENT_FORMATS = [\"markdown\"] as const;\n\nexport const issueDocumentFormatSchema = z.enum(ISSUE_DOCUMENT_FORMATS);\n\nexport const issueDocumentKeySchema = z\n .string()\n .trim()\n .min(1)\n .max(64)\n .regex(/^[a-z0-9][a-z0-9_-]*$/, \"Document key must be lowercase letters, numbers, _ or -\");\n\nexport const upsertIssueDocumentSchema = z.object({\n title: z.string().trim().max(200).nullable().optional(),\n format: issueDocumentFormatSchema,\n body: z.string().max(524288),\n changeSummary: z.string().trim().max(500).nullable().optional(),\n baseRevisionId: z.string().uuid().nullable().optional(),\n});\n\nexport type IssueDocumentFormat = z.infer<typeof issueDocumentFormatSchema>;\nexport type UpsertIssueDocument = z.infer<typeof upsertIssueDocumentSchema>;\n", "import { z } from \"zod\";\n\nexport const issueWorkProductTypeSchema = z.enum([\n \"preview_url\",\n \"runtime_service\",\n \"pull_request\",\n \"branch\",\n \"commit\",\n \"artifact\",\n \"document\",\n]);\n\nexport const issueWorkProductStatusSchema = z.enum([\n \"active\",\n \"ready_for_review\",\n \"approved\",\n \"changes_requested\",\n \"merged\",\n \"closed\",\n \"failed\",\n \"archived\",\n \"draft\",\n]);\n\nexport const issueWorkProductReviewStateSchema = z.enum([\n \"none\",\n \"needs_board_review\",\n \"approved\",\n \"changes_requested\",\n]);\n\nexport const createIssueWorkProductSchema = z.object({\n projectId: z.string().uuid().optional().nullable(),\n executionWorkspaceId: z.string().uuid().optional().nullable(),\n runtimeServiceId: z.string().uuid().optional().nullable(),\n type: issueWorkProductTypeSchema,\n provider: z.string().min(1),\n externalId: z.string().optional().nullable(),\n title: z.string().min(1),\n url: z.string().url().optional().nullable(),\n status: issueWorkProductStatusSchema.default(\"active\"),\n reviewState: issueWorkProductReviewStateSchema.optional().default(\"none\"),\n isPrimary: z.boolean().optional().default(false),\n healthStatus: z.enum([\"unknown\", \"healthy\", \"unhealthy\"]).optional().default(\"unknown\"),\n summary: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n createdByRunId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateIssueWorkProduct = z.infer<typeof createIssueWorkProductSchema>;\n\nexport const updateIssueWorkProductSchema = createIssueWorkProductSchema.partial();\n\nexport type UpdateIssueWorkProduct = z.infer<typeof updateIssueWorkProductSchema>;\n", "import { z } from \"zod\";\n\nexport const executionWorkspaceStatusSchema = z.enum([\n \"active\",\n \"idle\",\n \"in_review\",\n \"archived\",\n \"cleanup_failed\",\n]);\n\nexport const updateExecutionWorkspaceSchema = z.object({\n status: executionWorkspaceStatusSchema.optional(),\n cleanupEligibleAt: z.string().datetime().optional().nullable(),\n cleanupReason: z.string().optional().nullable(),\n metadata: z.record(z.unknown()).optional().nullable(),\n}).strict();\n\nexport type UpdateExecutionWorkspace = z.infer<typeof updateExecutionWorkspaceSchema>;\n", "import { z } from \"zod\";\n\nexport const workspaceBackupTriggerSourceSchema = z.enum([\"manual\", \"scheduled\", \"pre_restore\"]);\n\nexport const createWorkspaceBackupSchema = z.object({\n triggerSource: workspaceBackupTriggerSourceSchema.optional().default(\"manual\"),\n}).strict();\n\nexport const restoreWorkspaceBackupSchema = z.object({\n confirm: z.literal(true),\n}).strict();\n\nexport type CreateWorkspaceBackup = z.infer<typeof createWorkspaceBackupSchema>;\nexport type RestoreWorkspaceBackup = z.infer<typeof restoreWorkspaceBackupSchema>;\n", "import { z } from \"zod\";\nimport { GOAL_LEVELS, GOAL_STATUSES } from \"../constants.js\";\n\nexport const createGoalSchema = z.object({\n title: z.string().min(1),\n description: z.string().optional().nullable(),\n level: z.enum(GOAL_LEVELS).optional().default(\"task\"),\n status: z.enum(GOAL_STATUSES).optional().default(\"planned\"),\n parentId: z.string().uuid().optional().nullable(),\n ownerAgentId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateGoal = z.infer<typeof createGoalSchema>;\n\nexport const updateGoalSchema = createGoalSchema.partial();\n\nexport type UpdateGoal = z.infer<typeof updateGoalSchema>;\n", "import { z } from \"zod\";\nimport { APPROVAL_TYPES } from \"../constants.js\";\n\nexport const createApprovalSchema = z.object({\n type: z.enum(APPROVAL_TYPES),\n requestedByAgentId: z.string().uuid().optional().nullable(),\n payload: z.record(z.unknown()),\n issueIds: z.array(z.string().uuid()).optional(),\n});\n\nexport type CreateApproval = z.infer<typeof createApprovalSchema>;\n\nexport const resolveApprovalSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n payload: z.record(z.unknown()).optional(),\n});\n\nexport type ResolveApproval = z.infer<typeof resolveApprovalSchema>;\n\nexport const requestApprovalRevisionSchema = z.object({\n decisionNote: z.string().optional().nullable(),\n decidedByUserId: z.string().optional().default(\"board\"),\n});\n\nexport type RequestApprovalRevision = z.infer<typeof requestApprovalRevisionSchema>;\n\nexport const resubmitApprovalSchema = z.object({\n payload: z.record(z.unknown()).optional(),\n});\n\nexport type ResubmitApproval = z.infer<typeof resubmitApprovalSchema>;\n\nexport const addApprovalCommentSchema = z.object({\n body: z.string().min(1),\n});\n\nexport type AddApprovalComment = z.infer<typeof addApprovalCommentSchema>;\n", "import { z } from \"zod\";\nimport {\n ISSUE_PRIORITIES,\n AUTOMATION_CATCH_UP_POLICIES,\n AUTOMATION_CONCURRENCY_POLICIES,\n AUTOMATION_OUTPUT_MODES,\n AUTOMATION_STATUSES,\n AUTOMATION_TRIGGER_SIGNING_MODES,\n} from \"../constants.js\";\n\nconst automationBodySchema = z.object({\n projectId: z.string().uuid().optional().nullable().default(null),\n goalId: z.string().uuid().optional().nullable(),\n parentIssueId: z.string().uuid().optional().nullable(),\n title: z.string().trim().min(1).max(200),\n description: z.string().optional().nullable(),\n assigneeAgentId: z.string().uuid(),\n priority: z.enum(ISSUE_PRIORITIES).optional().default(\"medium\"),\n status: z.enum(AUTOMATION_STATUSES).optional().default(\"active\"),\n concurrencyPolicy: z.enum(AUTOMATION_CONCURRENCY_POLICIES).optional().default(\"coalesce_if_active\"),\n catchUpPolicy: z.enum(AUTOMATION_CATCH_UP_POLICIES).optional().default(\"skip_missed\"),\n outputMode: z.enum(AUTOMATION_OUTPUT_MODES).optional().default(\"track_issue\"),\n chatConversationId: z.string().uuid().optional().nullable().default(null),\n});\n\nexport const createAutomationSchema = automationBodySchema.superRefine((value, ctx) => {\n if (value.chatConversationId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"chatConversationId\"],\n message: \"Chat output creates an automation-owned conversation; existing chats cannot be selected\",\n });\n }\n});\n\nexport type CreateAutomation = z.infer<typeof createAutomationSchema>;\n\nexport const updateAutomationSchema = automationBodySchema.partial().superRefine((value, ctx) => {\n if (value.chatConversationId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"chatConversationId\"],\n message: \"Chat output creates an automation-owned conversation; existing chats cannot be selected\",\n });\n }\n});\nexport type UpdateAutomation = z.infer<typeof updateAutomationSchema>;\n\nconst baseTriggerSchema = z.object({\n label: z.string().trim().max(120).optional().nullable(),\n enabled: z.boolean().optional().default(true),\n});\n\nexport const createAutomationTriggerSchema = z.discriminatedUnion(\"kind\", [\n baseTriggerSchema.extend({\n kind: z.literal(\"schedule\"),\n cronExpression: z.string().trim().min(1),\n timezone: z.string().trim().min(1).default(\"UTC\"),\n }),\n baseTriggerSchema.extend({\n kind: z.literal(\"webhook\"),\n signingMode: z.enum(AUTOMATION_TRIGGER_SIGNING_MODES).optional().default(\"bearer\"),\n replayWindowSec: z.number().int().min(30).max(86_400).optional().default(300),\n }),\n baseTriggerSchema.extend({\n kind: z.literal(\"api\"),\n }),\n]);\n\nexport type CreateAutomationTrigger = z.infer<typeof createAutomationTriggerSchema>;\n\nexport const updateAutomationTriggerSchema = z.object({\n label: z.string().trim().max(120).optional().nullable(),\n enabled: z.boolean().optional(),\n cronExpression: z.string().trim().min(1).optional().nullable(),\n timezone: z.string().trim().min(1).optional().nullable(),\n signingMode: z.enum(AUTOMATION_TRIGGER_SIGNING_MODES).optional().nullable(),\n replayWindowSec: z.number().int().min(30).max(86_400).optional().nullable(),\n});\n\nexport type UpdateAutomationTrigger = z.infer<typeof updateAutomationTriggerSchema>;\n\nexport const runAutomationSchema = z.object({\n triggerId: z.string().uuid().optional().nullable(),\n payload: z.record(z.unknown()).optional().nullable(),\n idempotencyKey: z.string().trim().max(255).optional().nullable(),\n source: z.enum([\"manual\", \"api\"]).optional().default(\"manual\"),\n});\n\nexport type RunAutomation = z.infer<typeof runAutomationSchema>;\n\nexport const rotateAutomationTriggerSecretSchema = z.object({});\nexport type RotateAutomationTriggerSecret = z.infer<typeof rotateAutomationTriggerSecretSchema>;\n", "import { z } from \"zod\";\nimport {\n CALENDAR_EVENT_KINDS,\n CALENDAR_EVENT_STATUSES,\n CALENDAR_OWNER_TYPES,\n CALENDAR_SOURCE_MODES,\n CALENDAR_SOURCE_STATUSES,\n CALENDAR_SOURCE_TYPES,\n CALENDAR_VISIBILITIES,\n} from \"../constants.js\";\n\nconst nullableUuid = z.string().uuid().optional().nullable();\n\nexport const createCalendarSourceSchema = z.object({\n type: z.enum(CALENDAR_SOURCE_TYPES).optional().default(\"rudder_local\"),\n name: z.string().trim().min(1).max(160),\n ownerType: z.enum(CALENDAR_OWNER_TYPES).optional().default(\"user\"),\n ownerUserId: z.string().trim().min(1).optional().nullable(),\n ownerAgentId: nullableUuid,\n externalProvider: z.string().trim().min(1).max(80).optional().nullable(),\n externalCalendarId: z.string().trim().min(1).max(512).optional().nullable(),\n visibilityDefault: z.enum(CALENDAR_VISIBILITIES).optional().default(\"full\"),\n status: z.enum(CALENDAR_SOURCE_STATUSES).optional().default(\"active\"),\n syncCursorJson: z.record(z.unknown()).optional().nullable(),\n});\n\nexport type CreateCalendarSource = z.infer<typeof createCalendarSourceSchema>;\n\nexport const updateCalendarSourceSchema = createCalendarSourceSchema.partial().extend({\n lastSyncedAt: z.coerce.date().optional().nullable(),\n});\n\nexport type UpdateCalendarSource = z.infer<typeof updateCalendarSourceSchema>;\n\nconst calendarEventBaseSchema = z.object({\n sourceId: nullableUuid,\n eventKind: z.enum(CALENDAR_EVENT_KINDS),\n eventStatus: z.enum(CALENDAR_EVENT_STATUSES).optional().default(\"planned\"),\n ownerType: z.enum(CALENDAR_OWNER_TYPES),\n ownerUserId: z.string().trim().min(1).optional().nullable(),\n ownerAgentId: nullableUuid,\n title: z.string().trim().min(1).max(240),\n description: z.string().optional().nullable(),\n startAt: z.coerce.date(),\n endAt: z.coerce.date(),\n timezone: z.string().trim().min(1).max(80).optional().default(\"UTC\"),\n allDay: z.boolean().optional().default(false),\n visibility: z.enum(CALENDAR_VISIBILITIES).optional().default(\"full\"),\n issueId: nullableUuid,\n projectId: nullableUuid,\n goalId: nullableUuid,\n approvalId: nullableUuid,\n heartbeatRunId: nullableUuid,\n activityId: nullableUuid,\n sourceMode: z.enum(CALENDAR_SOURCE_MODES).optional().default(\"manual\"),\n externalProvider: z.string().trim().min(1).max(80).optional().nullable(),\n externalCalendarId: z.string().trim().min(1).max(512).optional().nullable(),\n externalEventId: z.string().trim().min(1).max(512).optional().nullable(),\n externalEtag: z.string().trim().min(1).max(512).optional().nullable(),\n externalUpdatedAt: z.coerce.date().optional().nullable(),\n});\n\nexport const createCalendarEventSchema = calendarEventBaseSchema.refine(\n (value) => value.endAt.getTime() > value.startAt.getTime(),\n { path: [\"endAt\"], message: \"End time must be after start time\" },\n);\n\nexport type CreateCalendarEvent = z.infer<typeof createCalendarEventSchema>;\n\nexport const updateCalendarEventSchema = calendarEventBaseSchema\n .partial()\n .refine(\n (value) =>\n value.startAt === undefined ||\n value.endAt === undefined ||\n value.endAt.getTime() > value.startAt.getTime(),\n { path: [\"endAt\"], message: \"End time must be after start time\" },\n );\n\nexport type UpdateCalendarEvent = z.infer<typeof updateCalendarEventSchema>;\n\nexport const calendarEventListQuerySchema = z.object({\n start: z.coerce.date(),\n end: z.coerce.date(),\n agentIds: z.string().optional(),\n sourceIds: z.string().optional(),\n eventKinds: z.string().optional(),\n statuses: z.string().optional(),\n}).refine(\n (value) => value.end.getTime() > value.start.getTime(),\n { path: [\"end\"], message: \"End time must be after start time\" },\n);\n\nexport type CalendarEventListQuery = z.infer<typeof calendarEventListQuerySchema>;\n\nexport const googleCalendarSyncSchema = z.object({\n sourceId: z.string().uuid().optional().nullable(),\n});\n\nexport type GoogleCalendarSync = z.infer<typeof googleCalendarSyncSchema>;\n\nexport const updateGoogleCalendarOAuthConfigSchema = z.object({\n clientId: z.string().trim().min(1).max(512).optional(),\n clientSecret: z.string().trim().min(1).max(2048).optional(),\n clear: z.boolean().optional().default(false),\n}).refine(\n (value) => value.clear || value.clientId !== undefined || value.clientSecret !== undefined,\n { message: \"Provide credentials or clear the stored Google Calendar OAuth configuration\" },\n);\n\nexport type UpdateGoogleCalendarOAuthConfig = z.input<typeof updateGoogleCalendarOAuthConfigSchema>;\n", "import { z } from \"zod\";\nimport { BILLING_TYPES } from \"../constants.js\";\n\nexport const createCostEventSchema = z.object({\n agentId: z.string().uuid(),\n issueId: z.string().uuid().optional().nullable(),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n heartbeatRunId: z.string().uuid().optional().nullable(),\n billingCode: z.string().optional().nullable(),\n provider: z.string().min(1),\n biller: z.string().min(1).optional(),\n billingType: z.enum(BILLING_TYPES).optional().default(\"unknown\"),\n model: z.string().min(1),\n inputTokens: z.number().int().nonnegative().optional().default(0),\n cachedInputTokens: z.number().int().nonnegative().optional().default(0),\n outputTokens: z.number().int().nonnegative().optional().default(0),\n costCents: z.number().int().nonnegative(),\n occurredAt: z.string().datetime(),\n}).transform((value) => ({\n ...value,\n biller: value.biller ?? value.provider,\n}));\n\nexport type CreateCostEvent = z.infer<typeof createCostEventSchema>;\n\nexport const updateBudgetSchema = z.object({\n budgetMonthlyCents: z.number().int().nonnegative(),\n});\n\nexport type UpdateBudget = z.infer<typeof updateBudgetSchema>;\n", "import { z } from \"zod\";\nimport { AGENT_RUNTIME_TYPES, FINANCE_DIRECTIONS, FINANCE_EVENT_KINDS, FINANCE_UNITS } from \"../constants.js\";\n\nexport const createFinanceEventSchema = z.object({\n agentId: z.string().uuid().optional().nullable(),\n issueId: z.string().uuid().optional().nullable(),\n projectId: z.string().uuid().optional().nullable(),\n goalId: z.string().uuid().optional().nullable(),\n heartbeatRunId: z.string().uuid().optional().nullable(),\n costEventId: z.string().uuid().optional().nullable(),\n billingCode: z.string().optional().nullable(),\n description: z.string().max(500).optional().nullable(),\n eventKind: z.enum(FINANCE_EVENT_KINDS),\n direction: z.enum(FINANCE_DIRECTIONS).optional().default(\"debit\"),\n biller: z.string().min(1),\n provider: z.string().min(1).optional().nullable(),\n executionAgentRuntimeType: z.enum(AGENT_RUNTIME_TYPES).optional().nullable(),\n pricingTier: z.string().min(1).optional().nullable(),\n region: z.string().min(1).optional().nullable(),\n model: z.string().min(1).optional().nullable(),\n quantity: z.number().int().nonnegative().optional().nullable(),\n unit: z.enum(FINANCE_UNITS).optional().nullable(),\n amountCents: z.number().int().nonnegative(),\n currency: z.string().length(3).optional().default(\"USD\"),\n estimated: z.boolean().optional().default(false),\n externalInvoiceId: z.string().optional().nullable(),\n metadataJson: z.record(z.string(), z.unknown()).optional().nullable(),\n occurredAt: z.string().datetime(),\n}).transform((value) => ({\n ...value,\n currency: value.currency.toUpperCase(),\n}));\n\nexport type CreateFinanceEvent = z.infer<typeof createFinanceEventSchema>;\n", "import { z } from \"zod\";\n\nexport const createAssetImageMetadataSchema = z.object({\n namespace: z\n .string()\n .trim()\n .min(1)\n .max(120)\n .regex(/^[a-zA-Z0-9/_-]+$/)\n .optional(),\n});\n\nexport type CreateAssetImageMetadata = z.infer<typeof createAssetImageMetadataSchema>;\n\n", "import { z } from \"zod\";\nimport {\n AGENT_RUNTIME_TYPES,\n INVITE_JOIN_TYPES,\n JOIN_REQUEST_STATUSES,\n JOIN_REQUEST_TYPES,\n PERMISSION_KEYS,\n} from \"../constants.js\";\n\nexport const createCompanyInviteSchema = z.object({\n allowedJoinTypes: z.enum(INVITE_JOIN_TYPES).default(\"both\"),\n defaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n agentMessage: z.string().max(4000).optional().nullable(),\n});\n\nexport type CreateCompanyInvite = z.infer<typeof createCompanyInviteSchema>;\n\nexport const createOpenClawInvitePromptSchema = z.object({\n agentMessage: z.string().max(4000).optional().nullable(),\n});\n\nexport type CreateOpenClawInvitePrompt = z.infer<\n typeof createOpenClawInvitePromptSchema\n>;\n\nexport const acceptInviteSchema = z.object({\n requestType: z.enum(JOIN_REQUEST_TYPES),\n agentName: z.string().min(1).max(120).optional(),\n agentRuntimeType: z.enum(AGENT_RUNTIME_TYPES).optional(),\n capabilities: z.string().max(4000).optional().nullable(),\n agentDefaultsPayload: z.record(z.string(), z.unknown()).optional().nullable(),\n // OpenClaw join compatibility fields accepted at top level.\n responsesWebhookUrl: z.string().max(4000).optional().nullable(),\n responsesWebhookMethod: z.string().max(32).optional().nullable(),\n responsesWebhookHeaders: z.record(z.string(), z.unknown()).optional().nullable(),\n rudderApiUrl: z.string().max(4000).optional().nullable(),\n webhookAuthHeader: z.string().max(4000).optional().nullable(),\n});\n\nexport type AcceptInvite = z.infer<typeof acceptInviteSchema>;\n\nexport const listJoinRequestsQuerySchema = z.object({\n status: z.enum(JOIN_REQUEST_STATUSES).optional(),\n requestType: z.enum(JOIN_REQUEST_TYPES).optional(),\n});\n\nexport type ListJoinRequestsQuery = z.infer<typeof listJoinRequestsQuerySchema>;\n\nexport const claimJoinRequestApiKeySchema = z.object({\n claimSecret: z.string().min(16).max(256),\n});\n\nexport type ClaimJoinRequestApiKey = z.infer<typeof claimJoinRequestApiKeySchema>;\n\nexport const boardCliAuthAccessLevelSchema = z.enum([\n \"board\",\n \"instance_admin_required\",\n]);\n\nexport type BoardCliAuthAccessLevel = z.infer<typeof boardCliAuthAccessLevelSchema>;\n\nexport const createCliAuthChallengeSchema = z.object({\n command: z.string().min(1).max(240),\n clientName: z.string().max(120).optional().nullable(),\n requestedAccess: boardCliAuthAccessLevelSchema.default(\"board\"),\n requestedCompanyId: z.string().uuid().optional().nullable(),\n});\n\nexport type CreateCliAuthChallenge = z.infer<typeof createCliAuthChallengeSchema>;\n\nexport const resolveCliAuthChallengeSchema = z.object({\n token: z.string().min(16).max(256),\n});\n\nexport type ResolveCliAuthChallenge = z.infer<typeof resolveCliAuthChallengeSchema>;\n\nexport const updateMemberPermissionsSchema = z.object({\n grants: z.array(\n z.object({\n permissionKey: z.enum(PERMISSION_KEYS),\n scope: z.record(z.string(), z.unknown()).optional().nullable(),\n }),\n ),\n});\n\nexport type UpdateMemberPermissions = z.infer<typeof updateMemberPermissionsSchema>;\n\nexport const updateUserCompanyAccessSchema = z.object({\n orgIds: z.array(z.string().uuid()).default([]),\n});\n\nexport type UpdateUserCompanyAccess = z.infer<typeof updateUserCompanyAccessSchema>;\n", "import { z } from \"zod\";\nimport {\n PLUGIN_STATUSES,\n PLUGIN_CATEGORIES,\n PLUGIN_CAPABILITIES,\n PLUGIN_UI_SLOT_TYPES,\n PLUGIN_UI_SLOT_ENTITY_TYPES,\n PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS,\n PLUGIN_LAUNCHER_PLACEMENT_ZONES,\n PLUGIN_LAUNCHER_ACTIONS,\n PLUGIN_LAUNCHER_BOUNDS,\n PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS,\n PLUGIN_STATE_SCOPE_KINDS,\n} from \"../constants.js\";\n\n// ---------------------------------------------------------------------------\n// JSON Schema placeholder \u2013 a permissive validator for JSON Schema objects\n// ---------------------------------------------------------------------------\n\n/**\n * Permissive validator for JSON Schema objects. Accepts any `Record<string, unknown>`\n * that contains at least a `type`, `$ref`, or composition keyword (`oneOf`/`anyOf`/`allOf`).\n * Empty objects are also accepted.\n *\n * Used to validate `instanceConfigSchema` and `parametersSchema` fields in the\n * plugin manifest without fully parsing JSON Schema.\n *\n * @see PLUGIN_SPEC.md \u00A710.1 \u2014 Manifest shape\n */\nexport const jsonSchemaSchema = z.record(z.unknown()).refine(\n (val) => {\n // Must have a \"type\" field if non-empty, or be a valid JSON Schema object\n if (Object.keys(val).length === 0) return true;\n return typeof val.type === \"string\" || val.$ref !== undefined || val.oneOf !== undefined || val.anyOf !== undefined || val.allOf !== undefined;\n },\n { message: \"Must be a valid JSON Schema object (requires at least a 'type', '$ref', or composition keyword)\" },\n);\n\n// ---------------------------------------------------------------------------\n// Manifest sub-type schemas\n// ---------------------------------------------------------------------------\n\n/**\n * Validates a {@link PluginJobDeclaration} \u2014 a scheduled job declared in the\n * plugin manifest. Requires `jobKey` and `displayName`; `description` and\n * `schedule` (cron expression) are optional.\n *\n * @see PLUGIN_SPEC.md \u00A717 \u2014 Scheduled Jobs\n */\n/**\n * Validates a cron expression has exactly 5 whitespace-separated fields,\n * each containing only valid cron characters (digits, *, /, -, ,).\n *\n * Valid tokens per field: *, N, N-M, N/S, * /S, N-M/S, and comma-separated lists.\n */\nconst CRON_FIELD_PATTERN = /^(\\*(?:\\/[0-9]+)?|[0-9]+(?:-[0-9]+)?(?:\\/[0-9]+)?)(?:,(\\*(?:\\/[0-9]+)?|[0-9]+(?:-[0-9]+)?(?:\\/[0-9]+)?))*$/;\n\nfunction isValidCronExpression(expression: string): boolean {\n const trimmed = expression.trim();\n if (!trimmed) return false;\n const fields = trimmed.split(/\\s+/);\n if (fields.length !== 5) return false;\n return fields.every((f) => CRON_FIELD_PATTERN.test(f));\n}\n\nexport const pluginJobDeclarationSchema = z.object({\n jobKey: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().optional(),\n schedule: z.string().refine(\n (val) => isValidCronExpression(val),\n { message: \"schedule must be a valid 5-field cron expression (e.g. '*/15 * * * *')\" },\n ).optional(),\n});\n\nexport type PluginJobDeclarationInput = z.infer<typeof pluginJobDeclarationSchema>;\n\n/**\n * Validates a {@link PluginWebhookDeclaration} \u2014 a webhook endpoint declared\n * in the plugin manifest. Requires `endpointKey` and `displayName`.\n *\n * @see PLUGIN_SPEC.md \u00A718 \u2014 Webhooks\n */\nexport const pluginWebhookDeclarationSchema = z.object({\n endpointKey: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().optional(),\n});\n\nexport type PluginWebhookDeclarationInput = z.infer<typeof pluginWebhookDeclarationSchema>;\n\n/**\n * Validates a {@link PluginToolDeclaration} \u2014 an agent tool contributed by the\n * plugin. Requires `name`, `displayName`, `description`, and a valid\n * `parametersSchema`. Requires the `agent.tools.register` capability.\n *\n * @see PLUGIN_SPEC.md \u00A711 \u2014 Agent Tools\n */\nexport const pluginToolDeclarationSchema = z.object({\n name: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().min(1),\n parametersSchema: jsonSchemaSchema,\n});\n\nexport type PluginToolDeclarationInput = z.infer<typeof pluginToolDeclarationSchema>;\n\n/**\n * Validates a {@link PluginUiSlotDeclaration} \u2014 a UI extension slot the plugin\n * fills with a React component. Includes `superRefine` checks for slot-specific\n * requirements such as `entityTypes` for context-sensitive slots.\n *\n * @see PLUGIN_SPEC.md \u00A719 \u2014 UI Extension Model\n */\nexport const pluginUiSlotDeclarationSchema = z.object({\n type: z.enum(PLUGIN_UI_SLOT_TYPES),\n id: z.string().min(1),\n displayName: z.string().min(1),\n exportName: z.string().min(1),\n entityTypes: z.array(z.enum(PLUGIN_UI_SLOT_ENTITY_TYPES)).optional(),\n routePath: z.string().regex(/^[a-z0-9][a-z0-9-]*$/, {\n message: \"routePath must be a lowercase single-segment slug (letters, numbers, hyphens)\",\n }).optional(),\n order: z.number().int().optional(),\n}).superRefine((value, ctx) => {\n // context-sensitive slots require explicit entity targeting.\n const entityScopedTypes = [\"detailTab\", \"taskDetailView\", \"contextMenuItem\", \"commentAnnotation\", \"commentContextMenuItem\", \"projectSidebarItem\"];\n if (\n entityScopedTypes.includes(value.type)\n && (!value.entityTypes || value.entityTypes.length === 0)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${value.type} slots require at least one entityType`,\n path: [\"entityTypes\"],\n });\n }\n // projectSidebarItem only makes sense for entityType \"project\".\n if (value.type === \"projectSidebarItem\" && value.entityTypes && !value.entityTypes.includes(\"project\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"projectSidebarItem slots require entityTypes to include \\\"project\\\"\",\n path: [\"entityTypes\"],\n });\n }\n // commentAnnotation only makes sense for entityType \"comment\".\n if (value.type === \"commentAnnotation\" && value.entityTypes && !value.entityTypes.includes(\"comment\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"commentAnnotation slots require entityTypes to include \\\"comment\\\"\",\n path: [\"entityTypes\"],\n });\n }\n // commentContextMenuItem only makes sense for entityType \"comment\".\n if (value.type === \"commentContextMenuItem\" && value.entityTypes && !value.entityTypes.includes(\"comment\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"commentContextMenuItem slots require entityTypes to include \\\"comment\\\"\",\n path: [\"entityTypes\"],\n });\n }\n if (value.routePath && value.type !== \"page\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"routePath is only supported for page slots\",\n path: [\"routePath\"],\n });\n }\n if (value.routePath && PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS.includes(value.routePath as (typeof PLUGIN_RESERVED_COMPANY_ROUTE_SEGMENTS)[number])) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `routePath \"${value.routePath}\" is reserved by the host`,\n path: [\"routePath\"],\n });\n }\n});\n\nexport type PluginUiSlotDeclarationInput = z.infer<typeof pluginUiSlotDeclarationSchema>;\n\nconst entityScopedLauncherPlacementZones = [\n \"detailTab\",\n \"taskDetailView\",\n \"contextMenuItem\",\n \"commentAnnotation\",\n \"commentContextMenuItem\",\n \"projectSidebarItem\",\n] as const;\n\nconst launcherBoundsByEnvironment: Record<\n (typeof PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS)[number],\n readonly (typeof PLUGIN_LAUNCHER_BOUNDS)[number][]\n> = {\n hostInline: [\"inline\", \"compact\", \"default\"],\n hostOverlay: [\"compact\", \"default\", \"wide\", \"full\"],\n hostRoute: [\"default\", \"wide\", \"full\"],\n external: [],\n iframe: [\"compact\", \"default\", \"wide\", \"full\"],\n};\n\n/**\n * Validates the action payload for a declarative plugin launcher.\n */\nexport const pluginLauncherActionDeclarationSchema = z.object({\n type: z.enum(PLUGIN_LAUNCHER_ACTIONS),\n target: z.string().min(1),\n params: z.record(z.unknown()).optional(),\n}).superRefine((value, ctx) => {\n if (value.type === \"performAction\" && value.target.includes(\"/\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"performAction launchers must target an action key, not a route or URL\",\n path: [\"target\"],\n });\n }\n\n if (value.type === \"navigate\" && /^https?:\\/\\//.test(value.target)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"navigate launchers must target a host route, not an absolute URL\",\n path: [\"target\"],\n });\n }\n});\n\nexport type PluginLauncherActionDeclarationInput =\n z.infer<typeof pluginLauncherActionDeclarationSchema>;\n\n/**\n * Validates optional render hints for a plugin launcher destination.\n */\nexport const pluginLauncherRenderDeclarationSchema = z.object({\n environment: z.enum(PLUGIN_LAUNCHER_RENDER_ENVIRONMENTS),\n bounds: z.enum(PLUGIN_LAUNCHER_BOUNDS).optional(),\n}).superRefine((value, ctx) => {\n if (!value.bounds) {\n return;\n }\n\n const supportedBounds = launcherBoundsByEnvironment[value.environment];\n if (!supportedBounds.includes(value.bounds)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `bounds \"${value.bounds}\" is not supported for render environment \"${value.environment}\"`,\n path: [\"bounds\"],\n });\n }\n});\n\nexport type PluginLauncherRenderDeclarationInput =\n z.infer<typeof pluginLauncherRenderDeclarationSchema>;\n\n/**\n * Validates declarative launcher metadata in a plugin manifest.\n */\nexport const pluginLauncherDeclarationSchema = z.object({\n id: z.string().min(1),\n displayName: z.string().min(1),\n description: z.string().optional(),\n placementZone: z.enum(PLUGIN_LAUNCHER_PLACEMENT_ZONES),\n exportName: z.string().min(1).optional(),\n entityTypes: z.array(z.enum(PLUGIN_UI_SLOT_ENTITY_TYPES)).optional(),\n order: z.number().int().optional(),\n action: pluginLauncherActionDeclarationSchema,\n render: pluginLauncherRenderDeclarationSchema.optional(),\n}).superRefine((value, ctx) => {\n if (\n entityScopedLauncherPlacementZones.some((zone) => zone === value.placementZone)\n && (!value.entityTypes || value.entityTypes.length === 0)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${value.placementZone} launchers require at least one entityType`,\n path: [\"entityTypes\"],\n });\n }\n\n if (\n value.placementZone === \"projectSidebarItem\"\n && value.entityTypes\n && !value.entityTypes.includes(\"project\")\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"projectSidebarItem launchers require entityTypes to include \\\"project\\\"\",\n path: [\"entityTypes\"],\n });\n }\n\n if (value.action.type === \"performAction\" && value.render) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"performAction launchers cannot declare render hints\",\n path: [\"render\"],\n });\n }\n\n if (\n [\"openModal\", \"openDrawer\", \"openPopover\"].includes(value.action.type)\n && !value.render\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `${value.action.type} launchers require render metadata`,\n path: [\"render\"],\n });\n }\n\n if (value.action.type === \"openModal\" && value.render?.environment === \"hostInline\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"openModal launchers cannot use the hostInline render environment\",\n path: [\"render\", \"environment\"],\n });\n }\n\n if (\n value.action.type === \"openDrawer\"\n && value.render\n && ![\"hostOverlay\", \"iframe\"].includes(value.render.environment)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"openDrawer launchers must use hostOverlay or iframe render environments\",\n path: [\"render\", \"environment\"],\n });\n }\n\n if (value.action.type === \"openPopover\" && value.render?.environment === \"hostRoute\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"openPopover launchers cannot use the hostRoute render environment\",\n path: [\"render\", \"environment\"],\n });\n }\n});\n\nexport type PluginLauncherDeclarationInput = z.infer<typeof pluginLauncherDeclarationSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin Manifest V1 schema\n// ---------------------------------------------------------------------------\n\n/**\n * Zod schema for {@link PaperclipPluginManifestV1} \u2014 the complete runtime\n * validator for plugin manifests read at install time.\n *\n * Field-level constraints (see PLUGIN_SPEC.md \u00A710.1 for the normative rules):\n *\n * | Field | Type | Constraints |\n * |--------------------------|------------|----------------------------------------------|\n * | `id` | string | `^[a-z0-9][a-z0-9._-]*$` |\n * | `apiVersion` | literal 1 | must equal `PLUGIN_API_VERSION` |\n * | `version` | string | semver (`\\d+\\.\\d+\\.\\d+`) |\n * | `displayName` | string | 1\u2013100 chars |\n * | `description` | string | 1\u2013500 chars |\n * | `author` | string | 1\u2013200 chars |\n * | `categories` | enum[] | at least one; values from PLUGIN_CATEGORIES |\n * | `minimumHostVersion` | string? | semver lower bound if present, no leading `v`|\n * | `minimumPaperclipVersion`| string? | legacy alias of `minimumHostVersion` |\n * | `capabilities` | enum[] | at least one; values from PLUGIN_CAPABILITIES|\n * | `entrypoints.worker` | string | min 1 char |\n * | `entrypoints.ui` | string? | required when `ui.slots` is declared |\n *\n * Cross-field rules enforced via `superRefine`:\n * - `entrypoints.ui` required when `ui.slots` declared\n * - `agent.tools.register` capability required when `tools` declared\n * - `jobs.schedule` capability required when `jobs` declared\n * - `webhooks.receive` capability required when `webhooks` declared\n * - duplicate `jobs[].jobKey` values are rejected\n * - duplicate `webhooks[].endpointKey` values are rejected\n * - duplicate `tools[].name` values are rejected\n * - duplicate `ui.slots[].id` values are rejected\n *\n * @see PLUGIN_SPEC.md \u00A710.1 \u2014 Manifest shape\n * @see {@link PaperclipPluginManifestV1} \u2014 the inferred TypeScript type\n */\nexport const pluginManifestV1Schema = z.object({\n id: z.string().min(1).regex(\n /^[a-z0-9][a-z0-9._-]*$/,\n \"Plugin id must start with a lowercase alphanumeric and contain only lowercase letters, digits, dots, hyphens, or underscores\",\n ),\n apiVersion: z.literal(1),\n version: z.string().min(1).regex(\n /^\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$/,\n \"Version must follow semver (e.g. 1.0.0 or 1.0.0-beta.1)\",\n ),\n displayName: z.string().min(1).max(100),\n description: z.string().min(1).max(500),\n author: z.string().min(1).max(200),\n categories: z.array(z.enum(PLUGIN_CATEGORIES)).min(1),\n minimumHostVersion: z.string().regex(\n /^\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$/,\n \"minimumHostVersion must follow semver (e.g. 1.0.0)\",\n ).optional(),\n minimumPaperclipVersion: z.string().regex(\n /^\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$/,\n \"minimumPaperclipVersion must follow semver (e.g. 1.0.0)\",\n ).optional(),\n capabilities: z.array(z.enum(PLUGIN_CAPABILITIES)).min(1),\n entrypoints: z.object({\n worker: z.string().min(1),\n ui: z.string().min(1).optional(),\n }),\n instanceConfigSchema: jsonSchemaSchema.optional(),\n jobs: z.array(pluginJobDeclarationSchema).optional(),\n webhooks: z.array(pluginWebhookDeclarationSchema).optional(),\n tools: z.array(pluginToolDeclarationSchema).optional(),\n launchers: z.array(pluginLauncherDeclarationSchema).optional(),\n ui: z.object({\n slots: z.array(pluginUiSlotDeclarationSchema).min(1).optional(),\n launchers: z.array(pluginLauncherDeclarationSchema).optional(),\n }).optional(),\n}).superRefine((manifest, ctx) => {\n // \u2500\u2500 Entrypoint \u2194 UI slot consistency \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Plugins that declare UI slots must also declare a UI entrypoint so the\n // host knows where to load the bundle from (PLUGIN_SPEC.md \u00A710.1).\n const hasUiSlots = (manifest.ui?.slots?.length ?? 0) > 0;\n const hasUiLaunchers = (manifest.ui?.launchers?.length ?? 0) > 0;\n if ((hasUiSlots || hasUiLaunchers) && !manifest.entrypoints.ui) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"entrypoints.ui is required when ui.slots or ui.launchers are declared\",\n path: [\"entrypoints\", \"ui\"],\n });\n }\n\n if (\n manifest.minimumHostVersion\n && manifest.minimumPaperclipVersion\n && manifest.minimumHostVersion !== manifest.minimumPaperclipVersion\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"minimumHostVersion and minimumPaperclipVersion must match when both are declared\",\n path: [\"minimumHostVersion\"],\n });\n }\n\n // \u2500\u2500 Capability \u2194 feature declaration consistency \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // The host enforces capabilities at install and runtime. A plugin must\n // declare every capability it needs up-front; silently having more features\n // than capabilities would cause runtime rejections.\n\n // tools require agent.tools.register (PLUGIN_SPEC.md \u00A711)\n if (manifest.tools && manifest.tools.length > 0) {\n if (!manifest.capabilities.includes(\"agent.tools.register\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Capability 'agent.tools.register' is required when tools are declared\",\n path: [\"capabilities\"],\n });\n }\n }\n\n // jobs require jobs.schedule (PLUGIN_SPEC.md \u00A717)\n if (manifest.jobs && manifest.jobs.length > 0) {\n if (!manifest.capabilities.includes(\"jobs.schedule\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Capability 'jobs.schedule' is required when jobs are declared\",\n path: [\"capabilities\"],\n });\n }\n }\n\n // webhooks require webhooks.receive (PLUGIN_SPEC.md \u00A718)\n if (manifest.webhooks && manifest.webhooks.length > 0) {\n if (!manifest.capabilities.includes(\"webhooks.receive\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Capability 'webhooks.receive' is required when webhooks are declared\",\n path: [\"capabilities\"],\n });\n }\n }\n\n // \u2500\u2500 Uniqueness checks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Duplicate keys within a plugin's own manifest are always a bug. The host\n // would not know which declaration takes precedence, so we reject early.\n\n // job keys must be unique within the plugin (used as identifiers in the DB)\n if (manifest.jobs) {\n const jobKeys = manifest.jobs.map((j) => j.jobKey);\n const duplicates = jobKeys.filter((key, i) => jobKeys.indexOf(key) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate job keys: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"jobs\"],\n });\n }\n }\n\n // webhook endpoint keys must be unique within the plugin (used in routes)\n if (manifest.webhooks) {\n const endpointKeys = manifest.webhooks.map((w) => w.endpointKey);\n const duplicates = endpointKeys.filter((key, i) => endpointKeys.indexOf(key) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate webhook endpoint keys: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"webhooks\"],\n });\n }\n }\n\n // tool names must be unique within the plugin (namespaced at runtime)\n if (manifest.tools) {\n const toolNames = manifest.tools.map((t) => t.name);\n const duplicates = toolNames.filter((name, i) => toolNames.indexOf(name) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate tool names: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"tools\"],\n });\n }\n }\n\n // UI slot ids must be unique within the plugin (namespaced at runtime)\n if (manifest.ui) {\n if (manifest.ui.slots) {\n const slotIds = manifest.ui.slots.map((s) => s.id);\n const duplicates = slotIds.filter((id, i) => slotIds.indexOf(id) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate UI slot ids: ${[...new Set(duplicates)].join(\", \")}`,\n path: [\"ui\", \"slots\"],\n });\n }\n }\n }\n\n // launcher ids must be unique within the plugin\n const allLaunchers = [\n ...(manifest.launchers ?? []),\n ...(manifest.ui?.launchers ?? []),\n ];\n if (allLaunchers.length > 0) {\n const launcherIds = allLaunchers.map((launcher) => launcher.id);\n const duplicates = launcherIds.filter((id, i) => launcherIds.indexOf(id) !== i);\n if (duplicates.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate launcher ids: ${[...new Set(duplicates)].join(\", \")}`,\n path: manifest.ui?.launchers ? [\"ui\", \"launchers\"] : [\"launchers\"],\n });\n }\n }\n});\n\nexport type PluginManifestV1Input = z.infer<typeof pluginManifestV1Schema>;\n\n// ---------------------------------------------------------------------------\n// Plugin installation / registration request\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for installing (registering) a plugin.\n * The server receives the packageName and resolves the manifest from the\n * installed package.\n */\nexport const installPluginSchema = z.object({\n packageName: z.string().min(1),\n version: z.string().min(1).optional(),\n /** Set by loader for local-path installs so the worker can be resolved. */\n packagePath: z.string().min(1).optional(),\n});\n\nexport type InstallPlugin = z.infer<typeof installPluginSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin config (instance configuration) schemas\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for creating or updating a plugin's instance configuration.\n * configJson is validated permissively here; runtime validation against\n * the plugin's instanceConfigSchema is done at the service layer.\n */\nexport const upsertPluginConfigSchema = z.object({\n configJson: z.record(z.unknown()),\n});\n\nexport type UpsertPluginConfig = z.infer<typeof upsertPluginConfigSchema>;\n\n/**\n * Schema for partially updating a plugin's instance configuration.\n * Allows a partial merge of config values.\n */\nexport const patchPluginConfigSchema = z.object({\n configJson: z.record(z.unknown()),\n});\n\nexport type PatchPluginConfig = z.infer<typeof patchPluginConfigSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin status update\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for updating a plugin's lifecycle status. Used by the lifecycle\n * manager to persist state transitions.\n *\n * @see {@link PLUGIN_STATUSES} for the valid status values\n */\nexport const updatePluginStatusSchema = z.object({\n status: z.enum(PLUGIN_STATUSES),\n lastError: z.string().nullable().optional(),\n});\n\nexport type UpdatePluginStatus = z.infer<typeof updatePluginStatusSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin uninstall\n// ---------------------------------------------------------------------------\n\n/** Schema for the uninstall request. `removeData` controls hard vs soft delete. */\nexport const uninstallPluginSchema = z.object({\n removeData: z.boolean().optional().default(false),\n});\n\nexport type UninstallPlugin = z.infer<typeof uninstallPluginSchema>;\n\n// ---------------------------------------------------------------------------\n// Plugin state (key-value storage) schemas\n// ---------------------------------------------------------------------------\n\n/**\n * Schema for a plugin state scope key \u2014 identifies the exact location where\n * state is stored. Used by the `ctx.state.get()`, `ctx.state.set()`, and\n * `ctx.state.delete()` SDK methods.\n *\n * @see PLUGIN_SPEC.md \u00A721.3 `plugin_state`\n */\nexport const pluginStateScopeKeySchema = z.object({\n scopeKind: z.enum(PLUGIN_STATE_SCOPE_KINDS),\n scopeId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n stateKey: z.string().min(1),\n});\n\nexport type PluginStateScopeKey = z.infer<typeof pluginStateScopeKeySchema>;\n\n/**\n * Schema for setting a plugin state value.\n */\nexport const setPluginStateSchema = z.object({\n scopeKind: z.enum(PLUGIN_STATE_SCOPE_KINDS),\n scopeId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n stateKey: z.string().min(1),\n /** JSON-serializable value to store. */\n value: z.unknown(),\n});\n\nexport type SetPluginState = z.infer<typeof setPluginStateSchema>;\n\n/**\n * Schema for querying plugin state entries. All fields are optional to allow\n * flexible list queries (e.g. all state for a plugin within a scope).\n */\nexport const listPluginStateSchema = z.object({\n scopeKind: z.enum(PLUGIN_STATE_SCOPE_KINDS).optional(),\n scopeId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n});\n\nexport type ListPluginState = z.infer<typeof listPluginStateSchema>;\n", "export const API_PREFIX = \"/api\";\n\nexport const API = {\n health: `${API_PREFIX}/health`,\n organizations: `${API_PREFIX}/orgs`,\n agents: `${API_PREFIX}/agents`,\n projects: `${API_PREFIX}/projects`,\n issues: `${API_PREFIX}/issues`,\n chats: `${API_PREFIX}/chats`,\n messenger: `${API_PREFIX}/messenger`,\n calendar: `${API_PREFIX}/calendar`,\n goals: `${API_PREFIX}/goals`,\n approvals: `${API_PREFIX}/approvals`,\n secrets: `${API_PREFIX}/secrets`,\n costs: `${API_PREFIX}/costs`,\n activity: `${API_PREFIX}/activity`,\n dashboard: `${API_PREFIX}/dashboard`,\n sidebarBadges: `${API_PREFIX}/sidebar-badges`,\n invites: `${API_PREFIX}/invites`,\n joinRequests: `${API_PREFIX}/join-requests`,\n members: `${API_PREFIX}/members`,\n admin: `${API_PREFIX}/admin`,\n} as const;\n", "import { normalizeAgentUrlKey } from \"./agent-url-key.js\";\nimport { normalizeOrganizationUrlKey } from \"./organization-url-key.js\";\nimport type {\n OrganizationSkillListItem,\n OrganizationSkillSourceType,\n} from \"./types/organization-skill.js\";\n\ntype SkillReferenceSource = Pick<\n OrganizationSkillListItem,\n \"key\" | \"slug\" | \"name\" | \"sourceType\" | \"sourceLocator\"\n> & Partial<Pick<OrganizationSkillListItem, \"sourceBadge\" | \"sourceLabel\" | \"sourcePath\">>;\n\nexport type OrganizationSkillPublicRefScope = \"organization\" | \"agent\";\n\nexport interface OrganizationSkillPublicRefContext {\n orgUrlKey: string;\n agentUrlKey?: string | null;\n scope?: OrganizationSkillPublicRefScope;\n}\n\nexport type ParsedOrganizationSkillReferenceKind =\n | \"raw_slug\"\n | \"organization\"\n | \"rudder\"\n | \"github\"\n | \"url\"\n | \"other\";\n\nexport interface ParsedOrganizationSkillReference {\n kind: ParsedOrganizationSkillReferenceKind;\n normalized: string;\n slug: string | null;\n segments: string[];\n}\n\nexport interface ResolveOrganizationSkillReferenceContext {\n orgId: string;\n}\n\nexport interface ResolveOrganizationSkillReferenceResult<TSkill> {\n skill: TSkill | null;\n ambiguous: boolean;\n}\n\nfunction normalizeSkillSlug(value: string | null | undefined) {\n return value ? normalizeAgentUrlKey(value) ?? null : null;\n}\n\nexport const RUDDER_BUNDLED_SKILL_SLUGS = [\n \"para-memory-files\",\n \"rudder\",\n \"rudder-create-agent\",\n \"rudder-create-plugin\",\n \"skill-creator\",\n \"skill-optimizer\",\n \"conversation-to-skill\",\n] as const;\n\nconst RUDDER_BUNDLED_SKILL_KEYS = new Set(\n RUDDER_BUNDLED_SKILL_SLUGS.map((slug) => `rudder/${slug}`),\n);\n\nexport function getBundledRudderSkillSlug(value: string | null | undefined) {\n if (!value) return null;\n const segments = value\n .trim()\n .split(\"/\")\n .map((segment) => normalizeSkillSlug(segment))\n .filter((segment): segment is string => Boolean(segment));\n\n if (segments.length === 2 && segments[0] === \"rudder\") {\n return segments[1] ?? null;\n }\n\n if (segments.length === 3 && segments[0] === \"rudder\" && segments[1] === \"rudder\") {\n return segments[2] ?? null;\n }\n\n return null;\n}\n\nexport function toBundledRudderSkillKey(value: string | null | undefined) {\n const slug = normalizeSkillSlug(value);\n if (!slug) return null;\n return `rudder/${slug}`;\n}\n\nexport function isCanonicalBundledRudderSkillKey(value: string | null | undefined) {\n return RUDDER_BUNDLED_SKILL_KEYS.has(value ?? \"\");\n}\n\nexport function normalizeOrganizationSkillKey(value: string | null | undefined) {\n if (!value) return null;\n const normalized = value\n .trim()\n .split(\"/\")\n .map((segment) => normalizeSkillSlug(segment))\n .filter((segment): segment is string => Boolean(segment))\n .join(\"/\");\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction isOrganizationScopedSkill(skill: { sourceType?: OrganizationSkillSourceType | null; key: string }) {\n return skill.sourceType !== \"github\" && skill.sourceType !== \"skills_sh\" && skill.sourceType !== \"url\";\n}\n\nfunction isRudderSkill(skill: SkillReferenceSource) {\n return getBundledRudderSkillSlug(skill.key) !== null || skill.sourceBadge === \"rudder\";\n}\n\nfunction normalizeSegmentList(reference: string) {\n return reference\n .trim()\n .split(\"/\")\n .map((segment) => normalizeSkillSlug(segment))\n .filter((segment): segment is string => Boolean(segment));\n}\n\nfunction parseRepositoryLocator(sourceLocator: string | null | undefined, sourceLabel: string | null | undefined) {\n const tryParse = (value: string | null | undefined) => {\n if (!value) return null;\n try {\n const url = new URL(value);\n const parts = url.pathname.split(\"/\").filter(Boolean);\n if (parts.length >= 2) {\n return {\n owner: normalizeSkillSlug(parts[0]) ?? parts[0]!,\n repo: normalizeSkillSlug(parts[1]) ?? parts[1]!,\n };\n }\n } catch {\n const parts = value.split(\"/\").map((part) => part.trim()).filter(Boolean);\n if (parts.length >= 2) {\n return {\n owner: normalizeSkillSlug(parts[0]) ?? parts[0]!,\n repo: normalizeSkillSlug(parts[1]) ?? parts[1]!,\n };\n }\n }\n return null;\n };\n\n return tryParse(sourceLocator) ?? tryParse(sourceLabel);\n}\n\nexport function formatOrganizationSkillPublicRef(\n skill: SkillReferenceSource,\n context: OrganizationSkillPublicRefContext,\n) {\n const normalizedKey = normalizeOrganizationSkillKey(skill.key) ?? skill.key.trim();\n const slug = (normalizeSkillSlug(skill.slug) ?? skill.slug.trim()) || \"skill\";\n const orgUrlKey = normalizeOrganizationUrlKey(context.orgUrlKey) ?? \"organization\";\n const agentUrlKey = normalizeAgentUrlKey(context.agentUrlKey ?? null);\n\n if (isRudderSkill(skill)) {\n return `rudder/${slug}`;\n }\n\n if (normalizedKey.startsWith(\"organization/\") || normalizedKey.startsWith(\"local/\") || normalizedKey.startsWith(\"catalog/\")) {\n if (context.scope === \"agent\" && agentUrlKey) {\n return `org/${orgUrlKey}/${agentUrlKey}/${slug}`;\n }\n return `org/${orgUrlKey}/${slug}`;\n }\n\n if (skill.sourceType === \"github\" || skill.sourceType === \"skills_sh\") {\n const repo = parseRepositoryLocator(skill.sourceLocator, skill.sourceLabel);\n if (repo) {\n return `${repo.owner}/${repo.repo}/${slug}`;\n }\n }\n\n if (normalizedKey.startsWith(\"url/\")) {\n return normalizedKey;\n }\n\n return normalizedKey;\n}\n\nexport function buildOrganizationSkillSearchText(\n skill: SkillReferenceSource,\n context: OrganizationSkillPublicRefContext,\n) {\n return [\n formatOrganizationSkillPublicRef(skill, context),\n skill.name,\n skill.slug,\n skill.sourceLabel ?? \"\",\n skill.sourceBadge ?? \"\",\n skill.sourcePath ?? \"\",\n ]\n .join(\" \")\n .toLowerCase();\n}\n\nexport function parseOrganizationSkillReference(reference: string): ParsedOrganizationSkillReference {\n const normalized = reference.trim();\n const segments = normalizeSegmentList(normalized);\n if (segments.length === 0) {\n return {\n kind: \"other\",\n normalized: \"\",\n slug: null,\n segments: [],\n };\n }\n\n if (segments[0] === \"org\" || segments[0] === \"organization\") {\n return {\n kind: \"organization\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments[0] === \"rudder\") {\n return {\n kind: \"rudder\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments[0] === \"url\" && segments.length >= 4) {\n return {\n kind: \"url\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments[0] === \"local\" && segments.length >= 3) {\n return {\n kind: \"other\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n if (segments.length >= 3) {\n return {\n kind: \"github\",\n normalized: segments.join(\"/\"),\n slug: segments.at(-1) ?? null,\n segments,\n };\n }\n\n return {\n kind: \"raw_slug\",\n normalized: segments.join(\"/\"),\n slug: segments[0] ?? null,\n segments,\n };\n}\n\nexport function resolveOrganizationSkillReference<TSkill extends SkillReferenceSource>(\n skills: TSkill[],\n reference: string,\n context: ResolveOrganizationSkillReferenceContext,\n): ResolveOrganizationSkillReferenceResult<TSkill> {\n const trimmed = reference.trim();\n if (!trimmed) {\n return { skill: null, ambiguous: false };\n }\n\n const normalizedKey = normalizeOrganizationSkillKey(trimmed);\n if (normalizedKey) {\n const byKey = skills.find((skill) => normalizeOrganizationSkillKey(skill.key) === normalizedKey);\n if (byKey) {\n return { skill: byKey, ambiguous: false };\n }\n }\n\n const parsed = parseOrganizationSkillReference(trimmed);\n if (parsed.kind === \"organization\") {\n const slug = parsed.slug;\n if (!slug) return { skill: null, ambiguous: false };\n const exactKey = `organization/${context.orgId}/${slug}`;\n const byExactOrgKey = skills.find((skill) => skill.key === exactKey);\n if (byExactOrgKey) {\n return { skill: byExactOrgKey, ambiguous: false };\n }\n\n const orgScoped = skills.filter((skill) => isOrganizationScopedSkill(skill) && skill.slug === slug);\n if (orgScoped.length === 1) {\n return { skill: orgScoped[0] ?? null, ambiguous: false };\n }\n if (orgScoped.length > 1) {\n return { skill: null, ambiguous: true };\n }\n\n const bySlug = skills.filter((skill) => skill.slug === slug);\n if (bySlug.length === 1) {\n return { skill: bySlug[0] ?? null, ambiguous: false };\n }\n if (bySlug.length > 1) {\n return { skill: null, ambiguous: true };\n }\n return { skill: null, ambiguous: false };\n }\n\n if (parsed.kind === \"rudder\") {\n const slug = parsed.slug;\n if (!slug) return { skill: null, ambiguous: false };\n const canonicalKey = toBundledRudderSkillKey(slug);\n const legacyKey = canonicalKey ? `rudder/${canonicalKey}` : null;\n for (const exactKey of [canonicalKey, legacyKey]) {\n if (!exactKey) continue;\n const byExactKey = skills.find((skill) => skill.key === exactKey);\n if (byExactKey) {\n return { skill: byExactKey, ambiguous: false };\n }\n }\n\n const rudderSkills = skills.filter((skill) => isRudderSkill(skill) && skill.slug === slug);\n if (rudderSkills.length === 1) {\n return { skill: rudderSkills[0] ?? null, ambiguous: false };\n }\n if (rudderSkills.length > 1) {\n return { skill: null, ambiguous: true };\n }\n return { skill: null, ambiguous: false };\n }\n\n if (parsed.kind === \"raw_slug\") {\n const slug = parsed.slug;\n if (!slug) return { skill: null, ambiguous: false };\n const bySlug = skills.filter((skill) => skill.slug === slug);\n if (bySlug.length === 1) {\n return { skill: bySlug[0] ?? null, ambiguous: false };\n }\n if (bySlug.length > 1) {\n return { skill: null, ambiguous: true };\n }\n }\n\n return { skill: null, ambiguous: false };\n}\n", "import { PROJECT_COLORS } from \"./constants.js\";\n\nexport const PROJECT_MENTION_SCHEME = \"project://\";\nexport const AGENT_MENTION_SCHEME = \"agent://\";\nexport const ISSUE_MENTION_SCHEME = \"issue://\";\n\nconst HEX_COLOR_RE = /^[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_RE = /^[0-9a-f]{3}$/i;\nconst HEX_COLOR_WITH_HASH_RE = /^#[0-9a-f]{6}$/i;\nconst HEX_COLOR_SHORT_WITH_HASH_RE = /^#[0-9a-f]{3}$/i;\nconst PROJECT_MENTION_LINK_RE = /\\[[^\\]]*]\\((project:\\/\\/[^)\\s]+)\\)/gi;\nconst AGENT_MENTION_LINK_RE = /\\[[^\\]]*]\\((agent:\\/\\/[^)\\s]+)\\)/gi;\nconst ISSUE_MENTION_LINK_RE = /\\[[^\\]]*]\\((issue:\\/\\/[^)\\s]+)\\)/gi;\nconst AGENT_ICON_NAME_RE = /^[a-z0-9-]+$/i;\nconst PROJECT_COLOR_VALUES = new Set<string>(PROJECT_COLORS);\n\nexport interface ParsedProjectMention {\n projectId: string;\n color: string | null;\n}\n\nexport interface ParsedAgentMention {\n agentId: string;\n icon: string | null;\n}\n\nexport interface ParsedIssueMention {\n issueId: string;\n ref: string | null;\n}\n\nfunction normalizeHexColor(input: string | null | undefined): string | null {\n if (!input) return null;\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n if (HEX_COLOR_WITH_HASH_RE.test(trimmed)) {\n return trimmed.toLowerCase();\n }\n if (HEX_COLOR_RE.test(trimmed)) {\n return `#${trimmed.toLowerCase()}`;\n }\n if (HEX_COLOR_SHORT_WITH_HASH_RE.test(trimmed)) {\n const raw = trimmed.slice(1).toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n if (HEX_COLOR_SHORT_RE.test(trimmed)) {\n const raw = trimmed.toLowerCase();\n return `#${raw[0]}${raw[0]}${raw[1]}${raw[1]}${raw[2]}${raw[2]}`;\n }\n return null;\n}\n\nfunction normalizeProjectMentionColor(input: string | null | undefined): string | null {\n const hex = normalizeHexColor(input);\n if (hex) return hex;\n const trimmed = input?.trim();\n if (trimmed && PROJECT_COLOR_VALUES.has(trimmed)) return trimmed;\n return null;\n}\n\nfunction encodeMentionParam(value: string): string {\n return encodeURIComponent(value).replace(/[!'()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`);\n}\n\nfunction stripMarkdownCode(markdown: string): string {\n return markdown\n .replace(/```[\\s\\S]*?```/g, \"\")\n .replace(/`[^`\\n]*`/g, \"\");\n}\n\nexport function buildProjectMentionHref(projectId: string, color?: string | null): string {\n const trimmedProjectId = projectId.trim();\n const normalizedColor = normalizeProjectMentionColor(color ?? null);\n if (!normalizedColor) {\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}`;\n }\n const colorParam = normalizedColor.startsWith(\"#\") ? normalizedColor.slice(1) : normalizedColor;\n return `${PROJECT_MENTION_SCHEME}${trimmedProjectId}?c=${encodeMentionParam(colorParam)}`;\n}\n\nexport function parseProjectMentionHref(href: string): ParsedProjectMention | null {\n if (!href.startsWith(PROJECT_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"project:\") return null;\n\n const projectId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!projectId) return null;\n\n const color = normalizeProjectMentionColor(url.searchParams.get(\"c\") ?? url.searchParams.get(\"color\"));\n\n return {\n projectId,\n color,\n };\n}\n\nexport function buildAgentMentionHref(agentId: string, icon?: string | null): string {\n const trimmedAgentId = agentId.trim();\n const normalizedIcon = normalizeAgentIcon(icon ?? null);\n if (!normalizedIcon) {\n return `${AGENT_MENTION_SCHEME}${trimmedAgentId}`;\n }\n return `${AGENT_MENTION_SCHEME}${trimmedAgentId}?i=${encodeURIComponent(normalizedIcon)}`;\n}\n\nexport function parseAgentMentionHref(href: string): ParsedAgentMention | null {\n if (!href.startsWith(AGENT_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"agent:\") return null;\n\n const agentId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!agentId) return null;\n\n return {\n agentId,\n icon: normalizeAgentIcon(url.searchParams.get(\"i\") ?? url.searchParams.get(\"icon\")),\n };\n}\n\nexport function buildIssueMentionHref(issueId: string, ref?: string | null): string {\n const trimmedIssueId = issueId.trim();\n const trimmedRef = ref?.trim();\n if (!trimmedRef) return `${ISSUE_MENTION_SCHEME}${trimmedIssueId}`;\n return `${ISSUE_MENTION_SCHEME}${trimmedIssueId}?r=${encodeURIComponent(trimmedRef)}`;\n}\n\nexport function parseIssueMentionHref(href: string): ParsedIssueMention | null {\n if (!href.startsWith(ISSUE_MENTION_SCHEME)) return null;\n\n let url: URL;\n try {\n url = new URL(href);\n } catch {\n return null;\n }\n\n if (url.protocol !== \"issue:\") return null;\n\n const issueId = `${url.hostname}${url.pathname}`.replace(/^\\/+/, \"\").trim();\n if (!issueId) return null;\n\n const ref = (url.searchParams.get(\"r\") ?? url.searchParams.get(\"ref\") ?? \"\").trim() || null;\n\n return {\n issueId,\n ref,\n };\n}\n\nexport function extractProjectMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(PROJECT_MENTION_LINK_RE);\n const source = stripMarkdownCode(markdown);\n let match: RegExpExecArray | null;\n while ((match = re.exec(source)) !== null) {\n const parsed = parseProjectMentionHref(match[1]);\n if (parsed) ids.add(parsed.projectId);\n }\n return [...ids];\n}\n\nexport function extractAgentMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(AGENT_MENTION_LINK_RE);\n const source = stripMarkdownCode(markdown);\n let match: RegExpExecArray | null;\n while ((match = re.exec(source)) !== null) {\n const parsed = parseAgentMentionHref(match[1]);\n if (parsed) ids.add(parsed.agentId);\n }\n return [...ids];\n}\n\nexport function extractIssueMentionIds(markdown: string): string[] {\n if (!markdown) return [];\n const ids = new Set<string>();\n const re = new RegExp(ISSUE_MENTION_LINK_RE);\n const source = stripMarkdownCode(markdown);\n let match: RegExpExecArray | null;\n while ((match = re.exec(source)) !== null) {\n const parsed = parseIssueMentionHref(match[1]);\n if (parsed) ids.add(parsed.issueId);\n }\n return [...ids];\n}\n\nfunction normalizeAgentIcon(input: string | null | undefined): string | null {\n if (!input) return null;\n const trimmed = input.trim().toLowerCase();\n if (!trimmed || !AGENT_ICON_NAME_RE.test(trimmed)) return null;\n return trimmed;\n}\n", "import { z } from \"zod\";\nimport {\n AUTH_BASE_URL_MODES,\n DEPLOYMENT_EXPOSURES,\n DEPLOYMENT_MODES,\n SECRET_PROVIDERS,\n STORAGE_PROVIDERS,\n} from \"./constants.js\";\n\nexport const DEFAULT_DATABASE_BACKUP_MAX_ESTIMATED_BYTES = 256 * 1024 * 1024;\n\nexport const configMetaSchema = z.object({\n version: z.literal(1),\n updatedAt: z.string(),\n source: z.enum([\"onboard\", \"configure\", \"doctor\"]),\n});\n\nexport const llmConfigSchema = z.object({\n provider: z.enum([\"claude\", \"openai\"]),\n apiKey: z.string().optional(),\n});\n\nexport const databaseBackupConfigSchema = z.object({\n enabled: z.boolean().default(true),\n intervalMinutes: z.number().int().min(1).max(7 * 24 * 60).default(60),\n retentionDays: z.number().int().min(1).max(3650).default(30),\n maxEstimatedBytes: z.number().int().min(1).default(DEFAULT_DATABASE_BACKUP_MAX_ESTIMATED_BYTES),\n dir: z.string().default(\"~/.rudder/instances/default/data/backups\"),\n});\n\nexport const databaseConfigSchema = z.object({\n mode: z.enum([\"embedded-postgres\", \"postgres\"]).default(\"embedded-postgres\"),\n connectionString: z.string().optional(),\n embeddedPostgresDataDir: z.string().default(\"~/.rudder/instances/default/db\"),\n embeddedPostgresPort: z.number().int().min(1).max(65535).default(54329),\n backup: databaseBackupConfigSchema.default({\n enabled: true,\n intervalMinutes: 60,\n retentionDays: 30,\n maxEstimatedBytes: DEFAULT_DATABASE_BACKUP_MAX_ESTIMATED_BYTES,\n dir: \"~/.rudder/instances/default/data/backups\",\n }),\n});\n\nexport const loggingConfigSchema = z.object({\n mode: z.enum([\"file\", \"cloud\"]),\n logDir: z.string().default(\"~/.rudder/instances/default/logs\"),\n});\n\nexport const serverConfigSchema = z.object({\n deploymentMode: z.enum(DEPLOYMENT_MODES).default(\"local_trusted\"),\n exposure: z.enum(DEPLOYMENT_EXPOSURES).default(\"private\"),\n host: z.string().default(\"127.0.0.1\"),\n port: z.number().int().min(1).max(65535).default(3100),\n allowedHostnames: z.array(z.string().min(1)).default([]),\n serveUi: z.boolean().default(true),\n});\n\nexport const authConfigSchema = z.object({\n baseUrlMode: z.enum(AUTH_BASE_URL_MODES).default(\"auto\"),\n publicBaseUrl: z.string().url().optional(),\n disableSignUp: z.boolean().default(false),\n});\n\nexport const storageLocalDiskConfigSchema = z.object({\n baseDir: z.string().default(\"~/.rudder/instances/default/data/storage\"),\n});\n\nexport const storageS3ConfigSchema = z.object({\n bucket: z.string().min(1).default(\"rudder\"),\n region: z.string().min(1).default(\"us-east-1\"),\n endpoint: z.string().optional(),\n prefix: z.string().default(\"\"),\n forcePathStyle: z.boolean().default(false),\n});\n\nexport const storageConfigSchema = z.object({\n provider: z.enum(STORAGE_PROVIDERS).default(\"local_disk\"),\n localDisk: storageLocalDiskConfigSchema.default({\n baseDir: \"~/.rudder/instances/default/data/storage\",\n }),\n s3: storageS3ConfigSchema.default({\n bucket: \"rudder\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n }),\n});\n\nexport const secretsLocalEncryptedConfigSchema = z.object({\n keyFilePath: z.string().default(\"~/.rudder/instances/default/secrets/master.key\"),\n});\n\nexport const secretsConfigSchema = z.object({\n provider: z.enum(SECRET_PROVIDERS).default(\"local_encrypted\"),\n strictMode: z.boolean().default(false),\n localEncrypted: secretsLocalEncryptedConfigSchema.default({\n keyFilePath: \"~/.rudder/instances/default/secrets/master.key\",\n }),\n});\n\nexport const langfuseConfigSchema = z.object({\n enabled: z.boolean().default(false),\n baseUrl: z.string().url().default(\"http://localhost:3000\"),\n publicKey: z.string().optional(),\n secretKey: z.string().optional(),\n environment: z.string().optional(),\n});\n\nexport const rudderConfigSchema = z\n .object({\n $meta: configMetaSchema,\n llm: llmConfigSchema.optional(),\n database: databaseConfigSchema,\n logging: loggingConfigSchema,\n server: serverConfigSchema,\n auth: authConfigSchema.default({\n baseUrlMode: \"auto\",\n disableSignUp: false,\n }),\n storage: storageConfigSchema.default({\n provider: \"local_disk\",\n localDisk: {\n baseDir: \"~/.rudder/instances/default/data/storage\",\n },\n s3: {\n bucket: \"rudder\",\n region: \"us-east-1\",\n prefix: \"\",\n forcePathStyle: false,\n },\n }),\n secrets: secretsConfigSchema.default({\n provider: \"local_encrypted\",\n strictMode: false,\n localEncrypted: {\n keyFilePath: \"~/.rudder/instances/default/secrets/master.key\",\n },\n }),\n langfuse: langfuseConfigSchema.optional(),\n })\n .superRefine((value, ctx) => {\n if (value.server.deploymentMode === \"local_trusted\") {\n if (value.server.exposure !== \"private\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"server.exposure must be private when deploymentMode is local_trusted\",\n path: [\"server\", \"exposure\"],\n });\n }\n return;\n }\n\n if (value.auth.baseUrlMode === \"explicit\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when auth.baseUrlMode is explicit\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n\n if (value.server.exposure === \"public\" && value.auth.baseUrlMode !== \"explicit\") {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.baseUrlMode must be explicit when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"baseUrlMode\"],\n });\n }\n\n if (value.server.exposure === \"public\" && !value.auth.publicBaseUrl) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"auth.publicBaseUrl is required when deploymentMode=authenticated and exposure=public\",\n path: [\"auth\", \"publicBaseUrl\"],\n });\n }\n });\n\nexport type RudderConfig = z.infer<typeof rudderConfigSchema>;\nexport type LlmConfig = z.infer<typeof llmConfigSchema>;\nexport type DatabaseConfig = z.infer<typeof databaseConfigSchema>;\nexport type LoggingConfig = z.infer<typeof loggingConfigSchema>;\nexport type ServerConfig = z.infer<typeof serverConfigSchema>;\nexport type StorageConfig = z.infer<typeof storageConfigSchema>;\nexport type StorageLocalDiskConfig = z.infer<typeof storageLocalDiskConfigSchema>;\nexport type StorageS3Config = z.infer<typeof storageS3ConfigSchema>;\nexport type SecretsConfig = z.infer<typeof secretsConfigSchema>;\nexport type SecretsLocalEncryptedConfig = z.infer<typeof secretsLocalEncryptedConfigSchema>;\nexport type LangfuseConfig = z.infer<typeof langfuseConfigSchema>;\nexport type AuthConfig = z.infer<typeof authConfigSchema>;\nexport type ConfigMeta = z.infer<typeof configMetaSchema>;\nexport type DatabaseBackupConfig = z.infer<typeof databaseBackupConfigSchema>;\n", "import type { Issue } from \"@rudderhq/shared\";\n\nexport const PLUGIN_ID = \"rudder.linear\";\nexport const PLUGIN_VERSION = \"0.1.0\";\nexport const PAGE_ROUTE = \"linear\";\nexport const ENTITY_TYPE_LINEAR_ISSUE_LINK = \"linear_issue_link\";\nexport const ISSUE_LINK_STATE_KEY = \"linear-link\";\nexport const DEFAULT_LINEAR_API_URL = \"https://api.linear.app/graphql\";\nexport const LINEAR_TOKEN_SETTINGS_URL = \"https://linear.app/settings/account/security\";\nexport const LINEAR_PAGE_SIZE = 25;\nexport const LINEAR_IMPORT_ALL_LIMIT = 100;\n\nexport const SLOT_IDS = {\n page: \"linear-page\",\n settingsPage: \"linear-settings-page\",\n issueTab: \"linear-issue-tab\",\n} as const;\n\nexport const EXPORT_NAMES = {\n page: \"LinearPluginPage\",\n settingsPage: \"LinearPluginSettingsPage\",\n issueTab: \"LinearIssueTab\",\n} as const;\n\nexport const DATA_KEYS = {\n settingsBootstrap: \"settings-bootstrap\",\n pageBootstrap: \"page-bootstrap\",\n settingsCatalog: \"settings-catalog\",\n catalog: \"linear-catalog\",\n issues: \"linear-issues\",\n issueLink: \"issue-link\",\n} as const;\n\nexport const ACTION_KEYS = {\n importIssues: \"import-linear-issues\",\n} as const;\n\nexport const RUDDER_STATUS_OPTIONS: Issue[\"status\"][] = [\n \"backlog\",\n \"todo\",\n \"in_progress\",\n \"in_review\",\n \"done\",\n \"blocked\",\n \"cancelled\",\n];\n", "import { DEFAULT_LINEAR_API_URL } from \"./constants.js\";\nimport type {\n LinearCatalog,\n LinearIssueConnection,\n LinearIssueListFilters,\n LinearIssueSummary,\n LinearProjectSummary,\n LinearTeamSummary,\n LinearUserSummary,\n} from \"./types.js\";\n\nconst FIXTURE_TEAMS: LinearTeamSummary[] = [\n {\n id: \"team-eng\",\n key: \"ENG\",\n name: \"Engineering\",\n states: [\n { id: \"state-backlog\", name: \"Backlog\", type: \"backlog\" },\n { id: \"state-progress\", name: \"In Progress\", type: \"started\" },\n { id: \"state-triage\", name: \"Triage\", type: \"unstarted\" },\n { id: \"state-done\", name: \"Done\", type: \"completed\" },\n ],\n },\n];\n\nconst FIXTURE_PROJECTS: LinearProjectSummary[] = [\n { id: \"proj-roadmap\", name: \"Roadmap\", teamIds: [\"team-eng\"], teams: [FIXTURE_TEAMS[0]!] },\n { id: \"proj-growth\", name: \"Growth\", teamIds: [\"team-eng\"], teams: [FIXTURE_TEAMS[0]!] },\n];\n\nconst FIXTURE_USERS: LinearUserSummary[] = [\n { id: \"user-amy\", name: \"Amy Zhang\", email: \"amy@example.com\" },\n { id: \"user-ben\", name: \"Ben Ford\", email: \"ben@example.com\" },\n];\n\nconst FIXTURE_ISSUES: LinearIssueSummary[] = [\n {\n id: \"lin-1\",\n identifier: \"ENG-101\",\n title: \"Backlog intake issue\",\n description: \"Imported from the Linear fixture backlog.\",\n url: \"https://linear.app/example/issue/ENG-101\",\n updatedAt: \"2026-04-20T09:00:00.000Z\",\n createdAt: \"2026-04-10T09:00:00.000Z\",\n team: FIXTURE_TEAMS[0],\n state: FIXTURE_TEAMS[0].states[0]!,\n project: FIXTURE_PROJECTS[0]!,\n assignee: FIXTURE_USERS[0]!,\n },\n {\n id: \"lin-2\",\n identifier: \"ENG-102\",\n title: \"Status mapped issue\",\n description: \"This item should map into an in-progress Rudder issue.\",\n url: \"https://linear.app/example/issue/ENG-102\",\n updatedAt: \"2026-04-21T08:30:00.000Z\",\n createdAt: \"2026-04-11T09:00:00.000Z\",\n team: FIXTURE_TEAMS[0],\n state: FIXTURE_TEAMS[0].states[1]!,\n project: FIXTURE_PROJECTS[0]!,\n assignee: FIXTURE_USERS[1]!,\n },\n {\n id: \"lin-3\",\n identifier: \"ENG-103\",\n title: \"Unmapped state fallback issue\",\n description: \"This item intentionally uses an unmapped state in some tests.\",\n url: \"https://linear.app/example/issue/ENG-103\",\n updatedAt: \"2026-04-22T07:15:00.000Z\",\n createdAt: \"2026-04-12T09:00:00.000Z\",\n team: FIXTURE_TEAMS[0],\n state: { id: \"state-triage\", name: \"Triage\", type: \"unstarted\" },\n project: FIXTURE_PROJECTS[1]!,\n assignee: null,\n },\n];\n\nfunction readEnv(name: string): string | undefined {\n if (typeof process === \"undefined\") return undefined;\n return process.env[name];\n}\n\nfunction getLinearApiUrl(): string {\n return readEnv(\"RUDDER_LINEAR_API_URL\")?.trim() || DEFAULT_LINEAR_API_URL;\n}\n\nexport function isFixtureMode(): boolean {\n return readEnv(\"RUDDER_LINEAR_FIXTURE_MODE\") === \"1\";\n}\n\nexport function buildLinearIssuesFilter(filters: LinearIssueListFilters): Record<string, unknown> {\n const clauses: Record<string, unknown>[] = [];\n clauses.push({ team: { id: { in: filters.allowedTeamIds } } });\n if (filters.teamId) {\n clauses.push({ team: { id: { eq: filters.teamId } } });\n }\n if (filters.stateId) clauses.push({ state: { id: { eq: filters.stateId } } });\n if (filters.projectId) clauses.push({ project: { id: { eq: filters.projectId } } });\n if (filters.assigneeId) clauses.push({ assignee: { id: { eq: filters.assigneeId } } });\n if (filters.query?.trim()) {\n const query = filters.query.trim();\n clauses.push({\n or: [\n { title: { containsIgnoreCase: query } },\n { description: { containsIgnoreCase: query } },\n { identifier: { eqIgnoreCase: query } },\n ],\n });\n }\n if (clauses.length === 1) return clauses[0]!;\n return { and: clauses };\n}\n\ntype GraphQLResponse<T> = {\n data?: T;\n errors?: Array<{ message?: string }>;\n};\n\ntype GraphQLFetcher = (query: string, variables?: Record<string, unknown>) => Promise<unknown>;\n\nexport type LinearApiClient = {\n getViewer(): Promise<{ id: string; name: string; email?: string | null }>;\n getCatalog(allowedTeamIds?: string[]): Promise<LinearCatalog>;\n listIssues(filters: LinearIssueListFilters, limit: number, after?: string): Promise<LinearIssueConnection>;\n getIssue(issueId: string): Promise<LinearIssueSummary | null>;\n};\n\nfunction normalizeIssue(issue: Record<string, any>): LinearIssueSummary {\n return {\n id: String(issue.id),\n identifier: String(issue.identifier),\n title: String(issue.title),\n description: typeof issue.description === \"string\" ? issue.description : null,\n url: String(issue.url),\n updatedAt: String(issue.updatedAt),\n createdAt: issue.createdAt ? String(issue.createdAt) : null,\n team: {\n id: String(issue.team.id),\n key: String(issue.team.key ?? issue.team.name ?? issue.team.id),\n name: String(issue.team.name),\n states: Array.isArray(issue.team.states?.nodes)\n ? issue.team.states.nodes.map((state: Record<string, any>) => ({\n id: String(state.id),\n name: String(state.name),\n type: typeof state.type === \"string\" ? state.type : null,\n }))\n : [],\n },\n state: {\n id: String(issue.state.id),\n name: String(issue.state.name),\n type: typeof issue.state.type === \"string\" ? issue.state.type : null,\n },\n project: issue.project\n ? {\n id: String(issue.project.id),\n name: String(issue.project.name),\n teamIds: Array.isArray(issue.project.teams?.nodes)\n ? issue.project.teams.nodes.map((team: Record<string, any>) => String(team.id))\n : Array.isArray(issue.project.teamIds)\n ? issue.project.teamIds.map((teamId: unknown) => String(teamId))\n : [],\n teams: Array.isArray(issue.project.teams?.nodes)\n ? issue.project.teams.nodes.map((team: Record<string, any>) => ({\n id: String(team.id),\n key: String(team.key ?? team.name ?? team.id),\n name: String(team.name),\n }))\n : undefined,\n }\n : null,\n assignee: issue.assignee\n ? {\n id: String(issue.assignee.id),\n name: String(issue.assignee.name),\n email: typeof issue.assignee.email === \"string\" ? issue.assignee.email : null,\n }\n : null,\n };\n}\n\nasync function postGraphQL<T>(\n fetcher: GraphQLFetcher,\n query: string,\n variables?: Record<string, unknown>,\n): Promise<T> {\n const response = await fetcher(query, variables) as GraphQLResponse<T>;\n if (response.errors?.length) {\n throw new Error(response.errors.map((error) => error.message || \"Unknown Linear error\").join(\"; \"));\n }\n if (!response.data) throw new Error(\"Linear API returned no data\");\n return response.data;\n}\n\nfunction applyFixtureFilters(filters: LinearIssueListFilters): LinearIssueSummary[] {\n const allowedTeamIds = new Set(filters.allowedTeamIds);\n const query = filters.query?.trim().toLowerCase() ?? \"\";\n return FIXTURE_ISSUES\n .filter((issue) => allowedTeamIds.has(issue.team.id))\n .filter((issue) => !filters.teamId || issue.team.id === filters.teamId)\n .filter((issue) => !filters.stateId || issue.state.id === filters.stateId)\n .filter((issue) => !filters.projectId || issue.project?.id === filters.projectId)\n .filter((issue) => !filters.assigneeId || issue.assignee?.id === filters.assigneeId)\n .filter((issue) => {\n if (!query) return true;\n const haystack = [\n issue.identifier,\n issue.title,\n issue.description ?? \"\",\n issue.project?.name ?? \"\",\n issue.assignee?.name ?? \"\",\n ].join(\" \").toLowerCase();\n return haystack.includes(query);\n })\n .sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));\n}\n\nfunction createFixtureClient(): LinearApiClient {\n return {\n async getViewer() {\n return { id: \"viewer-fixture\", name: \"Fixture Viewer\", email: \"fixture@example.com\" };\n },\n async getCatalog(allowedTeamIds) {\n const allowed = allowedTeamIds?.length ? new Set(allowedTeamIds) : null;\n return {\n teams: allowed ? FIXTURE_TEAMS.filter((team) => allowed.has(team.id)) : FIXTURE_TEAMS,\n projects: FIXTURE_PROJECTS,\n users: FIXTURE_USERS,\n };\n },\n async listIssues(filters, limit, after) {\n const filtered = applyFixtureFilters(filters);\n const start = after ? filtered.findIndex((issue) => issue.id === after) + 1 : 0;\n const slice = filtered.slice(Math.max(start, 0), Math.max(start, 0) + limit);\n const last = slice[slice.length - 1] ?? null;\n const endIndex = last ? filtered.findIndex((issue) => issue.id === last.id) : -1;\n return {\n nodes: slice,\n endCursor: last?.id ?? null,\n hasNextPage: endIndex !== -1 && endIndex < filtered.length - 1,\n };\n },\n async getIssue(issueId) {\n return FIXTURE_ISSUES.find((issue) => issue.id === issueId) ?? null;\n },\n };\n}\n\nexport function createLinearApiClient(\n token: string,\n fetchImpl?: typeof fetch,\n options?: { fixtureMode?: boolean },\n): LinearApiClient {\n if (options?.fixtureMode || isFixtureMode()) {\n return createFixtureClient();\n }\n\n const effectiveFetch = fetchImpl ?? fetch;\n const apiUrl = getLinearApiUrl();\n const fetcher: GraphQLFetcher = async (query, variables) => {\n const response = await effectiveFetch(apiUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: token,\n },\n body: JSON.stringify({ query, variables }),\n });\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Linear API request failed (${response.status}): ${text}`);\n }\n return await response.json();\n };\n\n return {\n async getViewer() {\n const data = await postGraphQL<{ viewer: { id: string; name: string; email?: string | null } }>(\n fetcher,\n `query LinearViewer {\n viewer {\n id\n name\n email\n }\n }`,\n );\n return data.viewer;\n },\n async getCatalog(allowedTeamIds) {\n const hasTeamFilter = Boolean(allowedTeamIds?.length);\n const data = await postGraphQL<{\n teams: { nodes: Array<Record<string, any>> };\n projects: { nodes: Array<Record<string, any>> };\n users: { nodes: Array<Record<string, any>> };\n }>(\n fetcher,\n `query LinearCatalog${hasTeamFilter ? \"($teamIds: [String!])\" : \"\"} {\n teams${hasTeamFilter ? \"(filter: { id: { in: $teamIds } }, first: 50)\" : \"(first: 50)\"} {\n nodes {\n id\n key\n name\n states(first: 100) {\n nodes {\n id\n name\n type\n }\n }\n }\n }\n projects(first: 100) {\n nodes {\n id\n name\n teams(first: 20) {\n nodes {\n id\n key\n name\n }\n }\n }\n }\n users(first: 100) {\n nodes {\n id\n name\n email\n active\n }\n }\n }`,\n hasTeamFilter ? { teamIds: allowedTeamIds } : undefined,\n );\n\n return {\n teams: data.teams.nodes.map((team) => ({\n id: String(team.id),\n key: String(team.key ?? team.name ?? team.id),\n name: String(team.name),\n states: Array.isArray(team.states?.nodes)\n ? team.states.nodes.map((state: Record<string, any>) => ({\n id: String(state.id),\n name: String(state.name),\n type: typeof state.type === \"string\" ? state.type : null,\n }))\n : [],\n })),\n projects: data.projects.nodes\n .map((project) => {\n const teams: Array<Pick<LinearTeamSummary, \"id\" | \"key\" | \"name\">> = Array.isArray(project.teams?.nodes)\n ? project.teams.nodes.map((team: Record<string, any>) => ({\n id: String(team.id),\n key: String(team.key ?? team.name ?? team.id),\n name: String(team.name),\n }))\n : [];\n return {\n id: String(project.id),\n name: String(project.name),\n teamIds: teams.map((team) => team.id),\n teams,\n };\n })\n .filter((project) => {\n if (!allowedTeamIds?.length || project.teamIds.length === 0) return true;\n return project.teamIds.some((teamId) => allowedTeamIds.includes(teamId));\n }),\n users: data.users.nodes\n .filter((user) => user.active !== false)\n .map((user) => ({\n id: String(user.id),\n name: String(user.name),\n email: typeof user.email === \"string\" ? user.email : null,\n })),\n };\n },\n async listIssues(filters, limit, after) {\n const data = await postGraphQL<{\n issues: {\n nodes: Array<Record<string, any>>;\n pageInfo: { hasNextPage: boolean; endCursor: string | null };\n };\n }>(\n fetcher,\n `query LinearIssues($first: Int!, $after: String, $filter: IssueFilter) {\n issues(first: $first, after: $after, filter: $filter, orderBy: updatedAt) {\n nodes {\n id\n identifier\n title\n description\n url\n updatedAt\n createdAt\n team {\n id\n key\n name\n states(first: 100) {\n nodes {\n id\n name\n type\n }\n }\n }\n state {\n id\n name\n type\n }\n project {\n id\n name\n teams(first: 20) {\n nodes {\n id\n key\n name\n }\n }\n }\n assignee {\n id\n name\n email\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }`,\n {\n first: limit,\n after: after ?? null,\n filter: buildLinearIssuesFilter(filters),\n },\n );\n\n return {\n nodes: data.issues.nodes.map(normalizeIssue),\n endCursor: data.issues.pageInfo.endCursor,\n hasNextPage: data.issues.pageInfo.hasNextPage,\n };\n },\n async getIssue(issueId) {\n const data = await postGraphQL<{ issue: Record<string, any> | null }>(\n fetcher,\n `query LinearIssue($id: String!) {\n issue(id: $id) {\n id\n identifier\n title\n description\n url\n updatedAt\n createdAt\n team {\n id\n key\n name\n states(first: 100) {\n nodes {\n id\n name\n type\n }\n }\n }\n state {\n id\n name\n type\n }\n project {\n id\n name\n teams(first: 20) {\n nodes {\n id\n key\n name\n }\n }\n }\n assignee {\n id\n name\n email\n }\n }\n }`,\n { id: issueId },\n );\n\n return data.issue ? normalizeIssue(data.issue) : null;\n },\n };\n}\n", "import {\n definePlugin,\n runWorker,\n type PluginConfigValidationResult,\n type PluginContext,\n} from \"@rudderhq/plugin-sdk\";\nimport type { Issue, Organization, Project } from \"@rudderhq/shared\";\nimport {\n ACTION_KEYS,\n DATA_KEYS,\n ENTITY_TYPE_LINEAR_ISSUE_LINK,\n ISSUE_LINK_STATE_KEY,\n LINEAR_IMPORT_ALL_LIMIT,\n} from \"./constants.js\";\nimport { createLinearApiClient, isFixtureMode } from \"./linear-api.js\";\nimport type {\n ImportLinearIssuesActionInput,\n ImportLinearIssuesActionResult,\n ImportedLinearLink,\n IssueLinkData,\n LinearCatalog,\n LinearIssueListFilters,\n LinearIssueSummary,\n LinearLinkState,\n LinearOrganizationMapping,\n LinearPluginConfig,\n LinearTeamMapping,\n PageBootstrapData,\n SettingsCatalogData,\n SettingsBootstrapData,\n} from \"./types.js\";\n\nfunction emptyConfig(): LinearPluginConfig {\n return {\n apiTokenSecretRef: \"\",\n teamMappings: [],\n organizationMappings: [],\n };\n}\n\nexport function normalizeConfig(raw: LinearPluginConfig | Record<string, unknown> | undefined | null): LinearPluginConfig {\n const legacyOrganizationMappings = Array.isArray((raw as LinearPluginConfig | undefined)?.organizationMappings)\n ? ((raw as LinearPluginConfig).organizationMappings ?? [])\n : [];\n const explicitTeamMappings = Array.isArray((raw as LinearPluginConfig | undefined)?.teamMappings)\n ? ((raw as LinearPluginConfig).teamMappings ?? [])\n : [];\n\n return {\n ...emptyConfig(),\n ...(raw as LinearPluginConfig),\n teamMappings: explicitTeamMappings.length > 0\n ? explicitTeamMappings\n : mergeLegacyTeamMappings(legacyOrganizationMappings),\n organizationMappings: legacyOrganizationMappings,\n };\n}\n\nfunction mergeLegacyTeamMappings(mappings: LinearOrganizationMapping[]): LinearTeamMapping[] {\n const byTeamId = new Map<string, LinearTeamMapping>();\n for (const mapping of mappings) {\n for (const team of mapping.teamMappings ?? []) {\n if (!team.teamId || byTeamId.has(team.teamId)) continue;\n byTeamId.set(team.teamId, team);\n }\n }\n return [...byTeamId.values()];\n}\n\nasync function getConfig(ctx: PluginContext): Promise<LinearPluginConfig> {\n return normalizeConfig(await ctx.config.get());\n}\n\nfunction adaptHostFetch(fetchImpl: PluginContext[\"http\"][\"fetch\"]) {\n return async (input: string | URL | RequestInfo, init?: RequestInit): Promise<Response> => {\n const url = typeof input === \"string\"\n ? input\n : input instanceof URL\n ? input.toString()\n : input instanceof Request\n ? input.url\n : String(input);\n return await fetchImpl(url, init);\n };\n}\n\nfunction requireOrgId(params: Record<string, unknown>): string {\n const orgId = typeof params.orgId === \"string\" ? params.orgId : \"\";\n if (!orgId) throw new Error(\"orgId is required\");\n return orgId;\n}\n\nfunction getOrgMapping(config: LinearPluginConfig, orgId: string): LinearOrganizationMapping | null {\n if (config.teamMappings.length > 0) {\n return { orgId, teamMappings: config.teamMappings };\n }\n return config.organizationMappings.find((mapping) => mapping.orgId === orgId) ?? null;\n}\n\nfunction getAllowedTeamIds(mapping: LinearOrganizationMapping): string[] {\n return mapping.teamMappings.map((team) => team.teamId);\n}\n\nfunction filterCatalogForMapping(catalog: LinearCatalog, mapping: LinearOrganizationMapping): LinearCatalog {\n const allowedTeamIds = new Set(getAllowedTeamIds(mapping));\n if (allowedTeamIds.size === 0) {\n return {\n teams: [],\n projects: [],\n users: [],\n };\n }\n\n return {\n teams: catalog.teams.filter((team) => allowedTeamIds.has(team.id)),\n projects: catalog.projects.filter((project) => {\n if (project.teamIds.length === 0) return true;\n return project.teamIds.some((teamId) => allowedTeamIds.has(teamId));\n }),\n users: catalog.users,\n };\n}\n\nfunction sanitizeFilters(\n params: Record<string, unknown>,\n allowedTeamIds: string[],\n): LinearIssueListFilters {\n return {\n allowedTeamIds,\n teamId: typeof params.teamId === \"string\" && params.teamId ? params.teamId : undefined,\n stateId: typeof params.stateId === \"string\" && params.stateId ? params.stateId : undefined,\n projectId: typeof params.projectId === \"string\" && params.projectId ? params.projectId : undefined,\n assigneeId: typeof params.assigneeId === \"string\" && params.assigneeId ? params.assigneeId : undefined,\n query: typeof params.query === \"string\" && params.query.trim() ? params.query.trim() : undefined,\n };\n}\n\nasync function resolveLinearClient(ctx: PluginContext, orgId: string) {\n const config = await getConfig(ctx);\n const mapping = getOrgMapping(config, orgId);\n if (!config.apiTokenSecretRef) throw new Error(\"Add a Linear token in plugin settings.\");\n if (!mapping) throw new Error(\"Connect Linear in plugin settings before importing issues.\");\n const token = await ctx.secrets.resolve(config.apiTokenSecretRef);\n const client = createLinearApiClient(token, adaptHostFetch(ctx.http.fetch), {\n fixtureMode: config.fixtureMode === true,\n });\n return { client, config, mapping };\n}\n\nasync function resolveLinearSettingsClient(ctx: PluginContext) {\n const config = await getConfig(ctx);\n if (!config.apiTokenSecretRef) throw new Error(\"Add a Linear token first.\");\n const token = await ctx.secrets.resolve(config.apiTokenSecretRef);\n const client = createLinearApiClient(token, adaptHostFetch(ctx.http.fetch), {\n fixtureMode: config.fixtureMode === true,\n });\n return { client, config };\n}\n\nasync function listAllLinearLinks(ctx: PluginContext): Promise<LinearLinkState[]> {\n const links: LinearLinkState[] = [];\n let offset = 0;\n const pageSize = 200;\n while (offset <= 5000) {\n const page = await ctx.entities.list({\n entityType: ENTITY_TYPE_LINEAR_ISSUE_LINK,\n limit: pageSize,\n offset,\n });\n if (page.length === 0) break;\n for (const record of page) {\n const data = record.data as Partial<LinearLinkState>;\n if (!data.externalId || !data.rudderIssueId) continue;\n links.push({\n externalId: String(data.externalId),\n linearIdentifier: String(data.linearIdentifier ?? record.title ?? data.externalId),\n linearTitle: String(data.linearTitle ?? record.title ?? \"\"),\n linearUrl: String(data.linearUrl ?? \"\"),\n orgId: String(data.orgId ?? \"\"),\n rudderIssueId: String(data.rudderIssueId),\n rudderIssueIdentifier: typeof data.rudderIssueIdentifier === \"string\" ? data.rudderIssueIdentifier : null,\n teamId: String(data.teamId ?? \"\"),\n teamName: String(data.teamName ?? \"\"),\n projectId: typeof data.projectId === \"string\" ? data.projectId : null,\n projectName: typeof data.projectName === \"string\" ? data.projectName : null,\n stateId: String(data.stateId ?? \"\"),\n stateName: String(data.stateName ?? record.status ?? \"\"),\n importedAt: String(data.importedAt ?? record.createdAt),\n updatedAt: String(data.updatedAt ?? record.updatedAt),\n });\n }\n if (page.length < pageSize) break;\n offset += page.length;\n }\n return links;\n}\n\nasync function buildImportedLinkIndex(ctx: PluginContext): Promise<Map<string, ImportedLinearLink>> {\n const index = new Map<string, ImportedLinearLink>();\n const links = await listAllLinearLinks(ctx);\n for (const link of links) {\n index.set(link.externalId, {\n externalId: link.externalId,\n rudderIssueId: link.rudderIssueId,\n rudderIssueIdentifier: link.rudderIssueIdentifier,\n orgId: link.orgId,\n });\n }\n return index;\n}\n\nfunction findTeamMapping(mapping: LinearOrganizationMapping, issue: LinearIssueSummary): LinearTeamMapping | null {\n return mapping.teamMappings.find((team) => team.teamId === issue.team.id) ?? null;\n}\n\nfunction assertIssueTeamAllowed(mapping: LinearOrganizationMapping, issue: LinearIssueSummary): void {\n if (findTeamMapping(mapping, issue)) return;\n throw new Error(\n `Linear issue ${issue.identifier} belongs to team ${issue.team.name} (${issue.team.id}), which is not selected for import.`,\n );\n}\n\nexport function resolveMappedStatus(mapping: LinearOrganizationMapping, issue: LinearIssueSummary): {\n status: Issue[\"status\"];\n fallback: boolean;\n} {\n const teamMapping = findTeamMapping(mapping, issue);\n const status = teamMapping?.stateMappings.find((entry) => entry.linearStateId === issue.state.id)?.rudderStatus;\n return {\n status: status ?? \"backlog\",\n fallback: !status,\n };\n}\n\nfunction resolveFinalImportStatus(status: Issue[\"status\"]): {\n status: Issue[\"status\"];\n adjusted: boolean;\n} {\n if (status === \"in_progress\") {\n return {\n status: \"todo\",\n adjusted: true,\n };\n }\n return {\n status,\n adjusted: false,\n };\n}\n\nexport function buildIssueDescription(issue: LinearIssueSummary): string {\n const sourceBlock = [\n \"Source: Linear\",\n `Linear Issue: ${issue.identifier}`,\n `Linear URL: ${issue.url}`,\n ].join(\"\\n\");\n\n if (issue.description?.trim()) {\n return `${issue.description.trim()}\\n\\n---\\n${sourceBlock}`;\n }\n return sourceBlock;\n}\n\nasync function buildSettingsBootstrap(ctx: PluginContext): Promise<SettingsBootstrapData> {\n const config = await getConfig(ctx);\n const organizations = await ctx.organizations.list({ limit: 200, offset: 0 }) as Array<Pick<Organization, \"id\" | \"name\" | \"issuePrefix\">>;\n return {\n config,\n organizations,\n fixtureMode: config.fixtureMode === true || isFixtureMode(),\n };\n}\n\nasync function buildSettingsCatalog(ctx: PluginContext, params: Record<string, unknown>): Promise<SettingsCatalogData> {\n const { client } = await resolveLinearSettingsClient(ctx);\n const orgId = typeof params.orgId === \"string\" && params.orgId ? params.orgId : null;\n const catalog = await client.getCatalog();\n return {\n orgId,\n ...catalog,\n };\n}\n\nasync function buildPageBootstrap(ctx: PluginContext, orgId: string): Promise<PageBootstrapData> {\n const config = await getConfig(ctx);\n const mapping = getOrgMapping(config, orgId);\n const projects = await ctx.projects.list({ orgId, limit: 200, offset: 0 }) as Array<Pick<Project, \"id\" | \"name\">>;\n if (!config.apiTokenSecretRef) {\n return {\n configured: false,\n message: \"Connect Linear in plugin settings before importing issues.\",\n projects,\n teamMappings: [],\n };\n }\n if (!mapping) {\n return {\n configured: false,\n message: \"Refresh Linear settings before importing issues.\",\n projects,\n teamMappings: [],\n };\n }\n if (mapping.teamMappings.length === 0) {\n return {\n configured: false,\n message: \"Add at least one allowed Linear team.\",\n projects,\n teamMappings: [],\n };\n }\n return {\n configured: true,\n message: null,\n projects,\n teamMappings: mapping.teamMappings,\n };\n}\n\nasync function findIssueLink(ctx: PluginContext, orgId: string, issueId: string): Promise<LinearLinkState | null> {\n const direct = await ctx.state.get({\n scopeKind: \"issue\",\n scopeId: issueId,\n stateKey: ISSUE_LINK_STATE_KEY,\n }) as LinearLinkState | null;\n if (direct?.externalId) return direct;\n const links = await listAllLinearLinks(ctx);\n return links.find((link) => link.orgId === orgId && link.rudderIssueId === issueId) ?? null;\n}\n\nasync function storeIssueLink(\n ctx: PluginContext,\n orgId: string,\n rudderIssue: { id: string; identifier?: string | null },\n linearIssue: LinearIssueSummary,\n): Promise<LinearLinkState> {\n const link: LinearLinkState = {\n externalId: linearIssue.id,\n linearIdentifier: linearIssue.identifier,\n linearTitle: linearIssue.title,\n linearUrl: linearIssue.url,\n orgId,\n rudderIssueId: rudderIssue.id,\n rudderIssueIdentifier: rudderIssue.identifier ?? null,\n teamId: linearIssue.team.id,\n teamName: linearIssue.team.name,\n projectId: linearIssue.project?.id ?? null,\n projectName: linearIssue.project?.name ?? null,\n stateId: linearIssue.state.id,\n stateName: linearIssue.state.name,\n importedAt: new Date().toISOString(),\n updatedAt: linearIssue.updatedAt,\n };\n\n await ctx.entities.upsert({\n entityType: ENTITY_TYPE_LINEAR_ISSUE_LINK,\n scopeKind: \"issue\",\n scopeId: rudderIssue.id,\n externalId: linearIssue.id,\n title: `${linearIssue.identifier} ${linearIssue.title}`,\n status: linearIssue.state.name,\n data: link,\n });\n await ctx.state.set(\n { scopeKind: \"issue\", scopeId: rudderIssue.id, stateKey: ISSUE_LINK_STATE_KEY },\n link,\n );\n return link;\n}\n\nasync function importIssuesAction(\n ctx: PluginContext,\n input: ImportLinearIssuesActionInput,\n): Promise<ImportLinearIssuesActionResult> {\n if (!input.orgId) throw new Error(\"orgId is required\");\n if (!input.targetProjectId) throw new Error(\"Choose a target project before importing.\");\n\n const project = await ctx.projects.get(input.targetProjectId, input.orgId);\n if (!project) throw new Error(\"Selected Rudder project was not found.\");\n\n const { client, mapping } = await resolveLinearClient(ctx, input.orgId);\n const importedIndex = await buildImportedLinkIndex(ctx);\n const allowedTeamIds = getAllowedTeamIds(mapping);\n const filters = sanitizeFilters((input.filters ?? {}) as Record<string, unknown>, allowedTeamIds);\n\n let candidates: LinearIssueSummary[] = [];\n if (input.mode === \"allMatching\") {\n const batch = await client.listIssues(filters, LINEAR_IMPORT_ALL_LIMIT + 1);\n if (batch.nodes.length > LINEAR_IMPORT_ALL_LIMIT) {\n throw new Error(`Import all is limited to ${LINEAR_IMPORT_ALL_LIMIT} matching issues. Narrow the filters and try again.`);\n }\n candidates = batch.nodes;\n } else {\n const issueIds = Array.isArray(input.issueIds) ? input.issueIds.filter(Boolean) : [];\n if (issueIds.length === 0) {\n throw new Error(\"Select at least one Linear issue to import.\");\n }\n candidates = (await Promise.all(issueIds.map((issueId) => client.getIssue(issueId)))).filter(Boolean) as LinearIssueSummary[];\n }\n\n const duplicateIssueIds: string[] = [];\n const importedIssues: ImportLinearIssuesActionResult[\"importedIssues\"] = [];\n\n for (const linearIssue of candidates) {\n assertIssueTeamAllowed(mapping, linearIssue);\n const duplicate = importedIndex.get(linearIssue.id);\n if (duplicate) {\n duplicateIssueIds.push(linearIssue.id);\n continue;\n }\n\n const mapped = resolveMappedStatus(mapping, linearIssue);\n const resolvedStatus = resolveFinalImportStatus(mapped.status);\n const created = await ctx.issues.create({\n orgId: input.orgId,\n projectId: input.targetProjectId,\n title: linearIssue.title,\n description: buildIssueDescription(linearIssue),\n status: resolvedStatus.status,\n priority: \"medium\",\n });\n const link = await storeIssueLink(ctx, input.orgId, created, linearIssue);\n await ctx.activity.log({\n orgId: input.orgId,\n entityType: \"issue\",\n entityId: created.id,\n message: `Imported Linear issue ${linearIssue.identifier}`,\n metadata: {\n linearIssueId: linearIssue.id,\n linearIdentifier: linearIssue.identifier,\n targetProjectId: input.targetProjectId,\n fallbackStatus: mapped.fallback,\n adjustedStatus: resolvedStatus.adjusted,\n mappedStatus: mapped.status,\n finalStatus: resolvedStatus.status,\n },\n });\n importedIndex.set(linearIssue.id, {\n externalId: linearIssue.id,\n rudderIssueId: created.id,\n rudderIssueIdentifier: created.identifier ?? null,\n orgId: input.orgId,\n });\n importedIssues.push({\n linearId: linearIssue.id,\n rudderIssueId: link.rudderIssueId,\n rudderIssueIdentifier: link.rudderIssueIdentifier,\n fallbackStatus: mapped.fallback,\n adjustedStatus: resolvedStatus.adjusted,\n finalStatus: resolvedStatus.status,\n });\n }\n\n return {\n importedCount: importedIssues.length,\n duplicateCount: duplicateIssueIds.length,\n fallbackCount: importedIssues.filter((issue) => issue.fallbackStatus).length,\n adjustedCount: importedIssues.filter((issue) => issue.adjustedStatus).length,\n importedIssues,\n duplicateIssueIds,\n };\n}\n\nasync function validateConfig(ctx: PluginContext, config: LinearPluginConfig): Promise<PluginConfigValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (!config.apiTokenSecretRef?.trim()) {\n errors.push(\"Linear token is required.\");\n }\n if (!Array.isArray(config.teamMappings) || config.teamMappings.length === 0) {\n warnings.push(\"No Linear teams have been prepared for import yet. Use Refresh from Linear in settings.\");\n }\n\n const seenTeams = new Set<string>();\n for (const team of config.teamMappings ?? []) {\n if (!team.teamId?.trim()) {\n errors.push(\"A Linear team choice has no team.\");\n continue;\n }\n if (seenTeams.has(team.teamId)) {\n errors.push(`Linear team ${team.teamName ?? team.teamId} is selected more than once.`);\n }\n seenTeams.add(team.teamId);\n for (const stateMapping of team.stateMappings ?? []) {\n if (stateMapping.rudderStatus === \"in_progress\") {\n warnings.push(\n `Linear team ${team.teamName ?? team.teamId} has a status rule that imports as in progress. Imports stay unassigned in v1, so those issues are downgraded to todo.`,\n );\n }\n }\n }\n\n if (errors.length > 0) return { ok: false, errors };\n\n try {\n const token = await ctx.secrets.resolve(config.apiTokenSecretRef!.trim());\n const client = createLinearApiClient(token, adaptHostFetch(ctx.http.fetch), {\n fixtureMode: config.fixtureMode === true,\n });\n await client.getViewer();\n if (config.fixtureMode === true || isFixtureMode()) {\n warnings.push(\"Linear fixture mode is enabled; external API calls are stubbed.\");\n }\n } catch (error) {\n errors.push(error instanceof Error ? error.message : String(error));\n }\n\n if (errors.length > 0) return { ok: false, errors };\n return { ok: true, warnings };\n}\n\nconst plugin = definePlugin({\n async setup(ctx: PluginContext) {\n currentContext = ctx;\n ctx.data.register(DATA_KEYS.settingsBootstrap, async () => {\n return await buildSettingsBootstrap(ctx);\n });\n\n ctx.data.register(DATA_KEYS.pageBootstrap, async (params: Record<string, unknown>) => {\n return await buildPageBootstrap(ctx, requireOrgId(params));\n });\n\n ctx.data.register(DATA_KEYS.settingsCatalog, async (params: Record<string, unknown>) => {\n return await buildSettingsCatalog(ctx, params);\n });\n\n ctx.data.register(DATA_KEYS.catalog, async (params: Record<string, unknown>) => {\n const orgId = requireOrgId(params);\n try {\n const { client, mapping } = await resolveLinearClient(ctx, orgId);\n const catalog = filterCatalogForMapping(await client.getCatalog(), mapping);\n return {\n orgId,\n ...catalog,\n };\n } catch {\n return {\n orgId,\n teams: [],\n projects: [],\n users: [],\n };\n }\n });\n\n ctx.data.register(DATA_KEYS.issues, async (params: Record<string, unknown>) => {\n const orgId = requireOrgId(params);\n try {\n const { client, mapping } = await resolveLinearClient(ctx, orgId);\n const limit = typeof params.limit === \"number\" ? Math.max(1, Math.min(100, Math.floor(params.limit))) : 25;\n const after = typeof params.after === \"string\" && params.after ? params.after : undefined;\n const filters = sanitizeFilters(params, getAllowedTeamIds(mapping));\n const importedIndex = await buildImportedLinkIndex(ctx);\n const connection = await client.listIssues(filters, limit, after);\n return {\n rows: connection.nodes.map((issue) => {\n const imported = importedIndex.get(issue.id) ?? null;\n return {\n ...issue,\n imported: Boolean(imported),\n importedRudderIssueId: imported?.rudderIssueId ?? null,\n importedRudderIssueIdentifier: imported?.rudderIssueIdentifier ?? null,\n importedOrgId: imported?.orgId ?? null,\n };\n }),\n endCursor: connection.endCursor,\n hasNextPage: connection.hasNextPage,\n totalShown: connection.nodes.length,\n };\n } catch {\n return {\n rows: [],\n endCursor: null,\n hasNextPage: false,\n totalShown: 0,\n };\n }\n });\n\n ctx.data.register(DATA_KEYS.issueLink, async (params: Record<string, unknown>): Promise<IssueLinkData> => {\n const orgId = requireOrgId(params);\n const issueId = typeof params.issueId === \"string\" ? params.issueId : \"\";\n if (!issueId) throw new Error(\"issueId is required\");\n const issue = await ctx.issues.get(issueId, orgId);\n if (!issue) throw new Error(\"Rudder issue not found\");\n const link = await findIssueLink(ctx, orgId, issueId);\n if (!link) {\n return {\n linked: false,\n issueTitle: issue.title,\n searchQuery: issue.title,\n };\n }\n try {\n const { client } = await resolveLinearClient(ctx, orgId);\n const latestIssue = await client.getIssue(link.externalId);\n return {\n linked: true,\n issueTitle: issue.title,\n link,\n latestIssue,\n staleReason: latestIssue ? null : \"The linked Linear issue could not be fetched; showing the last imported snapshot.\",\n };\n } catch (error) {\n return {\n linked: true,\n issueTitle: issue.title,\n link,\n latestIssue: null,\n staleReason: error instanceof Error ? error.message : String(error),\n };\n }\n });\n\n ctx.actions.register(ACTION_KEYS.importIssues, async (params: Record<string, unknown>) => {\n return await importIssuesAction(ctx, params as unknown as ImportLinearIssuesActionInput);\n });\n },\n\n async onHealth() {\n return {\n status: \"ok\",\n message: \"Linear plugin worker is running.\",\n details: {\n fixtureMode: isFixtureMode(),\n },\n };\n },\n\n async onValidateConfig(config: Record<string, unknown>) {\n if (!currentContext) {\n return {\n ok: false,\n errors: [\"Plugin context is not ready for configuration validation.\"],\n };\n }\n return await validateConfig(currentContext, normalizeConfig(config as LinearPluginConfig));\n },\n});\n\nlet currentContext: PluginContext | null = null;\n\nexport default plugin;\nrunWorker(plugin, import.meta.url);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["plugin", "util", "objectUtil", "path", "errorUtil", "path", "errorMap", "ctx", "result", "issues", "elements", "processed", "result", "r", "ZodFirstPartyTypeKind", "executionWorkspaceStrategySchema"]
|
|
7
7
|
}
|