@walkeros/mcp 4.2.0 → 4.2.1-next-1781526381392
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/index.js +2604 -1585
- package/dist/index.js.map +1 -1
- package/dist/stdio.js +2607 -1588
- package/dist/stdio.js.map +1 -1
- package/package.json +4 -4
package/dist/stdio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stdio.ts","../src/server.ts","../src/tools/validate.ts","../src/schemas/output.ts","../src/tools/bundle.ts","../src/tools/resolve-config-path.ts","../src/tools/simulate.ts","../src/tools/bundle-cache.ts","../src/tools/push.ts","../src/tools/examples.ts","../src/catalog.ts","../src/tools/package.ts","../src/tools/flow-load.ts","../src/types.ts","../src/user-data.ts","../src/tools/project-context.ts","../src/tools/feedback.ts","../src/tools/diagnostics.ts","../../../cli/openapi/spec.json","../src/tools/auth.ts","../src/tools/project-manage.ts","../src/action-requirements.ts","../src/tools/flow-manage.ts","../src/ui-parts.ts","../src/tools/deploy-manage.ts","../src/tools/_resolvers.ts","../src/tools/secret-manage.ts","../src/resources/package-schemas.ts","../src/resources/references.ts","../src/prompts/add-step.ts","../src/prompts/setup-mapping.ts","../src/prompts/manage-contract.ts","../src/instructions.ts","../src/telemetry.ts","../src/http-tool-client.ts"],"sourcesContent":["import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { setClientContext } from '@walkeros/cli';\n\nimport { createWalkerOSMcpServer, getMcpEmitterSingleton } from './server.js';\nimport { HttpToolClient } from './http-tool-client.js';\nimport { createMcpEmitter } from './telemetry.js';\n\ndeclare const __VERSION__: string;\n\nsetClientContext({ type: 'mcp', version: __VERSION__ });\n\n// Hook process-level error channels so we can emit `error throw` before the\n// process tears down. Both handlers look up the emitter lazily: if the MCP\n// handshake never completed, no emitter exists and we silently skip.\n// We don't call process.exit — stdio transport already propagates failures\n// up to the parent client via the JSON-RPC channel.\nprocess.on('uncaughtException', (err) => {\n const emitter = getMcpEmitterSingleton();\n if (emitter) {\n emitter.emitError('uncaught').catch(() => {});\n }\n console.error('Uncaught exception in Flow MCP server:', err);\n});\n\nprocess.on('unhandledRejection', (reason) => {\n const emitter = getMcpEmitterSingleton();\n if (emitter) {\n emitter.emitError('unhandledRejection').catch(() => {});\n }\n console.error('Unhandled rejection in Flow MCP server:', reason);\n});\n\nasync function main() {\n const server = createWalkerOSMcpServer({\n client: new HttpToolClient(),\n version: __VERSION__,\n });\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('walkerOS Flow MCP server running on stdio');\n}\n\nmain().catch(async (error) => {\n // Startup failure — no client handshake happened, so there's no emitter in\n // the module singleton. Build a one-shot emitter with an unknown client so\n // the error is still visible to telemetry.\n try {\n const emitter = await createMcpEmitter({\n clientInfo: undefined,\n packageVersion: __VERSION__,\n });\n await emitter.emitError('startup');\n } catch {\n // swallow — telemetry must never mask the original startup error\n }\n console.error('Failed to start Flow MCP server:', error);\n process.exit(1);\n});\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport type { ToolClient } from './tool-client.js';\nimport { registerFlowValidateTool } from './tools/validate.js';\nimport { registerFlowBundleTool } from './tools/bundle.js';\nimport { registerFlowSimulateTool } from './tools/simulate.js';\nimport { registerFlowPushTool } from './tools/push.js';\nimport { registerFlowExamplesTool } from './tools/examples.js';\nimport {\n registerPackageSearchTool,\n registerGetPackageSchemaTool,\n} from './tools/package.js';\nimport { registerFlowLoadTool } from './tools/flow-load.js';\nimport { registerFeedbackTool } from './tools/feedback.js';\nimport { registerDiagnosticsTool } from './tools/diagnostics.js';\nimport { registerAuthTool } from './tools/auth.js';\nimport { registerProjectManageTool } from './tools/project-manage.js';\nimport { registerFlowManageTool } from './tools/flow-manage.js';\nimport { registerDeployTool } from './tools/deploy-manage.js';\nimport { registerSecretManageTool } from './tools/secret-manage.js';\nimport { registerPackageSchemaResources } from './resources/package-schemas.js';\nimport { registerReferenceResources } from './resources/references.js';\nimport { registerAddStepPrompt } from './prompts/add-step.js';\nimport { registerSetupMappingPrompt } from './prompts/setup-mapping.js';\nimport { registerManageContractPrompt } from './prompts/manage-contract.js';\nimport { SERVER_INSTRUCTIONS } from './instructions.js';\nimport { createMcpEmitter, type McpEmitter } from './telemetry.js';\n\nexport interface Logger {\n debug?(message: string, meta?: Record<string, unknown>): void;\n info?(message: string, meta?: Record<string, unknown>): void;\n warn?(message: string, meta?: Record<string, unknown>): void;\n error?(message: string, meta?: Record<string, unknown>): void;\n}\n\nexport interface CreateServerOptions {\n client: ToolClient;\n logger?: Logger;\n version?: string;\n catalogBaseUrl?: string;\n}\n\n/**\n * Module-scoped singleton emitter, populated once the MCP `initialize`\n * handshake completes and clientInfo is known. The stdio entrypoint reads\n * this to emit process-level `error throw` events from uncaughtException /\n * unhandledRejection hooks, where the Server instance isn't in scope.\n */\nlet currentEmitter: McpEmitter | undefined;\n\nexport function getMcpEmitterSingleton(): McpEmitter | undefined {\n return currentEmitter;\n}\n\n/**\n * Internal: reset for tests that want a clean slate between cases.\n * Not exported from the package.\n */\nexport function __resetMcpEmitterSingletonForTesting(): void {\n currentEmitter = undefined;\n}\n\n/**\n * Minimal shape of a `_registeredTools` entry we rely on for handler\n * wrapping. Typed locally to avoid leaking SDK internals while keeping\n * strict typing on the handler signature.\n */\ntype WrappableRegisteredTool = {\n handler: (...args: unknown[]) => unknown;\n};\n\ntype RegisteredToolsRecord = Record<string, WrappableRegisteredTool>;\n\n/**\n * Wrap every already-registered tool handler with telemetry. The wrapper\n * emits `cmd invoke` with outcome + timing, swallowing any telemetry error\n * so it never surfaces to the tool caller. We look up the emitter lazily at\n * call time so wrapping can happen before the emitter is created.\n */\nfunction wrapRegisteredToolsWithTelemetry(server: McpServer): void {\n const internal = server as unknown as {\n _registeredTools: RegisteredToolsRecord;\n };\n const tools = internal._registeredTools;\n if (!tools) return;\n for (const [toolName, tool] of Object.entries(tools)) {\n const original = tool.handler;\n tool.handler = async (...args: unknown[]): Promise<unknown> => {\n const start = Date.now();\n try {\n const result = await original(...args);\n const emitter = currentEmitter;\n if (emitter) {\n emitter\n .emitInvoke(toolName, 'success', Date.now() - start)\n .catch(() => {});\n }\n return result;\n } catch (err) {\n const emitter = currentEmitter;\n if (emitter) {\n emitter\n .emitInvoke(toolName, 'error', Date.now() - start)\n .catch(() => {});\n }\n throw err;\n }\n };\n }\n}\n\nexport function createWalkerOSMcpServer(opts: CreateServerOptions): McpServer {\n const packageVersion = opts.version ?? '0.0.0';\n const server = new McpServer(\n {\n name: 'walkeros-flow',\n version: packageVersion,\n },\n { instructions: SERVER_INSTRUCTIONS },\n );\n\n registerAuthTool(server, opts.client);\n registerProjectManageTool(server, opts.client);\n registerFlowManageTool(server, opts.client);\n registerDeployTool(server, opts.client);\n registerSecretManageTool(server, opts.client);\n registerFeedbackTool(server, opts.client);\n registerDiagnosticsTool(server, opts.client, packageVersion);\n\n registerFlowValidateTool(server);\n registerFlowBundleTool(server, opts.client);\n registerFlowSimulateTool(server, opts.client);\n registerFlowPushTool(server);\n registerFlowExamplesTool(server);\n registerFlowLoadTool(server, opts.client);\n\n registerPackageSearchTool(server);\n registerGetPackageSchemaTool(server);\n\n registerPackageSchemaResources(server);\n registerReferenceResources(server);\n registerAddStepPrompt(server);\n registerSetupMappingPrompt(server);\n registerManageContractPrompt(server);\n\n wrapRegisteredToolsWithTelemetry(server);\n\n // MCP SDK fires `oninitialized` after the `initialized` notification, which\n // follows a successful `initialize` request. At that point `getClientVersion`\n // returns the negotiated client identity. We create the emitter here and\n // emit `mcp start`, so consent, debug, and endpoint resolution happen lazily\n // at the moment a real client connects.\n const priorOnInitialized = server.server.oninitialized;\n server.server.oninitialized = () => {\n try {\n priorOnInitialized?.();\n } catch {\n // existing handler must not prevent telemetry setup\n }\n const clientInfo = server.server.getClientVersion();\n void createMcpEmitter({\n clientInfo,\n packageVersion,\n })\n .then(async (emitter) => {\n currentEmitter = emitter;\n await emitter.emitStart();\n })\n .catch(() => {\n // telemetry must never break the server; swallow setup/emit errors.\n });\n };\n\n return server;\n}\n","import { validate, loadJsonConfig } from '@walkeros/cli';\nimport type { ValidateResult } from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { ValidateOutputShape } from '../schemas/output.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\n/**\n * Detect deprecated `@walkeros/store-memory` references in a flow.json.\n * Returns one validation error per offending store.\n *\n * MCP-layer concern: `@walkeros/store-memory` was removed and replaced by\n * the built-in cache (`Flow.Store.cache`). Surface a clear migration error\n * so users know what to do.\n */\nconst DEPRECATED_STORE_PACKAGE = '@walkeros/store-memory';\n\nfunction detectDeprecatedStorePackages(\n config: unknown,\n): ValidateResult['errors'] {\n const errors: ValidateResult['errors'] = [];\n if (!config || typeof config !== 'object') return errors;\n const flows = (config as { flows?: unknown }).flows;\n if (!flows || typeof flows !== 'object') return errors;\n for (const [flowName, flowEntry] of Object.entries(\n flows as Record<string, unknown>,\n )) {\n if (!flowEntry || typeof flowEntry !== 'object') continue;\n const stores = (flowEntry as { stores?: unknown }).stores;\n if (!stores || typeof stores !== 'object') continue;\n for (const [storeId, storeEntry] of Object.entries(\n stores as Record<string, unknown>,\n )) {\n if (!storeEntry || typeof storeEntry !== 'object') continue;\n const pkg = (storeEntry as { package?: unknown }).package;\n if (pkg === DEPRECATED_STORE_PACKAGE) {\n errors.push({\n path: `flows.${flowName}.stores.${storeId}`,\n message:\n `Store \"${storeId}\" uses ${DEPRECATED_STORE_PACKAGE}, which has been removed. ` +\n 'Use the built-in cache by omitting cache.store, or remove the store ' +\n 'declaration if it was only used as a cache target.',\n code: 'DEPRECATED_PACKAGE',\n });\n }\n }\n }\n return errors;\n}\n\nconst TITLE = 'Validate Flow';\nconst DESCRIPTION =\n 'Validate walkerOS events, flow configurations, mapping rules, or data contracts. ' +\n 'Accepts JSON strings, file paths, or URLs as input. ' +\n 'Returns validation results with errors, warnings, and details.';\n\nconst inputSchema = schemas.ValidateInputShape;\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createFlowValidateToolSpec(): ToolSpec {\n return {\n name: 'flow_validate',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowValidateHandlerBody(input),\n };\n}\n\nasync function flowValidateHandlerBody(input: unknown) {\n const {\n type,\n input: validateInput,\n flow,\n path,\n } = (input ?? {}) as {\n type: 'contract' | 'event' | 'flow' | 'mapping';\n input: string;\n flow?: string;\n path?: string;\n };\n try {\n const result: ValidateResult = await validate(type, validateInput, {\n flow,\n path,\n });\n\n // Post-validation pass: detect deprecated `@walkeros/store-memory`\n // references in flow configs. MCP-layer concern — keeps core\n // validation package-agnostic.\n let augmented = result;\n if (type === 'flow' && typeof validateInput === 'string') {\n try {\n const config = await loadJsonConfig<unknown>(validateInput);\n const deprecatedErrors = detectDeprecatedStorePackages(config);\n if (deprecatedErrors.length > 0) {\n augmented = {\n ...result,\n valid: false,\n errors: [...result.errors, ...deprecatedErrors],\n };\n }\n } catch {\n // Load failed (invalid JSON, missing file, etc.). The CLI validate\n // call already surfaces that; skip the deprecated-package check.\n }\n }\n\n const hints = augmented.valid\n ? {\n next: [\n 'Use flow_simulate to test event flow',\n 'Use flow_bundle to build',\n ],\n }\n : {\n next: [\n 'Fix errors above, then run flow_validate again',\n 'Read walkeros://reference/flow-schema for correct structure',\n ],\n };\n // Validation `message` and `path` are tool-generated, not echoed user\n // input — both stay literal, never wrapped in <user_data>.\n return mcpResult(augmented, hints);\n } catch (error) {\n return mcpError(\n error,\n 'Check the input parameter — expected a JSON string, file path, or URL',\n );\n }\n}\n\nexport function registerFlowValidateTool(server: McpServer) {\n const spec = createFlowValidateToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: ValidateOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\n\n// CLI tool output shapes\nexport const ValidateOutputShape = {\n valid: z.boolean().describe('Whether validation passed'),\n type: z\n .union([\n z.enum(['contract', 'entry', 'event', 'flow', 'mapping']),\n z.string().regex(/^(destinations|sources|transformers)\\.\\w+$/),\n ])\n .describe('What was validated'),\n errors: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n value: z.unknown().optional(),\n code: z.string().optional(),\n }),\n )\n .describe('Validation errors'),\n warnings: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n suggestion: z.string().optional(),\n }),\n )\n .describe('Validation warnings'),\n details: z\n .record(z.string(), z.unknown())\n .describe('Additional validation details'),\n};\n\nexport const BundleOutputShape = {\n success: z.boolean().describe('Whether bundling succeeded'),\n totalSize: z.number().optional().describe('Total bundle size in bytes'),\n buildTime: z.number().optional().describe('Build time in milliseconds'),\n packages: z\n .array(\n z.object({\n name: z.string(),\n }),\n )\n .optional()\n .describe('Names of packages included in the bundle'),\n treeshakingEffective: z\n .boolean()\n .optional()\n .describe('Whether tree-shaking was effective'),\n message: z.string().optional().describe('Status message'),\n};\n\nexport const SimulateOutputShape = {\n success: z.boolean().describe('Whether simulation succeeded'),\n error: z.string().optional().describe('Error message if failed'),\n summary: z.string().describe('One-line result summary'),\n destinations: z\n .record(\n z.string(),\n z.object({\n received: z\n .boolean()\n .describe('Whether destination received the event'),\n calls: z.number().describe('Number of API calls made'),\n payload: z\n .unknown()\n .optional()\n .describe('All intercepted API calls (only when verbose: true)'),\n }),\n )\n .optional()\n .describe('Per-destination results'),\n capturedEvents: z\n .array(z.record(z.string(), z.unknown()))\n .optional()\n .describe('Events captured by source simulation'),\n duration: z.number().optional().describe('Simulation duration in ms'),\n};\n\nexport const PushOutputShape = {\n success: z.boolean().describe('Whether push succeeded'),\n elbResult: z.unknown().optional().describe('Push result from the collector'),\n duration: z.number().describe('Push duration in milliseconds'),\n error: z.string().optional().describe('Error message if push failed'),\n};\n\n// Examples List output shape\nexport const ExamplesListOutputShape = {\n flow: z.string().describe('Flow name'),\n count: z.number().describe('Number of examples found'),\n examples: z\n .array(\n z.object({\n step: z.string().describe('Step location (e.g., \"destination.gtag\")'),\n stepType: z\n .enum(['source', 'transformer', 'destination'])\n .describe('Step type'),\n stepName: z.string().describe('Step name'),\n exampleName: z.string().describe('Example name'),\n source: z\n .enum(['inline', 'package'])\n .describe(\n 'Where the example came from: \"inline\" (defined in the flow step) or \"package\" (shipped by the referenced package)',\n ),\n title: z.string().optional().describe('Human-readable title if set'),\n description: z\n .string()\n .optional()\n .describe('Short human-readable description'),\n public: z\n .boolean()\n .optional()\n .describe(\n 'Whether the example is public (defaults to true if omitted)',\n ),\n hasIn: z.boolean().describe('Whether the example has an input value'),\n hasOut: z.boolean().describe('Whether the example has an output value'),\n hasMapping: z\n .boolean()\n .describe('Whether the example has a mapping configuration'),\n hasTrigger: z\n .boolean()\n .describe('Whether the example has trigger metadata'),\n in: z.unknown().optional().describe('Input event data'),\n out: z.unknown().optional().describe('Expected output data'),\n mapping: z\n .unknown()\n .optional()\n .describe('Mapping configuration for destinations'),\n trigger: z\n .object({\n type: z.string().optional(),\n options: z.unknown().optional(),\n })\n .optional()\n .describe('Trigger metadata for source simulation'),\n }),\n )\n .describe('Step examples'),\n};\n","import { bundle } from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { BundleOutputShape } from '../schemas/output.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport { resolveConfigPath } from './resolve-config-path.js';\n\nconst TITLE = 'Bundle Flow';\nconst DESCRIPTION =\n 'Bundle a walkerOS flow configuration into deployable JavaScript. ' +\n 'Resolves all destinations, sources, and transformers, then outputs ' +\n 'a tree-shaken production bundle. Returns bundle statistics.';\n\nconst inputSchema = {\n ...schemas.BundleInputShape,\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFlowBundleToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_bundle',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowBundleHandlerBody(client, input),\n };\n}\n\nasync function flowBundleHandlerBody(client: ToolClient, input: unknown) {\n const { configPath, flow, stats, output } = (input ?? {}) as {\n configPath: string;\n flow?: string;\n stats?: boolean;\n output?: string;\n };\n try {\n // Accept a cloud flow/config id as configPath, resolving it to inline JSON.\n const resolvedConfigPath = await resolveConfigPath(client, configPath);\n const result = await bundle(resolvedConfigPath, {\n flowName: flow,\n stats: stats ?? true,\n buildOverrides: output ? { output } : undefined,\n });\n\n if (!result) {\n return mcpResult(\n { success: false, message: 'Bundle produced no output' },\n {\n warnings: [\n 'The build returned no result. The flow may be empty or misconfigured.',\n ],\n next: ['Run flow_validate to check your configuration'],\n },\n );\n }\n\n const output_ = result as unknown as Record<string, unknown>;\n\n return mcpResult(\n { success: true, ...output_ },\n {\n next: [\n 'Use flow_simulate to test',\n 'Use deploy_manage with action \"deploy\" to publish',\n ],\n },\n );\n } catch (error) {\n return mcpError(error, 'Run flow_validate for detailed error messages');\n }\n}\n\nexport function registerFlowBundleTool(server: McpServer, client: ToolClient) {\n const spec = createFlowBundleToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: BundleOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import type { ToolClient } from '../tool-client.js';\n\n/** `flow_` and `cfg_` are reserved walkerOS API id namespaces. A configPath\n * matching either is a cloud flow/config id, resolved via the client rather\n * than treated as a local file path, URL, or inline JSON. */\nconst API_ID_PREFIX = /^(flow|cfg)_/;\n\n/**\n * Resolve a `configPath` for tools that consume it (simulate, bundle). When it\n * is a cloud flow/config id, fetch the flow via the same client seam `flow_load`\n * uses and return its config serialized as JSON (the underlying CLI functions\n * accept inline JSON as `configPath`). Otherwise return the value unchanged so\n * file paths, URLs, and inline JSON pass through as before.\n */\nexport async function resolveConfigPath(\n client: Pick<ToolClient, 'getFlow'>,\n configPath: string,\n): Promise<string> {\n if (!API_ID_PREFIX.test(configPath)) return configPath;\n\n const flow = await client.getFlow({ flowId: configPath });\n const config = (flow as { config?: Record<string, unknown> }).config;\n return JSON.stringify(config ?? {});\n}\n","import { z } from 'zod';\nimport {\n simulateSource,\n simulateTransformer,\n simulateDestination,\n simulateCollector,\n} from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport type { Ingest, Simulation, WalkerOS } from '@walkeros/core';\nimport { SimulateOutputShape } from '../schemas/output.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport { resolveConfigPath } from './resolve-config-path.js';\nimport { getOrBuildBundle } from './bundle-cache.js';\n\ninterface DestinationSummary {\n received: boolean;\n calls: number;\n payload?: unknown;\n}\n\nconst TITLE = 'Simulate Flow';\nconst DESCRIPTION =\n 'Simulate events through a walkerOS flow without making real API calls. ' +\n 'For destinations: event is a walkerOS event { name: \"entity action\", data: {...} }. ' +\n 'For sources: event is { content, trigger?: { type?, options? } }, where content is the ' +\n 'walkerOS event { name: \"entity action\", data: {...} }. ' +\n 'step (required) targets the step to simulate, e.g. \"destination.gtag\". ' +\n 'Use flow_examples to discover available test data. ' +\n 'IMPORTANT: Destinations with require (e.g. require: [\"consent\"]) stay pending until ' +\n 'that collector event fires — simulation will error \"not found\" if require is not satisfied. ' +\n 'Remove require from config or provide consent/user events before simulating. ' +\n 'Separately, destinations with consent (e.g. consent: { marketing: true }) only receive ' +\n 'events where the event includes matching consent. ' +\n 'Mapping transforms event names and data at the destination level. ' +\n 'Policy redacts or injects fields before mapping runs.';\n\nconst inputSchema = {\n configPath: schemas.SimulateInputShape.configPath,\n event: z\n .union([z.record(z.string(), z.unknown()), z.string()])\n .optional()\n .describe(\n 'For destinations: { name, data, consent? }. Include consent (e.g. { marketing: true }) ' +\n 'to satisfy destination consent requirements. ' +\n 'For sources: { content, trigger? } where content is the walkerOS event ' +\n '{ name, data }. ' +\n 'Can also be a JSON string or file path.',\n ),\n flow: schemas.SimulateInputShape.flow,\n platform: schemas.SimulateInputShape.platform,\n // Override the (optional) CLI `step` shape: the simulate handler hard-requires\n // a target step (no all-steps mode), so the registered schema must be honest.\n step: z\n .string()\n .describe(\n 'Required. Target step as \"type.name\" — e.g. \"source.demo\", \"destination.gtag\", \"transformer.router\".',\n ),\n verbose: z\n .boolean()\n .optional()\n .describe('Include full payload per destination (default: false)'),\n ingest: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\n 'Pipeline context a transformer reads via ctx.ingest, e.g. { url } for a ' +\n 'request decoder. Only used for transformer steps.',\n ),\n state: z\n .object({\n consent: z.record(z.string(), z.unknown()).optional(),\n user: z.record(z.string(), z.unknown()).optional(),\n globals: z.record(z.string(), z.unknown()).optional(),\n timing: z.number().optional(),\n })\n .optional()\n .describe(\n 'Collector-state snapshot for collector steps: consent/user/globals/timing. ' +\n 'Seeds the collector before enrichment runs.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createFlowSimulateToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_simulate',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowSimulateHandlerBody(client, input),\n };\n}\n\nasync function flowSimulateHandlerBody(client: ToolClient, input: unknown) {\n const { configPath, event, flow, platform, step, verbose, ingest, state } =\n (input ?? {}) as {\n configPath: string;\n event?: Record<string, unknown> | string;\n flow?: string;\n platform?: 'web' | 'server';\n step?: string;\n verbose?: boolean;\n ingest?: Omit<Ingest, '_meta'>;\n state?: {\n consent?: WalkerOS.Consent;\n user?: WalkerOS.User;\n globals?: WalkerOS.Properties;\n timing?: number;\n };\n };\n try {\n if (!event) {\n throw new Error(\n 'event is required. For sources provide { content, trigger? }, for destinations provide { name, data }.',\n );\n }\n\n if (!step) {\n throw new Error(\n 'step is required. Specify a target like \"source.browser\", \"destination.gtag\", or \"transformer.demo\".',\n );\n }\n\n // Resolve string event input (JSON string)\n let resolvedEvent: unknown = event;\n if (typeof event === 'string') {\n try {\n resolvedEvent = JSON.parse(event);\n } catch {\n throw new Error(\n 'Event string must be valid JSON. Got: ' + event.substring(0, 50),\n );\n }\n }\n\n // Parse step into type and id\n const dotIndex = step.indexOf('.');\n if (dotIndex === -1) {\n throw new Error(\n `Invalid step format \"${step}\". Use \"type.name\" (e.g. \"source.browser\", \"destination.gtag\").`,\n );\n }\n const stepType = step.substring(0, dotIndex);\n const stepId = step.substring(dotIndex + 1);\n\n // Accept a cloud flow/config id as configPath, resolving it to inline JSON.\n const resolvedConfigPath = await resolveConfigPath(client, configPath);\n\n // Reuse a prebuilt bundle across calls with the same resolved config. The\n // simulate fns take their fast `mode: 'prebuilt'` branch when given a\n // bundlePath, skipping the per-call rebuild. On any bundle failure fall back\n // to undefined so the simulate fn rebuilds and surfaces its canonical error.\n let bundlePath: string | undefined;\n try {\n bundlePath = await getOrBuildBundle(resolvedConfigPath);\n } catch {\n bundlePath = undefined;\n }\n\n let result: Simulation.Result;\n\n switch (stepType) {\n case 'source':\n result = await simulateSource(resolvedConfigPath, resolvedEvent, {\n sourceId: stepId,\n bundlePath,\n flow,\n silent: true,\n });\n break;\n\n case 'transformer':\n result = await simulateTransformer(\n resolvedConfigPath,\n resolvedEvent as WalkerOS.DeepPartialEvent,\n {\n transformerId: stepId,\n bundlePath,\n flow,\n silent: true,\n ingest,\n },\n );\n break;\n\n case 'collector':\n result = await simulateCollector(\n resolvedConfigPath,\n resolvedEvent as WalkerOS.DeepPartialEvent,\n {\n collectorName: stepId,\n bundlePath,\n flow,\n silent: true,\n state,\n },\n );\n break;\n\n case 'destination':\n result = await simulateDestination(\n resolvedConfigPath,\n resolvedEvent as WalkerOS.DeepPartialEvent,\n {\n destinationId: stepId,\n bundlePath,\n flow,\n silent: true,\n },\n );\n break;\n\n default:\n throw new Error(\n `Unknown step type \"${stepType}\". Use \"source\", \"collector\", \"transformer\", or \"destination\".`,\n );\n }\n\n const success = !result.error;\n const errorMessage = result.error?.message;\n\n // Source simulation: captured events are result.events\n if (result.step === 'source') {\n const eventCount = result.events.length;\n const summary = `Source captured ${eventCount} event${eventCount !== 1 ? 's' : ''}`;\n\n return mcpResult(\n {\n success,\n error: errorMessage,\n summary,\n capturedEvents: result.events,\n duration: result.duration,\n },\n {\n next:\n eventCount > 0\n ? [\n 'Use flow_simulate with a destination step to test downstream processing',\n ]\n : [\n 'Check source package examples with package_get, verify trigger type matches',\n ],\n },\n );\n }\n\n // Transformer simulation: surface the transformed events\n if (result.step === 'transformer') {\n return mcpResult(\n {\n success,\n error: errorMessage,\n summary: `Transformer processed event`,\n capturedEvents: result.events,\n duration: result.duration,\n },\n {\n next: ['Use flow_bundle to build for production'],\n },\n );\n }\n\n // Collector simulation: surface the enriched event\n if (result.step === 'collector') {\n return mcpResult(\n {\n success,\n error: errorMessage,\n summary: `Collector enriched event`,\n capturedEvents: result.events,\n duration: result.duration,\n },\n {\n next: ['Use flow_simulate with a destination step to test delivery'],\n },\n );\n }\n\n // Destination simulation: count intercepted env calls, key by step name\n const destinations: Record<string, DestinationSummary> = {};\n const callCount = result.calls.length;\n const destSummary: DestinationSummary = {\n received: callCount > 0,\n calls: callCount,\n };\n if (verbose && callCount > 0) {\n destSummary.payload = result.calls;\n }\n destinations[result.name] = destSummary;\n\n const destCount = Object.keys(destinations).length;\n const receivedCount = Object.values(destinations).filter(\n (d) => d.received,\n ).length;\n\n const warnings: string[] = [];\n if (receivedCount === 0) {\n warnings.push(\n 'Destination did not receive the event. Common causes: ' +\n '(1) destination config has consent: { marketing: true } but event lacks matching consent, ' +\n '(2) mapping rules do not match the event name, ' +\n '(3) policy redacted required fields. ' +\n 'Add consent to the event: { name: \"...\", data: {...}, consent: { marketing: true } }.',\n );\n }\n\n const resultObj = {\n success,\n error: errorMessage,\n summary: `${receivedCount}/${destCount} destinations received the event`,\n destinations,\n duration: result.duration,\n };\n\n return mcpResult(resultObj, {\n next: ['Use flow_bundle to build for production'],\n ...(warnings.length > 0 ? { warnings } : {}),\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : '';\n let hint = 'Run flow_validate for detailed error messages';\n if (msg.includes('not found in collector')) {\n hint =\n 'If this destination has require: [\"consent\"] or require: [\"user\"], it stays ' +\n 'pending until that event fires. For simulation, either remove require from ' +\n 'the config or simulate with a flow that omits require on the target destination.';\n }\n return mcpError(error, hint);\n }\n}\n\nexport function registerFlowSimulateTool(\n server: McpServer,\n client: ToolClient,\n) {\n const spec = createFlowSimulateToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: SimulateOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { createHash } from 'node:crypto';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { mkdir, rm, writeFile } from 'node:fs/promises';\nimport { rmSync } from 'node:fs';\nimport { bundle } from '@walkeros/cli';\n\n/**\n * Content-addressed cache of prebuilt simulate bundles for the MCP\n * `flow_simulate` tool. Each `flow_simulate` call otherwise re-bundles the\n * whole flow (`mode: 'build'`), which dominates latency. By keying a prebuilt\n * ESM by the hash of the *resolved* config content, repeated simulations of the\n * same flow reuse one bundle and a changed flow rebuilds.\n *\n * The CLI simulate functions accept a `bundlePath`; passing it takes their\n * `mode: 'prebuilt'` branch and skips the bundle step entirely.\n */\n\ninterface CacheEntry {\n bundlePath: string;\n dir: string;\n}\n\n/** LRU bound: enough to cover a few flows iterated in one session without\n * leaking temp dirs. Oldest entry is evicted (and its dir removed) on insert. */\nconst MAX_ENTRIES = 8;\n\n/** Insertion-ordered map gives us LRU for free: delete+set on access moves the\n * key to the end; the first key is the least-recently used. */\nconst cache = new Map<string, CacheEntry>();\n\n/** In-flight builds, deduped by key so two concurrent identical simulate calls\n * bundle once instead of racing to write the same artifact. */\nconst inFlight = new Map<string, Promise<string>>();\n\nlet cleanupRegistered = false;\n\nfunction hashConfig(resolvedConfig: string): string {\n return createHash('sha256').update(resolvedConfig).digest('hex');\n}\n\n/**\n * Inline JSON config content is cacheable: its full content is the cache key,\n * so an edit always re-keys. A file path or URL is NOT: `resolveConfigPath`\n * returns it unchanged, so the key would be the path string and an edit to the\n * file behind it would silently reuse a stale bundle. Such inputs skip the\n * cache and take the simulate fns' build path (which re-reads the file).\n *\n * The discriminator matches how the CLI simulate fns treat `configPath`: a\n * string that parses as JSON is inline config; anything else is a path/URL.\n */\nfunction isInlineJsonConfig(resolvedConfig: string): boolean {\n const trimmed = resolvedConfig.trimStart();\n if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) return false;\n try {\n JSON.parse(resolvedConfig);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction registerProcessCleanup(): void {\n if (cleanupRegistered) return;\n cleanupRegistered = true;\n const cleanup = () => {\n for (const entry of cache.values()) {\n // Synchronous best-effort removal on exit; async fs is not safe here.\n try {\n rmSync(entry.dir, { recursive: true, force: true });\n } catch {\n // Temp dir already gone or unwritable; nothing to recover.\n }\n }\n cache.clear();\n };\n process.once('exit', cleanup);\n}\n\nasync function evictIfNeeded(): Promise<void> {\n while (cache.size > MAX_ENTRIES) {\n const oldestKey = cache.keys().next().value;\n if (oldestKey === undefined) break;\n const evicted = cache.get(oldestKey);\n cache.delete(oldestKey);\n if (evicted) await rm(evicted.dir, { recursive: true, force: true });\n }\n}\n\n/**\n * Build the resolved config into a prebuilt simulate ESM and return its path,\n * reusing a cached bundle when the same resolved config was bundled before.\n *\n * `resolvedConfig` is the exact string the simulate functions would otherwise\n * receive as `configPath` (inline JSON for cloud ids after id resolution, or a\n * file path / URL / inline JSON otherwise). Keying on it means a cloud id whose\n * underlying content changes between calls rebuilds correctly.\n *\n * Returns `undefined` for file-path / URL configs (see `isInlineJsonConfig`):\n * those bypass the cache so an edited file is never served from a stale bundle.\n * The caller then passes the original configPath with no bundlePath, taking the\n * simulate fns' build path exactly as before.\n *\n * The producer mirrors the CLI build-mode bundle: target `simulate`\n * (skipWrapper + withDev, /dev graph inlined) written as ESM. The flow's own\n * platform is preserved via the bundler's platform defaults; only the output\n * format is pinned to ESM so the CLI can import it directly.\n */\nexport async function getOrBuildBundle(\n resolvedConfig: string,\n): Promise<string | undefined> {\n if (!isInlineJsonConfig(resolvedConfig)) return undefined;\n\n registerProcessCleanup();\n const key = hashConfig(resolvedConfig);\n\n const cached = cache.get(key);\n if (cached) {\n // Refresh LRU position.\n cache.delete(key);\n cache.set(key, cached);\n return cached.bundlePath;\n }\n\n const pending = inFlight.get(key);\n if (pending) return pending;\n\n const build = (async () => {\n const dir = path.join(\n os.tmpdir(),\n `walkeros-mcp-bundle-${key.slice(0, 16)}`,\n );\n await rm(dir, { recursive: true, force: true });\n await mkdir(dir, { recursive: true });\n const bundlePath = path.join(dir, 'flow.mjs');\n\n // Touch the file first so a producer that only mutates (rather than writes)\n // still leaves a real artifact; the bundler overwrites it with the real ESM.\n await writeFile(bundlePath, '', 'utf-8');\n\n // Load-bearing: `bundle()` derives platform from the flow config and\n // intentionally ignores `preset.platform` (the 'simulate' preset is node),\n // so a web flow still bundles browser-platform, equivalent to build-mode.\n // If `bundle()` ever honors `preset.platform`, web simulations via this\n // cache would silently bundle for node and diverge.\n await bundle(resolvedConfig, {\n target: 'simulate',\n silent: true,\n buildOverrides: { output: bundlePath, format: 'esm', minify: false },\n });\n\n cache.set(key, { bundlePath, dir });\n await evictIfNeeded();\n return bundlePath;\n })();\n\n inFlight.set(key, build);\n try {\n return await build;\n } finally {\n inFlight.delete(key);\n }\n}\n\n/** Test-only: clear the cache and remove all temp dirs. */\nexport async function __resetBundleCacheForTests(): Promise<void> {\n inFlight.clear();\n const dirs = Array.from(cache.values(), (e) => e.dir);\n cache.clear();\n await Promise.all(\n dirs.map((dir) => rm(dir, { recursive: true, force: true })),\n );\n}\n","import { z } from 'zod';\nimport { push } from '@walkeros/cli';\nimport type { PushResult } from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { PushOutputShape } from '../schemas/output.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\nconst TITLE = 'Push Events';\nconst DESCRIPTION =\n 'Push a real event through a walkerOS flow to actual destinations. ' +\n 'Makes real API calls to real endpoints. ' +\n 'Best suited for server-side flows — web flows should use flow_simulate for testing.';\n\nconst inputSchema = {\n configPath: schemas.PushInputShape.configPath,\n event: z\n .record(z.string(), z.unknown())\n .describe(\n 'Event object, e.g. { name: \"page view\", data: { title: \"Home\" } }',\n ),\n flow: schemas.PushInputShape.flow,\n platform: schemas.PushInputShape.platform,\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFlowPushToolSpec(): ToolSpec {\n return {\n name: 'flow_push',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowPushHandlerBody(input),\n };\n}\n\nasync function flowPushHandlerBody(input: unknown) {\n const { configPath, event, flow, platform } = (input ?? {}) as {\n configPath: string;\n event: Record<string, unknown>;\n flow?: string;\n platform?: 'web' | 'server';\n };\n try {\n const result: PushResult = await push(configPath, event, {\n json: true,\n flow,\n platform,\n });\n\n if (!result.success) {\n return mcpError(\n new Error(result.error || 'Push failed'),\n 'Check destination configuration and connectivity.',\n );\n }\n\n return mcpResult(result);\n } catch (error) {\n return mcpError(\n error,\n 'Check configPath and event format. For web flows, use flow_simulate.',\n );\n }\n}\n\nexport function registerFlowPushTool(server: McpServer) {\n const spec = createFlowPushToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: PushOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\nimport { loadJsonConfig } from '@walkeros/cli';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackage, mcpResult, mcpError } from '@walkeros/core';\nimport type { Flow } from '@walkeros/core';\nimport { ExamplesListOutputShape } from '../schemas/output.js';\nimport { getPackageBaseUrl, CLIENT_HEADER } from '../catalog.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\nconst TITLE = 'Flow Examples';\nconst DESCRIPTION =\n 'List all step examples in a walkerOS flow configuration. ' +\n 'Shows example names, step locations, and in/out shapes. ' +\n 'Inline examples on a step take precedence; steps without inline examples ' +\n 'fall back to the examples shipped by their referenced package. ' +\n 'Each result is tagged with its source (\"inline\" or \"package\"). ' +\n 'Use this to discover available test fixtures and simulation data.';\n\nconst inputSchema = {\n configPath: z\n .string()\n .min(1)\n .describe('Path to flow configuration file, URL, or inline JSON string'),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n step: z\n .string()\n .optional()\n .describe('Filter to a specific step (e.g., \"destination.gtag\")'),\n full: z\n .boolean()\n .optional()\n .describe(\n 'Return full in/out/mapping data for each example (default: false, returns metadata only)',\n ),\n includeHidden: z\n .boolean()\n .optional()\n .describe(\n 'Include examples marked public: false (default: false). Set true for test/debug discovery.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createFlowExamplesToolSpec(): ToolSpec {\n return {\n name: 'flow_examples',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowExamplesHandlerBody(input),\n };\n}\n\nasync function flowExamplesHandlerBody(input: unknown) {\n const { configPath, flow, step, full, includeHidden } = (input ?? {}) as {\n configPath: string;\n flow?: string;\n step?: string;\n full?: boolean;\n includeHidden?: boolean;\n };\n try {\n const rawConfig = await loadJsonConfig<Flow.Json>(configPath);\n\n // Resolve flow name\n const flowNames = Object.keys(rawConfig.flows || {});\n const flowName =\n flow || (flowNames.length === 1 ? flowNames[0] : undefined);\n\n if (!flowName) {\n throw new Error(\n `Multiple flows found. Specify flow parameter. Available: ${flowNames.join(', ')}`,\n );\n }\n\n const flowSettings = rawConfig.flows[flowName];\n if (!flowSettings) {\n throw new Error(`Flow \"${flowName}\" not found`);\n }\n\n // Collect all examples\n type ExampleItem = {\n step: string;\n stepType: string;\n stepName: string;\n exampleName: string;\n source: 'inline' | 'package';\n title?: string;\n description?: string;\n public?: boolean;\n hasIn: boolean;\n hasOut: boolean;\n hasMapping: boolean;\n hasTrigger: boolean;\n in?: unknown;\n out?: unknown;\n mapping?: unknown;\n trigger?: unknown;\n };\n const examples: ExampleItem[] = [];\n\n const toItems = (\n stepExamples: Flow.StepExamples,\n type: string,\n name: string,\n source: 'inline' | 'package',\n ): ExampleItem[] => {\n const items: ExampleItem[] = [];\n for (const [exName, ex] of Object.entries(stepExamples)) {\n if (!includeHidden && ex.public === false) continue;\n items.push({\n step: `${type}.${name}`,\n stepType: type,\n stepName: name,\n exampleName: exName,\n source,\n title: ex.title,\n description: ex.description,\n public: ex.public,\n hasIn: ex.in !== undefined,\n hasOut: ex.out !== undefined,\n hasMapping: ex.mapping !== undefined,\n hasTrigger: ex.trigger !== undefined,\n ...(full\n ? {\n in: ex.in,\n out: ex.out,\n mapping: ex.mapping,\n trigger: ex.trigger,\n }\n : {}),\n });\n }\n return items;\n };\n\n // Pull a referenced package's shipped step examples via the same path\n // package_get uses. A failed fetch must not break the whole tool: the\n // step is skipped and inline examples from other steps still return.\n const baseUrl = getPackageBaseUrl();\n const loadPackageExamples = async (\n packageName: string,\n ): Promise<Flow.StepExamples | undefined> => {\n try {\n const info = await fetchPackage(packageName, {\n baseUrl,\n client: CLIENT_HEADER,\n });\n const stepExamples = (info.examples as { step?: unknown } | undefined)\n ?.step;\n if (stepExamples && typeof stepExamples === 'object')\n return stepExamples as Flow.StepExamples;\n } catch {\n // Swallow: graceful fallback skip for this package.\n }\n return undefined;\n };\n\n const stepTypes = [\n { key: 'sources' as const, type: 'source' },\n { key: 'transformers' as const, type: 'transformer' },\n { key: 'destinations' as const, type: 'destination' },\n ];\n\n for (const { key, type } of stepTypes) {\n const refs = flowSettings[key] || {};\n for (const [name, ref] of Object.entries(refs)) {\n // Apply step filter\n if (step && `${type}.${name}` !== step) continue;\n\n // Inline examples take precedence over package-shipped ones.\n if (ref.examples) {\n examples.push(\n ...toItems(ref.examples as Flow.StepExamples, type, name, 'inline'),\n );\n continue;\n }\n\n // No inline examples: fall back to the referenced package's shipped\n // examples (only for refs that actually name a package).\n if (!ref.package) continue;\n const packageExamples = await loadPackageExamples(ref.package);\n if (packageExamples)\n examples.push(...toItems(packageExamples, type, name, 'package'));\n }\n }\n\n const result = {\n flow: flowName,\n count: examples.length,\n examples,\n };\n\n const hints: { next: string[]; warnings?: string[] } = {\n next: ['Use flow_simulate with step and event to simulate'],\n };\n if (examples.length === 0) {\n hints.warnings = [\n 'No examples found. Add examples to step entries, or reference a package that ships examples (see package_get).',\n ];\n }\n return mcpResult(result, hints);\n } catch (error) {\n return mcpError(error, 'Check configPath — expected a flow.json file');\n }\n}\n\nexport function registerFlowExamplesTool(server: McpServer) {\n const spec = createFlowExamplesToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: ExamplesListOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","// __VERSION__ is replaced at build time by tsup's `define` (see tsup.config.ts).\n// In tests, it's set on globalThis (see src/__tests__/support/version.ts).\ndeclare const __VERSION__: string;\n\nconst NPM_SEARCH_URL = 'https://registry.npmjs.org/-/v1/search';\nconst JSDELIVR_BASE = 'https://cdn.jsdelivr.net/npm';\nconst WALKEROS_JSON_PATH = 'dist/walkerOS.json';\nconst CACHE_TTL = 5 * 60 * 1000;\n\nexport const CLIENT_HEADER = 'walkeros-mcp/' + __VERSION__;\n\n/**\n * Resolve the walkerOS app base URL for MCP outbound calls.\n *\n * Env-only by design: the MCP runs in an editor with explicit `.mcp.json`\n * env. No config-file precedence (which is what `@walkeros/cli`'s\n * `resolveAppUrl()` does for the `walkeros` CLI binary). Hard-cut:\n * `APP_URL` is no longer recognized.\n *\n * Lives here (not in tools/package.ts) because both the package tools and the\n * catalog resources need to resolve the same app-primary base URL. This is an\n * in-package helper, not a cross-package registry.\n */\nexport function getPackageBaseUrl(): string | undefined {\n return process.env.WALKEROS_APP_URL || undefined;\n}\n\nexport interface CatalogEntry {\n name: string;\n version: string;\n description?: string;\n type: string;\n platform: string[];\n}\n\nexport interface CatalogResult {\n entries: CatalogEntry[];\n warnings: string[];\n}\n\n/**\n * Provenance of the most recent `fetchCatalog` call. Module-scoped and\n * last-call-wins: the stdio MCP is a single process, so the diagnostics tool\n * reads which source (`app` vs `npm` fallback) served the last catalog fetch,\n * how many entries it produced, and whether any were dropped (partial).\n * `undefined` until the first fetch.\n */\nexport interface LastCatalogFetchInfo {\n source: 'app' | 'npm';\n count: number;\n partial: boolean;\n timestamp: number;\n}\n\nlet lastFetchInfo: LastCatalogFetchInfo | undefined;\n\nexport function getLastCatalogSource(): LastCatalogFetchInfo | undefined {\n return lastFetchInfo;\n}\n\n// Cache keyed by effective source (app baseUrl or 'npm'). The tool reads\n// app-primary and the resources read npm-primary; a shared cache let one\n// source's result leak into the other. Only complete, non-empty results are\n// cached, so a transient empty/partial fetch never freezes for the TTL.\nconst cache = new Map<string, { entries: CatalogEntry[]; timestamp: number }>();\n\nexport function clearCatalogCache() {\n cache.clear();\n}\n\nexport function normalizePlatform(platform?: unknown): string[] {\n if (platform == null) return [];\n if (typeof platform === 'string') {\n return platform === 'universal' ? ['web', 'server'] : [platform];\n }\n if (Array.isArray(platform)) {\n return platform.filter((v): v is string => typeof v === 'string');\n }\n return [];\n}\n\ninterface SourceResult {\n entries: CatalogEntry[];\n complete: boolean;\n // Number of packages the source listed before enrichment, so the caller can\n // compute how many were dropped (listed minus enriched).\n requested: number;\n}\n\nexport async function fetchCatalog(filters?: {\n type?: string;\n platform?: string;\n baseUrl?: string;\n}): Promise<CatalogResult> {\n const sourceKey = filters?.baseUrl ?? 'npm';\n const warnings: string[] = [];\n\n const cached = cache.get(sourceKey);\n if (cached && Date.now() - cached.timestamp < CACHE_TTL) {\n lastFetchInfo = {\n source: filters?.baseUrl ? 'app' : 'npm',\n count: cached.entries.length,\n partial: false,\n timestamp: Date.now(),\n };\n return { entries: applyFilters(cached.entries, filters), warnings };\n }\n\n let result: SourceResult;\n // Which source actually served. Starts as the requested source, flips to\n // 'npm' when an app fetch fails over to the npm fallback.\n let servedBy: 'app' | 'npm' = filters?.baseUrl ? 'app' : 'npm';\n if (filters?.baseUrl) {\n try {\n result = await fetchCatalogFrom(filters.baseUrl, filters);\n } catch {\n warnings.push(\n 'app catalog endpoint unavailable, fell back to npm; results may be incomplete',\n );\n servedBy = 'npm';\n try {\n result = await fetchFromNpm();\n } catch {\n lastFetchInfo = {\n source: 'npm',\n count: 0,\n partial: true,\n timestamp: Date.now(),\n };\n return { entries: [], warnings };\n }\n }\n } else {\n try {\n result = await fetchFromNpm();\n } catch {\n lastFetchInfo = {\n source: 'npm',\n count: 0,\n partial: true,\n timestamp: Date.now(),\n };\n return { entries: [], warnings };\n }\n }\n\n const dropped = result.requested - result.entries.length;\n if (dropped > 0) {\n warnings.push(\n `${dropped} package(s) could not be enriched and were omitted`,\n );\n }\n\n lastFetchInfo = {\n source: servedBy,\n count: result.entries.length,\n partial: !result.complete,\n timestamp: Date.now(),\n };\n\n // Only freeze a complete, non-empty result. Empty or partial fetches must\n // retry on the next call rather than serve a stale shortfall for the TTL.\n if (result.entries.length > 0 && result.complete) {\n cache.set(sourceKey, { entries: result.entries, timestamp: Date.now() });\n }\n\n return { entries: applyFilters(result.entries, filters), warnings };\n}\n\nasync function fetchCatalogFrom(\n baseUrl: string,\n filters?: { type?: string; platform?: string },\n): Promise<SourceResult> {\n const params = new URLSearchParams();\n if (filters?.type) params.set('type', filters.type);\n if (filters?.platform) params.set('platform', filters.platform);\n\n const url = `${baseUrl}/api/packages${params.toString() ? `?${params}` : ''}`;\n const res = await fetch(url, {\n signal: AbortSignal.timeout(15000),\n headers: { 'X-Walkeros-Client': CLIENT_HEADER },\n });\n if (!res.ok) throw new Error(`Catalog fetch failed: ${res.status}`);\n\n const data = (await res.json()) as { catalog: CatalogEntry[] };\n const entries = data.catalog;\n return { entries, complete: entries.length > 0, requested: entries.length };\n}\n\nasync function fetchFromNpm(): Promise<SourceResult> {\n const res = await fetch(`${NPM_SEARCH_URL}?text=@walkeros/&size=250`, {\n signal: AbortSignal.timeout(10000),\n headers: { 'X-Walkeros-Client': CLIENT_HEADER },\n });\n if (!res.ok) throw new Error(`npm search failed: ${res.status}`);\n\n const data = (await res.json()) as {\n objects: Array<{\n package: { name: string; version: string; description?: string };\n }>;\n };\n\n const requested = data.objects.length;\n\n const metaResults = await Promise.allSettled(\n data.objects.map((obj) => enrichWithMeta(obj.package)),\n );\n\n const entries = metaResults\n .filter(\n (r): r is PromiseFulfilledResult<CatalogEntry | undefined> =>\n r.status === 'fulfilled',\n )\n .map((r) => r.value)\n .filter((entry): entry is CatalogEntry => entry !== undefined);\n\n // A non-empty npm list with fewer enriched entries means jsdelivr silently\n // dropped some packages; treat that as incomplete so it is not cached.\n const complete = requested === 0 || entries.length === requested;\n return { entries, complete, requested };\n}\n\nasync function enrichWithMeta(pkg: {\n name: string;\n version: string;\n description?: string;\n}): Promise<CatalogEntry | undefined> {\n try {\n const res = await fetch(\n `${JSDELIVR_BASE}/${pkg.name}@${pkg.version}/${WALKEROS_JSON_PATH}`,\n {\n signal: AbortSignal.timeout(5000),\n headers: { 'X-Walkeros-Client': CLIENT_HEADER },\n },\n );\n if (!res.ok) return undefined;\n\n const json = (await res.json()) as { $meta?: Record<string, unknown> };\n const meta = json.$meta;\n if (!meta || typeof meta.type !== 'string') return undefined;\n\n return {\n name: pkg.name,\n version: pkg.version,\n description: pkg.description,\n type: meta.type,\n platform: normalizePlatform(meta.platform),\n };\n } catch {\n return undefined;\n }\n}\n\nfunction applyFilters(\n entries: CatalogEntry[],\n filters?: { type?: string; platform?: string },\n): CatalogEntry[] {\n let results = entries;\n if (filters?.type) {\n results = results.filter((e) => e.type === filters.type);\n }\n if (filters?.platform) {\n // Empty platform means platform-agnostic → matches any filter\n results = results.filter(\n (e) => e.platform.length === 0 || e.platform.includes(filters.platform!),\n );\n }\n return results;\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackage, mcpResult, mcpError } from '@walkeros/core';\nimport { mergeConfigSchema } from '@walkeros/core/dev';\nimport {\n fetchCatalog,\n normalizePlatform,\n getPackageBaseUrl,\n CLIENT_HEADER,\n} from '../catalog.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\n// `getPackageBaseUrl` lives in ../catalog.js because both these tools and the\n// catalog resources resolve the same app-primary base URL. Re-exported here so\n// existing importers of `tools/package.js` keep working.\nexport { getPackageBaseUrl };\n\n// ---------- package_search ----------\n\nconst SEARCH_TITLE = 'Search Package';\nconst SEARCH_DESCRIPTION =\n 'Start here for package discovery. Never guess package names: use this tool first to find exact names. ' +\n 'Without package name: returns catalog filtered by type/platform. ' +\n 'With package name: returns metadata, hint keys, and example summaries.';\n\nconst searchInputSchema = {\n package: z\n .string()\n .min(1)\n .optional()\n .describe(\n 'Exact npm package name for detailed lookup (e.g., @walkeros/web-destination-snowplow)',\n ),\n type: z\n .enum(['source', 'destination', 'transformer', 'store'])\n .optional()\n .describe('Filter by package type (browse mode)'),\n platform: z\n .enum(['web', 'server'])\n .optional()\n .describe('Filter by platform (browse mode, includes universal packages)'),\n version: z\n .string()\n .optional()\n .describe('Package version for detailed lookup (default: latest)'),\n};\n\nconst searchAnnotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createPackageSearchToolSpec(): ToolSpec {\n return {\n name: 'package_search',\n title: SEARCH_TITLE,\n description: SEARCH_DESCRIPTION,\n inputSchema: searchInputSchema,\n annotations: searchAnnotations,\n handler: (input) => packageSearchHandlerBody(input),\n };\n}\n\nasync function packageSearchHandlerBody(input: unknown) {\n const {\n package: packageName,\n type,\n platform,\n version,\n } = (input ?? {}) as {\n package?: string;\n type?: 'source' | 'destination' | 'transformer' | 'store';\n platform?: 'web' | 'server';\n version?: string;\n };\n const baseUrl = getPackageBaseUrl();\n\n // Browse mode: no package specified → return catalog\n if (!packageName) {\n const { entries, warnings } = await fetchCatalog({\n type,\n platform,\n baseUrl,\n });\n const result = { catalog: entries, count: entries.length };\n return mcpResult(result, {\n next: ['Use package_get for schemas and examples'],\n ...(warnings.length > 0 ? { warnings } : {}),\n });\n }\n\n // Lookup mode: fetch specific package details\n try {\n const info = await fetchPackage(packageName, {\n version,\n baseUrl,\n client: CLIENT_HEADER,\n });\n\n const result = {\n package: info.packageName,\n version: info.version,\n description: info.description,\n type: info.type,\n platform: normalizePlatform(info.platform),\n hintKeys: info.hintKeys,\n exampleSummaries: info.exampleSummaries,\n };\n\n return mcpResult(result, {\n next: ['Use package_get for schemas and examples'],\n });\n } catch (error) {\n return mcpError(\n error,\n 'Package not found. Use package_search without parameters to browse available packages.',\n );\n }\n}\n\nexport function registerPackageSearchTool(server: McpServer) {\n const spec = createPackageSearchToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // No outputSchema: browse mode returns {catalog, count}, lookup returns metadata — incompatible shapes\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n\n// ---------- package_get ----------\n\nconst GET_TITLE = 'Get Package';\nconst GET_DESCRIPTION =\n 'Requires exact package name: do not guess names, use package_search first to find them. ' +\n 'Returns schemas + hint texts + example summaries by default (lightweight). ' +\n 'Use section parameter for full content: \"hints\" (with code blocks), \"examples\" (full in/out data), or \"all\".';\n\nconst getInputSchema = {\n package: z\n .string()\n .min(1)\n .describe(\n 'Exact npm package name (e.g., @walkeros/web-destination-snowplow)',\n ),\n version: z.string().optional().describe('Package version (default: latest)'),\n section: z\n .enum(['hints', 'examples', 'all'])\n .optional()\n .describe(\n 'Section to expand with full content. Default: summary view with schemas + hint texts + example descriptions',\n ),\n};\n\nconst getAnnotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n} as const;\n\nexport function createPackageGetToolSpec(): ToolSpec {\n return {\n name: 'package_get',\n title: GET_TITLE,\n description: GET_DESCRIPTION,\n inputSchema: getInputSchema,\n annotations: getAnnotations,\n handler: (input) => packageGetHandlerBody(input),\n };\n}\n\nasync function packageGetHandlerBody(input: unknown) {\n const {\n package: packageName,\n version,\n section,\n } = (input ?? {}) as {\n package: string;\n version?: string;\n section?: 'hints' | 'examples' | 'all';\n };\n const baseUrl = getPackageBaseUrl();\n\n try {\n const info = await fetchPackage(packageName, {\n version,\n baseUrl,\n client: CLIENT_HEADER,\n });\n\n // Build merged schemas: base config + package settings → schemas.config\n const mergedSchemas: Record<string, unknown> = {};\n\n if (info.type) {\n mergedSchemas.config = mergeConfigSchema(\n info.type as 'source' | 'destination' | 'transformer' | 'store',\n info.schemas as Record<string, Record<string, unknown>>,\n );\n }\n\n // Keep non-settings schemas as siblings (mapping, ga4, tagger, etc.)\n for (const [key, value] of Object.entries(info.schemas)) {\n if (key !== 'settings') {\n mergedSchemas[key] = value;\n }\n }\n\n const result: Record<string, unknown> = {\n package: info.packageName,\n version: info.version,\n type: info.type,\n platform: normalizePlatform(info.platform),\n schemas: mergedSchemas,\n };\n\n // Hints\n if (info.hints) {\n if (section === 'hints' || section === 'all') {\n result.hints = info.hints;\n } else {\n const hintSummary: Record<string, { text: string }> = {};\n for (const [key, hint] of Object.entries(info.hints)) {\n const h = hint as { text: string };\n hintSummary[key] = { text: h.text };\n }\n result.hints = hintSummary;\n }\n }\n\n // Examples\n if (section === 'examples' || section === 'all') {\n result.examples = info.examples;\n } else {\n result.exampleSummaries = info.exampleSummaries;\n }\n\n return mcpResult(result);\n } catch (error) {\n return mcpError(\n error,\n 'Use package_search to browse available package names.',\n );\n }\n}\n\nexport function registerGetPackageSchemaTool(server: McpServer) {\n const spec = createPackageGetToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // No outputSchema: removed to avoid SDK -32602 crashes on unexpected field values\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { loadJsonConfig } from '@walkeros/cli';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport { redactNestedStrings, keepStructural } from '../user-data.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n NO_DEFAULT_PROJECT_ERROR,\n resolveDefaultProject,\n} from './project-context.js';\n\n/** `flow_` and `cfg_` are reserved walkerOS API id namespaces. A source\n * matching either is a cloud flow/config id, loaded via the client, not a\n * local file path or URL. */\nconst API_ID_PREFIX = /^(flow|cfg)_/;\n\nconst WEB_SKELETON = {\n version: 4,\n flows: {\n default: {\n config: { platform: 'web', bundle: { packages: {} } },\n sources: {},\n destinations: {},\n },\n },\n};\n\nconst SERVER_SKELETON = {\n version: 4,\n flows: {\n default: {\n config: { platform: 'server', bundle: { packages: {} } },\n sources: {},\n destinations: {},\n },\n },\n};\n\nconst TITLE = 'Load or Create Flow';\nconst DESCRIPTION =\n 'Load an existing flow configuration from a local file path, URL, or walkerOS API (by flow ID). ' +\n 'Or create a new empty flow by specifying a platform (web or server). ' +\n 'Use the add-step prompt to add sources, destinations, transformers, or stores to the flow.';\n\nconst inputSchema = {\n source: z\n .string()\n .optional()\n .describe(\n 'Flow source: local file path (./flow.json), URL (https://...), ' +\n 'inline JSON string, or API flow ID (cfg_...). Omit to create a new flow.',\n ),\n platform: z\n .enum(['web', 'server'])\n .optional()\n .describe(\n 'Platform for new flows. Required when source is omitted. ' +\n 'web = browser tracking, server = Node.js HTTP.',\n ),\n};\n\nconst outputSchema = {\n version: z.number().describe('Flow config version'),\n flows: z.record(z.string(), z.unknown()).describe('Flow entries'),\n};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n} as const;\n\nexport function createFlowLoadToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_load',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowLoadHandlerBody(client, input),\n };\n}\n\nasync function flowLoadHandlerBody(client: ToolClient, input: unknown) {\n const { source, platform } = (input ?? {}) as {\n source?: string;\n platform?: 'web' | 'server';\n };\n\n // Load by cloud flow/config id (flow_… / cfg_…) via the same client seam\n // flow_manage `get` uses. Its NOT_FOUND surfaces directly, never remapped\n // to the local \"file not found\" hint below.\n if (source && API_ID_PREFIX.test(source)) {\n const resolvedProjectId = resolveDefaultProject(client, undefined);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n try {\n const flow = await client.getFlow({\n flowId: source,\n projectId: resolvedProjectId,\n });\n const config = (flow as { config?: Record<string, unknown> }).config;\n return mcpResult(\n redactNestedStrings(config ?? {}, { skip: keepStructural }),\n {\n next: ['Use flow_validate to check', 'Use add-step prompt to modify'],\n },\n );\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n }\n\n try {\n if (source) {\n const config = await loadJsonConfig(source);\n return mcpResult(redactNestedStrings(config, { skip: keepStructural }), {\n next: ['Use flow_validate to check', 'Use add-step prompt to modify'],\n });\n }\n\n if (!platform) {\n return mcpError(\n new Error(\n 'Provide source (file path, URL, or flow ID) to load existing flow, ' +\n 'or platform (web/server) to create a new one.',\n ),\n );\n }\n\n const skeleton = platform === 'web' ? WEB_SKELETON : SERVER_SKELETON;\n return mcpResult(skeleton, {\n next: [\n 'Read walkeros://reference/flow-schema for config structure',\n 'Use add-step prompt to add sources and destinations',\n ],\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : '';\n if (msg.includes('not found') || msg.includes('ENOENT'))\n return mcpError(error, 'Check configPath — expected a flow.json file');\n return mcpError(error);\n }\n}\n\nexport function registerFlowLoadTool(server: McpServer, client: ToolClient) {\n const spec = createFlowLoadToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","// Shared types for MCP management tools.\n// Keep this file dependency-light: only type-level imports from SDK/core.\n\n/**\n * Discriminated input shape for action-based MCP tools.\n * Example: ActionToolInput<'list', { projectId?: string }>\n */\nexport type ActionToolInput<A extends string, T = Record<string, never>> = {\n action: A;\n} & T;\n\n/**\n * Uniform handler return shape used by all mgmt tools.\n * Matches mcpResult / mcpError from @walkeros/core.\n */\nexport type ToolHandlerResult = {\n content: Array<{ type: 'text'; text: string }>;\n structuredContent: Record<string, unknown>;\n isError?: true;\n};\n\n/**\n * True when the error looks like an authentication/authorization failure\n * from the walkerOS cloud API. Used to decide whether to append the\n * \"Are you logged in?\" hint on caught errors.\n */\nexport function isAuthError(error: unknown): boolean {\n if (!(error instanceof Error)) return false;\n const msg = error.message.toLowerCase();\n if (\n msg.includes('unauthorized') ||\n msg.includes('forbidden') ||\n msg.includes('invalid token') ||\n msg.includes('token expired') ||\n msg.includes('not authenticated')\n ) {\n return true;\n }\n const code = (error as Error & { code?: string }).code;\n if (!code) return false;\n const upperCode = code.toUpperCase();\n return (\n upperCode === 'UNAUTHORIZED' ||\n upperCode === 'FORBIDDEN' ||\n upperCode === '401' ||\n upperCode === '403' ||\n upperCode.startsWith('AUTH_')\n );\n}\n\nexport const AUTH_HINT =\n 'Are you logged in? Use auth(action: \"status\") to check.';\n","/**\n * Wraps a user-writable string in `<user_data>…</user_data>` so the chat\n * assistant treats it as data, never as instructions. Inner `</user_data>`\n * sequences are mangled (`</user_data_>`) so a malicious string can't close\n * the envelope early.\n *\n * Idempotent: a string that is already a well-formed envelope with no inner\n * `</user_data>` is returned unchanged.\n */\nexport function wrapUserData(s: string): string {\n const alreadyWrapped =\n s.startsWith('<user_data>') &&\n s.endsWith('</user_data>') &&\n s.slice(11, -12).indexOf('</user_data>') === -1;\n if (alreadyWrapped) return s;\n const neutralised = s.replace(/<\\/user_data>/g, '</user_data_>');\n return `<user_data>${neutralised}</user_data>`;\n}\n\n/**\n * The single redaction rule for every tool that echoes flow/deployment data\n * back to the chat assistant:\n *\n * wrap only the human-facing display `name`/`flowName` field and deep config\n * VALUES; leave all structural ids/keys literal everywhere.\n *\n * Redaction exists to neutralise user-CONTROLLED string VALUES so an injected\n * `</user_data>` can't escape the envelope. It must NOT touch:\n * - structural keys (ids, slugs, dates, immutable identifiers): the LLM needs\n * to reference them verbatim, and wrapping them breaks get→edit→update\n * round-trips (e.g. wrapping `package`/`platform` corrupts a config the\n * user pushes straight back).\n * - tool-generated text (validation messages, error strings): that text is\n * authored by us, not echoed user input, so it stays literal like `path`.\n *\n * `STRUCTURAL_KEYS` is the union of every key whose value is an id/slug/date/\n * immutable identifier rather than user free-text. Confirmed: none of these key\n * names ever hold a genuine user-authored free-text value — `package`/`platform`\n * are enum/package-name fields, `kind` is a discriminator, the rest are\n * server-generated ids/timestamps.\n */\nexport const STRUCTURAL_KEYS = new Set([\n 'id',\n 'flowId',\n 'projectId',\n 'previewId',\n 'version',\n 'slug',\n 'kind',\n 'createdAt',\n 'updatedAt',\n 'deletedAt',\n 'package',\n 'platform',\n]);\n\n/** Return `true` for keys that must stay literal (ids, slugs, dates, package,\n * platform). Use as the `skip` predicate for {@link redactNestedStrings}. */\nexport const keepStructural = (key: string): boolean =>\n STRUCTURAL_KEYS.has(key);\n\nexport interface RedactOptions {\n /** Return `true` to skip wrapping for a given object key. Only invoked for\n * string values on object entries — not for array elements or scalar\n * roots. Use to keep ids / slugs / dates literal. */\n skip?: (key: string) => boolean;\n}\n\n/**\n * Recursively walks `value` and returns a deep-copied structure where every\n * string leaf has been passed through `wrapUserData`. Pass `skip` to exclude\n * specific keys (e.g. `id`) from wrapping.\n */\nexport function redactNestedStrings<T>(value: T, opts?: RedactOptions): T {\n return walk(value, opts) as T;\n}\n\n/** Human-facing display fields wrapped on echoed flow/deployment summaries even\n * when the rest of the object is left literal. */\nconst DISPLAY_NAME_KEYS = new Set(['name', 'flowName']);\n\n/**\n * Recursively wraps ONLY the human-facing display `name`/`flowName` fields,\n * leaving every other value (ids, slugs, status, type, dates) literal. Use on\n * tool responses that echo deployment/flow summaries where the only\n * user-authored free-text is the display name.\n */\nexport function redactDisplayNames<T>(value: T): T {\n return walkDisplay(value) as T;\n}\n\nfunction walkDisplay(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(walkDisplay);\n if (value && typeof value === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n if (DISPLAY_NAME_KEYS.has(k) && typeof v === 'string') {\n out[k] = wrapUserData(v);\n } else {\n out[k] = walkDisplay(v);\n }\n }\n return out;\n }\n return value;\n}\n\nfunction walk(value: unknown, opts?: RedactOptions): unknown {\n if (typeof value === 'string') return wrapUserData(value);\n if (Array.isArray(value)) return value.map((v) => walk(v, opts));\n if (value && typeof value === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n if (opts?.skip?.(k) && typeof v === 'string') {\n out[k] = v;\n } else {\n out[k] = walk(v, opts);\n }\n }\n return out;\n }\n return value;\n}\n","import type { ToolClient } from '../tool-client.js';\n\nexport const NO_DEFAULT_PROJECT_ERROR =\n 'No default project set and no projectId provided. Run project_manage action \"set_default\", or pass projectId.';\n\n/** Resolves the project for actions that fall back to the CLI default when\n * `projectId` is omitted. Returns the resolved id, or undefined when there is\n * no default to fall back to (the no-project-at-all case). An explicit\n * `projectId` is always honoured as-is so the app's genuine NOT_FOUND still\n * surfaces for an explicit-but-wrong id. */\nexport function resolveDefaultProject(\n client: ToolClient,\n projectId: string | undefined,\n): string | undefined {\n return projectId ?? client.getDefaultProject() ?? undefined;\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\n\ndeclare const __VERSION__: string;\n\nconst TITLE = 'Send Feedback';\nconst DESCRIPTION = 'Send feedback about walkerOS';\n\nconst inputSchema = {\n text: z.string().describe('Your feedback text'),\n anonymous: z\n .boolean()\n .optional()\n .describe(\n 'Include user/project info? false = include, true = anonymous. Only needed on first call if not yet configured.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFeedbackToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'feedback',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => feedbackHandlerBody(client, input),\n };\n}\n\nasync function feedbackHandlerBody(client: ToolClient, input: unknown) {\n const { text, anonymous: explicitAnonymous } = (input ?? {}) as {\n text: string;\n anonymous?: boolean;\n };\n try {\n let anonymous = client.getFeedbackPreference();\n\n if (anonymous === undefined && explicitAnonymous === undefined) {\n return mcpResult(\n { needsConsent: true },\n {\n next: [\n 'Ask the user if they want to include their info',\n 'Call feedback again with anonymous: true or false',\n ],\n },\n );\n }\n\n if (anonymous === undefined && explicitAnonymous !== undefined) {\n anonymous = explicitAnonymous;\n client.setFeedbackPreference(anonymous);\n }\n\n const isAnonymous = explicitAnonymous ?? anonymous ?? true;\n\n await client.submitFeedback(text, {\n anonymous: isAnonymous,\n version: __VERSION__,\n });\n\n return mcpResult({ ok: true });\n } catch (error) {\n return mcpError(error);\n }\n}\n\nexport function registerFeedbackTool(server: McpServer, client: ToolClient) {\n const spec = createFeedbackToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult } from '@walkeros/core';\nimport {\n VERSION as CLI_VERSION,\n resolveAppUrl,\n compareContract,\n} from '@walkeros/cli';\nimport type { ContractComparison } from '@walkeros/cli';\nimport openapiSpec from '@walkeros/cli/openapi/spec.json';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport { getPackageBaseUrl, getLastCatalogSource } from '../catalog.js';\n\n// The bundled OpenAPI contract version, embedded at build time via the import\n// above (no runtime module resolution). This is the client's bundled baseline,\n// not the live backend's spec.\nconst CONTRACT_OPENAPI_VERSION: string = openapiSpec.info.version;\n\nconst TITLE = 'Diagnostics';\nconst DESCRIPTION =\n 'Report the MCP runtime surface: MCP and CLI versions, the resolved app URL ' +\n 'and its source, app /api/health reachability, the bundled OpenAPI contract ' +\n 'version, and which source served the last package catalog fetch. ' +\n 'Read-only and callable when logged out; use it when a request fails to see ' +\n 'which versions and backend you are on.';\n\n// No input fields: diagnostics is callable with `{}`, including logged out.\nconst inputSchema = {};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n} as const;\n\nexport function createDiagnosticsToolSpec(\n client: ToolClient,\n packageVersion: string,\n): ToolSpec {\n return {\n name: 'diagnostics',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: () => diagnosticsHandlerBody(client, packageVersion),\n };\n}\n\nasync function diagnosticsHandlerBody(\n client: ToolClient,\n packageVersion: string,\n) {\n // Provenance via the same helper the catalog uses; do not add a parallel\n // process.env check.\n const appUrlSource: 'env' | 'default' = getPackageBaseUrl()\n ? 'env'\n : 'default';\n const resolved = resolveAppUrl();\n\n // checkHealth is optional on ToolClient: clients that cannot probe\n // reachability omit it, in which case diagnostics degrades to\n // { reachable: false }. When present, its contract is to resolve\n // { reachable: false } on failure, but catch here too so a throwing client\n // never breaks diagnostics.\n const health: { reachable: boolean; status?: string } = client.checkHealth\n ? await client.checkHealth().catch(() => ({ reachable: false }))\n : { reachable: false };\n const healthUnavailable = !client.checkHealth;\n\n // Contract drift verdict: compare the client's baked baseline against the\n // live app's /api/health. Degrade to 'unknown' if the probe throws so a\n // network blip never breaks diagnostics.\n const contractComparison: ContractComparison = await compareContract().catch(\n () => ({\n verdict: 'unknown' as const,\n bakedVersion: CONTRACT_OPENAPI_VERSION,\n }),\n );\n\n const catalogInfo = getLastCatalogSource();\n\n const warnings: string[] = [];\n if (appUrlSource === 'default') {\n warnings.push(\n 'WALKEROS_APP_URL is not set; using the default app URL. Set it to target a specific backend.',\n );\n }\n if (healthUnavailable) {\n warnings.push(\n 'health check is unavailable on this client; app reachability is reported as false.',\n );\n } else if (!health.reachable) {\n warnings.push(\n `app /api/health is unreachable at ${resolved}; check the URL, network, and that the app is running.`,\n );\n }\n if (\n contractComparison.verdict === 'client-older' &&\n contractComparison.action\n ) {\n warnings.push(\n `client contract is behind the server: ${contractComparison.action}.`,\n );\n }\n\n const result = {\n mcp: { version: packageVersion },\n cli: { version: CLI_VERSION },\n appUrl: { resolved, source: appUrlSource },\n // app.version is intentionally omitted: the CLI's generated HealthResponse\n // is { status } only, so it is not a typed field here.\n app: {\n reachable: health.reachable,\n ...(health.status !== undefined && { status: health.status }),\n },\n contract: {\n openapiVersion: CONTRACT_OPENAPI_VERSION,\n verdict: contractComparison.verdict,\n ...(contractComparison.action !== undefined && {\n action: contractComparison.action,\n }),\n },\n catalog: catalogInfo\n ? {\n lastSource: catalogInfo.source,\n lastCount: catalogInfo.count,\n partial: catalogInfo.partial,\n }\n : { lastSource: undefined, lastCount: undefined, partial: undefined },\n };\n\n return mcpResult(result, warnings.length > 0 ? { warnings } : undefined);\n}\n\nexport function registerDiagnosticsTool(\n server: McpServer,\n client: ToolClient,\n packageVersion: string,\n) {\n const spec = createDiagnosticsToolSpec(client, packageVersion);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","{\n \"openapi\": \"3.1.0\",\n \"info\": {\n \"title\": \"walkerOS Tag Manager API\",\n \"version\": \"1.1.0\",\n \"description\": \"API for managing walkerOS flows, projects, and real-time event observation.\",\n \"contact\": {\n \"name\": \"elbwalker\",\n \"url\": \"https://www.elbwalker.com\"\n }\n },\n \"servers\": [\n {\n \"url\": \"/\",\n \"description\": \"Current server\"\n }\n ],\n \"tags\": [\n {\n \"name\": \"Auth\",\n \"description\": \"Authentication (magic link, session, identity)\"\n },\n {\n \"name\": \"Projects\",\n \"description\": \"Project management and membership\"\n },\n {\n \"name\": \"Flows\",\n \"description\": \"Flow CRUD (project-scoped)\"\n },\n {\n \"name\": \"Versions\",\n \"description\": \"Flow version history\"\n },\n {\n \"name\": \"Deployments\",\n \"description\": \"Flow deployment management\"\n },\n {\n \"name\": \"Settings\",\n \"description\": \"Per-settings management (named flows within a Config)\"\n },\n {\n \"name\": \"Tokens\",\n \"description\": \"API token management\"\n },\n {\n \"name\": \"Service Accounts\",\n \"description\": \"Project service accounts and their tokens\"\n },\n {\n \"name\": \"Invitations\",\n \"description\": \"Project membership invitations\"\n },\n {\n \"name\": \"Billing\",\n \"description\": \"Project billing details\"\n },\n {\n \"name\": \"Bundle\",\n \"description\": \"Flow bundling utility\"\n },\n {\n \"name\": \"Observe\",\n \"description\": \"Real-time event observation\"\n },\n {\n \"name\": \"Chat\",\n \"description\": \"AI chat sessions and elicitation\"\n },\n {\n \"name\": \"Telemetry\",\n \"description\": \"Anonymous CLI/MCP usage telemetry\"\n },\n {\n \"name\": \"System\",\n \"description\": \"Health and documentation\"\n },\n {\n \"name\": \"Observer\",\n \"description\": \"Observer service (Fastify, port 3001)\"\n },\n {\n \"name\": \"Feedback\",\n \"description\": \"Public feedback submission (CLI, MCP, in-app)\"\n }\n ],\n \"components\": {\n \"schemas\": {\n \"ErrorResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"error\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\",\n \"example\": \"VALIDATION_ERROR\"\n },\n \"message\": {\n \"type\": \"string\",\n \"example\": \"Validation failed\"\n },\n \"details\": {\n \"type\": \"object\",\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"reason\": {\n \"type\": \"string\"\n },\n \"errors\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"path\", \"message\"]\n }\n }\n },\n \"additionalProperties\": {}\n }\n },\n \"required\": [\"code\", \"message\"]\n }\n },\n \"required\": [\"error\"]\n },\n \"ClientOutdatedError\": {\n \"type\": \"object\",\n \"properties\": {\n \"error\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\",\n \"enum\": [\"CLIENT_OUTDATED\"]\n },\n \"message\": {\n \"type\": \"string\",\n \"example\": \"This endpoint requires @walkeros/cli >= 3.5.0 (you are on 3.3.1).\"\n },\n \"minVersion\": {\n \"type\": \"string\",\n \"example\": \"3.5.0\"\n },\n \"clientVersion\": {\n \"type\": \"string\",\n \"example\": \"3.3.1\"\n },\n \"client\": {\n \"type\": \"string\",\n \"example\": \"cli\"\n },\n \"upgrade\": {\n \"type\": \"string\",\n \"example\": \"npm install -g @walkeros/cli@latest\"\n },\n \"docs\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"example\": \"https://walkeros.io/docs/upgrading\"\n }\n },\n \"required\": [\n \"code\",\n \"message\",\n \"minVersion\",\n \"clientVersion\",\n \"client\",\n \"upgrade\",\n \"docs\"\n ]\n }\n },\n \"required\": [\"error\"]\n },\n \"FlowConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"number\",\n \"enum\": [4]\n },\n \"$schema\": {\n \"type\": \"string\"\n },\n \"include\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"variables\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"flows\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"contract\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n },\n \"required\": [\"version\"],\n \"additionalProperties\": {}\n },\n \"Flow\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsSummary\"\n }\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"deletedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"config\", \"createdAt\", \"updatedAt\"]\n },\n \"FlowSettingsSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"platform\", \"createdAt\", \"updatedAt\"]\n },\n \"FlowSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"summary\": {\n \"type\": \"string\"\n },\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsListItem\"\n }\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"deletedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"createdAt\", \"updatedAt\", \"deletedAt\"]\n },\n \"FlowSettingsListItem\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"deploymentStatus\": {\n \"type\": [\"string\", \"null\"]\n },\n \"deploymentUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"deployedAt\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"platform\",\n \"deploymentStatus\",\n \"deploymentUrl\",\n \"deployedAt\"\n ]\n },\n \"Version\": {\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdBy\": {\n \"type\": \"string\",\n \"enum\": [\"user\", \"auto_save\", \"restore\"],\n \"example\": \"user\"\n },\n \"contentHash\": {\n \"type\": \"string\",\n \"example\": \"sha256:abc123...\"\n }\n },\n \"required\": [\"version\", \"createdAt\", \"createdBy\"]\n },\n \"Project\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\",\n \"example\": \"My Website\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"],\n \"example\": \"owner\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"memberCount\": {\n \"type\": \"integer\",\n \"example\": 3\n },\n \"flowCount\": {\n \"type\": \"integer\",\n \"example\": 5\n },\n \"deploymentCount\": {\n \"type\": \"integer\",\n \"example\": 2\n },\n \"isDemo\": {\n \"type\": \"boolean\",\n \"example\": false\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"role\",\n \"createdAt\",\n \"updatedAt\",\n \"memberCount\",\n \"flowCount\",\n \"deploymentCount\",\n \"isDemo\"\n ]\n },\n \"Member\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"userId\", \"email\", \"role\", \"createdAt\"]\n },\n \"ApiTokenSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"example\": \"tok_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"example\": \"CI Pipeline\"\n },\n \"prefix\": {\n \"type\": \"string\",\n \"example\": \"sk-walkeros-abcd\"\n },\n \"origin\": {\n \"type\": \"string\",\n \"example\": \"manual\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"],\n \"example\": null\n },\n \"scopes\": {\n \"type\": [\"array\", \"null\"],\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": null\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"revokedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"prefix\",\n \"origin\",\n \"projectId\",\n \"scopes\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\",\n \"revokedAt\"\n ]\n },\n \"FlowSettingsDetail\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"config\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"deployment\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"status\", \"type\", \"createdAt\", \"updatedAt\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"platform\",\n \"config\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"DeploySettingsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"settingsId\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"status\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"deploymentId\", \"settingsId\", \"status\"]\n },\n \"FlowDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsEnriched\"\n }\n },\n \"bundleId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"deletedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"config\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\"\n ]\n },\n \"FlowSettingsEnriched\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"deployment\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"slug\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"id\",\n \"slug\",\n \"status\",\n \"type\",\n \"target\",\n \"containerUrl\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"platform\",\n \"deployment\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"FlowUpdateResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"config\", \"createdAt\", \"updatedAt\"]\n },\n \"CreateProjectResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"createdAt\"]\n },\n \"UpdateProjectResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"updatedAt\"]\n },\n \"DeploymentSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"currentVersionNumber\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0\n },\n \"url\": {\n \"type\": [\"string\", \"null\"]\n },\n \"flowId\": {\n \"type\": [\"string\", \"null\"],\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"flowName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"traceUntil\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"usageSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventsIn24h\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"healthy\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"eventsIn24h\", \"healthy\"]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"currentVersionNumber\",\n \"url\",\n \"flowId\",\n \"flowName\",\n \"createdAt\",\n \"updatedAt\",\n \"traceUntil\"\n ]\n },\n \"DeploymentDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"currentVersion\": {\n \"$ref\": \"#/components/schemas/DeploymentVersionDetail\"\n },\n \"versions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/DeploymentVersionHistoryEntry\"\n }\n },\n \"error\": {\n \"$ref\": \"#/components/schemas/DeploymentError\"\n },\n \"url\": {\n \"type\": [\"string\", \"null\"]\n },\n \"selfHosted\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"lastHeartbeatAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"instanceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"cliVersion\": {\n \"type\": [\"string\", \"null\"]\n },\n \"healthy\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"lastHeartbeatAt\",\n \"instanceId\",\n \"cliVersion\",\n \"healthy\"\n ]\n },\n \"traceUntil\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"currentVersion\",\n \"versions\",\n \"error\",\n \"url\",\n \"selfHosted\",\n \"traceUntil\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"DeploymentVersionDetail\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"number\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"configHash\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorCode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"publishedBy\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"number\",\n \"status\",\n \"source\",\n \"errorMessage\",\n \"errorCode\",\n \"publishedAt\",\n \"publishedBy\"\n ]\n },\n \"DeploymentVersionHistoryEntry\": {\n \"type\": \"object\",\n \"properties\": {\n \"versionNumber\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\"\n },\n \"errorCode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorPhase\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorDetail\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"versionNumber\",\n \"status\",\n \"source\",\n \"errorCode\",\n \"errorMessage\",\n \"errorPhase\",\n \"publishedAt\"\n ]\n },\n \"DeploymentError\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"code\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"type\": \"string\",\n \"enum\": [\"preflight\", \"deploy\", \"bundle\", \"publish\", \"provision\"],\n \"example\": \"bundle\"\n },\n \"detail\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"code\", \"message\", \"phase\"]\n },\n \"CreateDeploymentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"currentVersionNumber\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0\n },\n \"url\": {\n \"type\": [\"string\", \"null\"]\n },\n \"flowId\": {\n \"type\": [\"string\", \"null\"],\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"flowName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"traceUntil\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"usageSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventsIn24h\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"healthy\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"eventsIn24h\", \"healthy\"]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"currentVersionNumber\",\n \"url\",\n \"flowId\",\n \"flowName\",\n \"createdAt\",\n \"updatedAt\",\n \"traceUntil\"\n ]\n },\n \"ListDeploymentsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deployments\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/DeploymentSummary\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nextCursor\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\"deployments\", \"total\", \"limit\", \"offset\", \"nextCursor\"]\n },\n \"UpdateDeploymentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"LatestDeploymentsByFlow\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"slug\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"slug\",\n \"type\",\n \"status\",\n \"target\",\n \"containerUrl\",\n \"createdAt\"\n ]\n }\n },\n \"PublishVersionResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"versionNumber\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"versionId\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"deploying\"]\n },\n \"source\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"flow\"]\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\", \"flowId\", \"flowSettingsName\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"config\"]\n }\n },\n \"required\": [\"type\"]\n }\n ]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"versionNumber\",\n \"versionId\",\n \"deploymentId\",\n \"status\",\n \"source\",\n \"createdAt\"\n ]\n },\n \"ListDeploymentVersionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"versions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"number\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"configHash\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorCode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"bundlePath\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"publishedBy\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"number\",\n \"status\",\n \"source\",\n \"errorMessage\",\n \"errorCode\",\n \"bundlePath\",\n \"publishedAt\",\n \"publishedBy\"\n ]\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"versions\", \"total\", \"limit\", \"offset\"]\n },\n \"HeartbeatResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ack\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"none\", \"stop\", \"update\"]\n },\n \"versionNumber\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"bundleUrl\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"ack\", \"deploymentId\", \"action\"]\n },\n \"ObserveTicketResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ticket\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"observerUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"required\": [\"ticket\", \"observerUrl\"]\n },\n \"PreviewResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^prv_[a-z0-9]+$\",\n \"example\": \"prv_abc123xyz456\"\n },\n \"flowId\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\",\n \"minLength\": 12,\n \"maxLength\": 12,\n \"pattern\": \"^[a-z0-9]+$\",\n \"example\": \"k9x2m4p7abcd\"\n },\n \"bundleUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"activationUrl\": {\n \"type\": \"string\",\n \"pattern\": \"^\\\\?elbPreview=[a-z0-9]{12}$\"\n },\n \"createdBy\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"flowSettingsId\",\n \"projectId\",\n \"token\",\n \"bundleUrl\",\n \"activationUrl\",\n \"createdBy\",\n \"createdAt\"\n ]\n },\n \"ListPreviewsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"previews\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/PreviewResponse\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"previews\", \"total\"]\n },\n \"CreatePreviewRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"draft\"]\n }\n },\n \"required\": [\"kind\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"deployment-version\"]\n },\n \"deploymentVersionId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"kind\", \"deploymentVersionId\"]\n }\n ]\n }\n },\n \"required\": [\"flowSettingsId\"]\n },\n \"SecretName\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[A-Z_][A-Z0-9_]*$\"\n },\n \"CreateSecretRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[A-Z_][A-Z0-9_]*$\"\n },\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"name\", \"value\"]\n },\n \"UpdateSecretRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"value\"]\n },\n \"SecretSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n },\n \"SecretListResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n }\n }\n },\n \"required\": [\"secrets\"]\n },\n \"FeedbackRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 5000,\n \"example\": \"The MCP flow_bundle tool is great but slow on large configs.\"\n },\n \"userId\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"alex@example.com\"\n },\n \"projectId\": {\n \"type\": \"string\",\n \"maxLength\": 255,\n \"example\": \"proj_abc123\"\n },\n \"version\": {\n \"type\": \"string\",\n \"maxLength\": 100,\n \"example\": \"0.4.2\"\n }\n },\n \"required\": [\"text\"]\n },\n \"FeedbackResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n },\n \"id\": {\n \"type\": \"string\",\n \"example\": \"fb_abcdef1234567890\"\n }\n },\n \"required\": [\"ok\", \"id\"]\n },\n \"StepExample\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"public\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"options\": {}\n }\n },\n \"mapping\": {},\n \"command\": {\n \"type\": \"string\"\n },\n \"in\": {\n \"$ref\": \"#/components/schemas/StepExampleEvent\"\n },\n \"out\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {}\n }\n }\n },\n \"required\": [\"in\"]\n },\n \"StepExampleEvent\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"data\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"context\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"globals\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"custom\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"string\"\n },\n \"timing\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"user\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\"\n },\n \"trigger\": {\n \"type\": \"string\"\n }\n }\n },\n \"CreateStepExampleRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"public\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"options\": {}\n }\n },\n \"mapping\": {},\n \"command\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"event\": {\n \"$ref\": \"#/components/schemas/StepExampleEvent\"\n },\n \"out\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {}\n }\n }\n },\n \"required\": [\"name\", \"event\"]\n },\n \"EditStepExampleRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"public\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"options\": {}\n }\n },\n \"mapping\": {},\n \"command\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"event\": {\n \"$ref\": \"#/components/schemas/StepExampleEvent\"\n },\n \"out\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {}\n }\n }\n },\n \"required\": [\"name\"]\n },\n \"StepExamplesResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"examples\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/components/schemas/StepExample\"\n }\n }\n },\n \"required\": [\"examples\"]\n },\n \"SecretValuesResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"values\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"values\"]\n },\n \"ServiceAccountSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"role\", \"email\", \"description\", \"createdAt\"]\n },\n \"CreateServiceAccountRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 1000\n }\n },\n \"required\": [\"name\", \"role\"]\n },\n \"UpdateServiceAccountRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 1000\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n }\n }\n },\n \"CreateServiceAccountResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"tokenId\": {\n \"type\": \"string\"\n },\n \"tokenPrefix\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"role\",\n \"email\",\n \"token\",\n \"tokenId\",\n \"tokenPrefix\",\n \"createdAt\"\n ]\n },\n \"ListServiceAccountsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"serviceAccounts\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ServiceAccountSummary\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"serviceAccounts\", \"total\"]\n },\n \"CreateSaTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n },\n \"expiresInDays\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 365\n }\n },\n \"required\": [\"name\"]\n },\n \"SaTokenSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"revokedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"prefix\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\",\n \"revokedAt\"\n ]\n },\n \"CreateSaTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"token\", \"prefix\", \"expiresAt\", \"createdAt\"]\n },\n \"ListSaTokensResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/SaTokenSummary\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"tokens\", \"total\"]\n },\n \"Invitation\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\", \"accepted\", \"declined\", \"expired\", \"cancelled\"]\n },\n \"invitedBy\": {\n \"type\": [\"string\", \"null\"]\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"email\",\n \"status\",\n \"invitedBy\",\n \"expiresAt\",\n \"createdAt\"\n ]\n },\n \"CreateInvitationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n }\n },\n \"required\": [\"email\"]\n },\n \"CreateInvitationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\"]\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"email\", \"status\", \"expiresAt\", \"createdAt\"]\n },\n \"ListInvitationsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"invitations\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Invitation\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"invitations\", \"total\"]\n },\n \"InvitationPreview\": {\n \"type\": \"object\",\n \"properties\": {\n \"projectName\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\", \"accepted\", \"declined\", \"expired\", \"cancelled\"]\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"invitedByEmail\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n }\n },\n \"required\": [\n \"projectName\",\n \"email\",\n \"status\",\n \"expiresAt\",\n \"invitedByEmail\"\n ]\n },\n \"AcceptInvitationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\"\n },\n \"projectName\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"alreadyMember\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"projectId\", \"projectName\", \"alreadyMember\"]\n },\n \"TelemetryEvent\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"entity\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"data\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"context\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"globals\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"custom\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"user\": {\n \"type\": \"object\",\n \"properties\": {\n \"device\": {\n \"type\": \"string\"\n },\n \"session\": {\n \"type\": \"string\"\n },\n \"os\": {\n \"type\": \"string\"\n },\n \"osVersion\": {\n \"type\": \"string\"\n },\n \"node\": {\n \"type\": \"string\"\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"device\",\n \"os\",\n \"osVersion\",\n \"node\",\n \"language\",\n \"timezone\"\n ],\n \"additionalProperties\": {}\n },\n \"nested\": {\n \"type\": \"array\",\n \"items\": {}\n },\n \"consent\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"boolean\"\n }\n },\n \"trigger\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"number\"\n },\n \"timing\": {\n \"type\": \"number\"\n },\n \"source\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"cli\", \"mcp\"]\n },\n \"platform\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"schema\": {\n \"type\": \"string\"\n },\n \"tool\": {\n \"type\": \"string\"\n },\n \"command\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": {}\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"entity\",\n \"action\",\n \"data\",\n \"context\",\n \"globals\",\n \"custom\",\n \"user\",\n \"nested\",\n \"consent\",\n \"trigger\",\n \"timestamp\",\n \"timing\",\n \"source\"\n ]\n },\n \"UpsertBillingDetailsRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"companyName\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"address\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"address2\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"postalCode\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 20\n },\n \"city\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"country\": {\n \"type\": \"string\",\n \"minLength\": 2,\n \"maxLength\": 2\n },\n \"vatId\": {\n \"type\": \"string\",\n \"maxLength\": 50\n },\n \"invoiceEmail\": {\n \"type\": \"string\",\n \"format\": \"email\"\n },\n \"contactName\": {\n \"type\": \"string\",\n \"maxLength\": 255\n }\n },\n \"required\": [\n \"companyName\",\n \"address\",\n \"postalCode\",\n \"city\",\n \"country\",\n \"invoiceEmail\"\n ]\n },\n \"BillingDetailsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"companyName\": {\n \"type\": \"string\"\n },\n \"address\": {\n \"type\": \"string\"\n },\n \"address2\": {\n \"type\": [\"string\", \"null\"]\n },\n \"postalCode\": {\n \"type\": \"string\"\n },\n \"city\": {\n \"type\": \"string\"\n },\n \"country\": {\n \"type\": \"string\"\n },\n \"vatId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"invoiceEmail\": {\n \"type\": \"string\"\n },\n \"contactName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"taxTreatment\": {\n \"type\": \"string\",\n \"enum\": [\"reverse_charge\", \"domestic\", \"export\", \"eu_standard\"]\n },\n \"viesStatus\": {\n \"type\": \"string\",\n \"enum\": [\"verified\", \"invalid\", \"unavailable\", \"not_checked\"]\n },\n \"viesCompanyName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"projectId\",\n \"companyName\",\n \"address\",\n \"address2\",\n \"postalCode\",\n \"city\",\n \"country\",\n \"vatId\",\n \"invoiceEmail\",\n \"contactName\",\n \"taxTreatment\",\n \"viesStatus\",\n \"viesCompanyName\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"DeployedContentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deploymentId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"versionNumber\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": [\"string\", \"null\"]\n },\n \"flowSettingsName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"content\": {}\n },\n \"required\": [\n \"deploymentId\",\n \"versionNumber\",\n \"status\",\n \"flowSettingsName\",\n \"publishedAt\"\n ]\n },\n \"ListHeartbeatsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"records\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/HeartbeatRecord\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"records\", \"total\", \"limit\", \"offset\"]\n },\n \"HeartbeatRecord\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"instanceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"cliVersion\": {\n \"type\": [\"string\", \"null\"]\n },\n \"configVersion\": {\n \"type\": [\"integer\", \"null\"]\n },\n \"mode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"uptime\": {\n \"type\": [\"integer\", \"null\"]\n },\n \"eventsIn\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"eventsOut\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"eventsFailed\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"perDestinationBreakdown\": {},\n \"receivedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"instanceId\",\n \"cliVersion\",\n \"configVersion\",\n \"mode\",\n \"uptime\",\n \"eventsIn\",\n \"eventsOut\",\n \"eventsFailed\",\n \"receivedAt\"\n ]\n },\n \"RotateIngestTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ingestToken\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"ingestToken\"]\n },\n \"TraceDeploymentRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"minutes\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n }\n },\n \"TraceDeploymentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"traceUntil\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"minutes\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"traceUntil\", \"minutes\"]\n },\n \"DeploymentUsageResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"totalEventsIn\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"totalEventsOut\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"totalEventsFailed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"totalInstances\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"heartbeatCount\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"from\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"to\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"averageThroughputPerHour\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"period\": {\n \"type\": \"string\"\n },\n \"buckets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/UsageBucket\"\n }\n }\n },\n \"required\": [\n \"totalEventsIn\",\n \"totalEventsOut\",\n \"totalEventsFailed\",\n \"totalInstances\",\n \"heartbeatCount\",\n \"from\",\n \"to\",\n \"averageThroughputPerHour\",\n \"period\",\n \"buckets\"\n ]\n },\n \"UsageBucket\": {\n \"type\": \"object\",\n \"properties\": {\n \"bucket\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"eventsIn\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsOut\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsFailed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"instances\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\n \"bucket\",\n \"eventsIn\",\n \"eventsOut\",\n \"eventsFailed\",\n \"instances\"\n ]\n },\n \"CreateCustomDomainRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"hostname\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 253\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"hostname\"]\n },\n \"CustomDomain\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"hostname\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"scwResourceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"certStatus\": {\n \"type\": \"string\"\n },\n \"verifiedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"deploymentId\",\n \"hostname\",\n \"kind\",\n \"status\",\n \"scwResourceId\",\n \"certStatus\",\n \"verifiedAt\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"ListCustomDomainsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"domains\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/CustomDomain\"\n }\n }\n },\n \"required\": [\"domains\"]\n },\n \"DeployTokenStatusResponse\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"hasToken\": {\n \"type\": \"boolean\",\n \"enum\": [false]\n }\n },\n \"required\": [\"hasToken\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"hasToken\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n },\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"healthy\": {\n \"type\": \"boolean\"\n },\n \"lastHeartbeatAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"instanceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"cliVersion\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"hasToken\",\n \"deploymentId\",\n \"status\",\n \"healthy\",\n \"lastHeartbeatAt\",\n \"instanceId\",\n \"cliVersion\"\n ]\n }\n ]\n },\n \"CreateDeployTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"token\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"configName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"token\",\n \"deploymentId\",\n \"projectId\",\n \"flowId\",\n \"configName\"\n ]\n },\n \"EntitlementsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"planId\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"entitlements\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n }\n },\n \"required\": [\"planId\", \"role\", \"entitlements\"]\n },\n \"SetLlmConfigRequest\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"clear\"]\n }\n },\n \"required\": [\"action\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"set\"]\n },\n \"config\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"mistral\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"anthropic\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"openai\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"google\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"openai-compatible\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"baseURL\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\", \"baseURL\"]\n }\n ]\n }\n },\n \"required\": [\"action\", \"config\"]\n }\n ]\n },\n \"SetLlmConfigResponse\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"cleared\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n }\n },\n \"required\": [\"cleared\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"saved\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n }\n },\n \"required\": [\"saved\"]\n }\n ]\n },\n \"LlmConfigStatusResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\"platform\", \"byok\", \"byom\"]\n }\n },\n \"required\": [\"provider\", \"source\"]\n },\n \"ListChatSessionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChatSessionSummary\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"sessions\", \"total\"]\n },\n \"ChatSessionSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastActiveAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"messageCount\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"firstUserMessage\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"id\", \"createdAt\", \"lastActiveAt\", \"messageCount\"]\n },\n \"ChatSessionDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastActiveAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"messages\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChatSessionMessage\"\n }\n }\n },\n \"required\": [\"id\", \"createdAt\", \"lastActiveAt\", \"messages\"]\n },\n \"ChatSessionMessage\": {\n \"type\": \"object\",\n \"properties\": {\n \"seq\": {\n \"type\": \"integer\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"content\": {},\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"seq\", \"role\", \"createdAt\"]\n },\n \"ElicitRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n },\n \"elicitationId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n },\n \"result\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"accept\"]\n },\n \"content\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n ]\n }\n }\n },\n \"required\": [\"action\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"decline\"]\n }\n },\n \"required\": [\"action\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"cancel\"]\n }\n },\n \"required\": [\"action\"]\n }\n ]\n }\n },\n \"required\": [\"sessionId\", \"elicitationId\", \"result\"]\n },\n \"ElicitResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n }\n },\n \"required\": [\"ok\"]\n },\n \"CreateMcpTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"ttlSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n }\n },\n \"required\": [\"name\"]\n },\n \"CreateMcpTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"token\", \"createdAt\", \"expiresAt\"]\n },\n \"ListMcpTokensResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/McpTokenSummary\"\n }\n }\n },\n \"required\": [\"tokens\"]\n },\n \"McpTokenSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"audience\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"audience\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\"\n ]\n },\n \"PackageCatalogResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"catalog\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/PackageCatalogEntry\"\n }\n },\n \"count\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"catalog\", \"count\"]\n },\n \"PackageCatalogEntry\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"name\", \"version\", \"type\", \"platform\"]\n },\n \"PackageSearchResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"packages\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/PackageSearchHit\"\n }\n },\n \"count\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"packages\", \"count\"]\n },\n \"PackageSearchHit\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"name\", \"version\", \"description\"]\n },\n \"ListRunnersResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"runners\": {\n \"type\": \"array\",\n \"items\": {}\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"runners\", \"total\"]\n },\n \"RunnerHeartbeatResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"instanceId\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"id\", \"instanceId\", \"deploymentId\"]\n },\n \"ObserveTimingRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"connectId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"ticketMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"sseMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"totalMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"required\": [\"connectId\", \"ticketMs\", \"sseMs\", \"totalMs\"]\n },\n \"MagicLinkResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"message\": {\n \"type\": \"string\",\n \"example\": \"Magic link sent\"\n }\n },\n \"required\": [\"success\", \"message\"]\n },\n \"MagicLinkRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"redirect_to\": {\n \"type\": \"string\",\n \"example\": \"/dashboard\"\n }\n },\n \"required\": [\"email\"]\n },\n \"WhoamiResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"example\": \"user_a1b2c3d4\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"],\n \"example\": null\n }\n },\n \"required\": [\"userId\", \"email\", \"projectId\"]\n },\n \"ListSessionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastTouchedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"isCurrent\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\",\n \"createdAt\",\n \"expiresAt\",\n \"lastTouchedAt\",\n \"isCurrent\"\n ]\n }\n }\n },\n \"required\": [\"sessions\"]\n },\n \"DeviceCodeResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deviceCode\": {\n \"type\": \"string\"\n },\n \"userCode\": {\n \"type\": \"string\"\n },\n \"expiresIn\": {\n \"type\": \"number\"\n },\n \"interval\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"deviceCode\", \"userCode\", \"expiresIn\", \"interval\"]\n },\n \"ApproveDeviceResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"success\"]\n },\n \"ApproveDeviceRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"userCode\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"userCode\"]\n },\n \"DeviceTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"token\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"userId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"token\", \"email\", \"userId\"]\n },\n \"DeviceTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"deviceCode\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"hostname\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"deviceCode\"]\n },\n \"ListProjectsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Project\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n },\n \"nextCursor\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\"projects\", \"total\", \"nextCursor\"]\n },\n \"CreateProjectRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n }\n },\n \"required\": [\"name\"]\n },\n \"ProjectDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"siteUrl\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"uri\",\n \"example\": \"https://example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"]\n }\n },\n \"required\": [\"id\", \"name\", \"role\"]\n },\n \"UpdateProjectRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"siteUrl\": {\n \"type\": [\"string\", \"null\"],\n \"maxLength\": 2048,\n \"format\": \"uri\",\n \"example\": \"https://example.com\"\n }\n }\n },\n \"ListMembersResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"members\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Member\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"members\", \"total\"]\n },\n \"AddMemberRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\"\n }\n },\n \"required\": [\"email\"]\n },\n \"UpdateMemberRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"]\n }\n },\n \"required\": [\"role\"]\n },\n \"ListFlowsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"flows\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSummary\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nextCursor\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\"flows\", \"total\", \"nextCursor\"]\n },\n \"CreateFlowRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n }\n },\n \"required\": [\"name\"]\n },\n \"UpdateFlowRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n }\n }\n },\n \"DuplicateFlowRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n }\n }\n },\n \"DeploymentResponse\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"type\",\n \"status\",\n \"containerUrl\",\n \"errorMessage\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"StartDeploymentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"status\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"deploymentId\", \"type\", \"status\"]\n },\n \"ListSettingsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsSummary\"\n }\n }\n },\n \"required\": [\"settings\"]\n },\n \"SettingsDeploymentResponse\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"settingsId\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"settingsId\",\n \"type\",\n \"status\",\n \"containerUrl\",\n \"publicUrl\",\n \"errorMessage\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"SettingsDeploymentDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"settingsId\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"settingsId\",\n \"status\",\n \"type\",\n \"containerUrl\",\n \"publicUrl\",\n \"errorMessage\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"ListVersionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Version\"\n }\n },\n \"flowId\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"hasMore\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"data\", \"flowId\", \"total\", \"limit\", \"offset\", \"hasMore\"]\n },\n \"GetVersionResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"content\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdBy\": {\n \"type\": \"string\",\n \"enum\": [\"user\", \"auto_save\", \"restore\"]\n }\n },\n \"required\": [\"version\", \"content\", \"createdAt\", \"createdBy\"]\n },\n \"ListApiTokensResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ApiTokenSummary\"\n }\n }\n },\n \"required\": [\"tokens\"]\n },\n \"CreateApiTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"example\": \"tok_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"example\": \"CI Pipeline\"\n },\n \"token\": {\n \"type\": \"string\",\n \"example\": \"sk-walkeros-abcd1234...\"\n },\n \"prefix\": {\n \"type\": \"string\",\n \"example\": \"sk-walkeros-abcd\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"],\n \"example\": null\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"token\",\n \"prefix\",\n \"createdAt\",\n \"expiresAt\",\n \"projectId\"\n ]\n },\n \"CreateApiTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"example\": \"CI Pipeline\"\n },\n \"expiresInDays\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0,\n \"maximum\": 365,\n \"example\": 90\n }\n },\n \"required\": [\"name\"]\n },\n \"BundleResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"bundleId\": {\n \"type\": \"string\"\n },\n \"cached\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"bundleId\", \"cached\"]\n },\n \"SimulateResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\"\n },\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"step\": {\n \"type\": \"string\",\n \"enum\": [\"source\", \"transformer\", \"destination\"]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"events\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n },\n \"calls\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"fn\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {}\n },\n \"ts\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"fn\", \"args\", \"ts\"]\n }\n },\n \"duration\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"step\", \"name\", \"events\", \"calls\", \"duration\"]\n }\n },\n \"required\": [\"success\"]\n },\n \"SimulateRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"bundleId\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-f0-9]{8,64}$\"\n },\n \"config\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"event\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"step\": {\n \"type\": \"string\",\n \"pattern\": \"^(source|transformer|destination)\\\\..+$\"\n }\n },\n \"required\": [\"bundleId\", \"config\", \"event\", \"step\"]\n },\n \"RegisterRuntimeRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"flowId\": {\n \"type\": \"string\"\n },\n \"bundlePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"flowId\", \"bundlePath\"]\n },\n \"ValidateTicketResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"replay\": {\n \"type\": \"object\",\n \"properties\": {\n \"size\": {\n \"type\": \"number\"\n },\n \"ttlMs\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"size\", \"ttlMs\"]\n }\n },\n \"required\": [\"userId\", \"projectId\", \"replay\"]\n },\n \"ValidateTicketRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"ticket\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"ticket\"]\n },\n \"HealthResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"string\",\n \"example\": \"ok\"\n },\n \"appVersion\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d\",\n \"description\": \"Build identity of the running app (git short hash injected at build time).\"\n },\n \"contractVersion\": {\n \"type\": \"string\",\n \"example\": \"1.0.0\",\n \"description\": \"Semver of the API contract the server implements.\"\n },\n \"contractHash\": {\n \"type\": \"string\",\n \"example\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n \"description\": \"Deterministic sha256 of the OpenAPI contract content.\"\n }\n },\n \"required\": [\"status\", \"appVersion\", \"contractVersion\", \"contractHash\"]\n },\n \"DeclineInvitationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"message\"]\n },\n \"HeartbeatRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"instanceId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"flowId\": {\n \"type\": \"string\",\n \"example\": \"flow_abc123\"\n },\n \"configVersion\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\"local\", \"collect\", \"serve\"]\n },\n \"cliVersion\": {\n \"type\": \"string\",\n \"example\": \"1.3.0\"\n },\n \"uptime\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"metadata\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"example\": \"dpl_abc123\"\n },\n \"counters\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventsIn\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsOut\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsFailed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"destinations\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"count\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"failed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"duration\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"required\": [\"count\", \"failed\", \"duration\"]\n }\n }\n },\n \"required\": [\n \"eventsIn\",\n \"eventsOut\",\n \"eventsFailed\",\n \"destinations\"\n ]\n }\n },\n \"required\": [\"instanceId\", \"flowId\"]\n }\n },\n \"parameters\": {}\n },\n \"paths\": {\n \"/api/auth/magic-link\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Request magic link\",\n \"description\": \"Send a magic link to the provided email address for passwordless authentication. Always returns success to prevent email enumeration.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/MagicLinkRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Magic link sent (or would be sent if email exists)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/MagicLinkResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/verify\": {\n \"get\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Verify magic link token\",\n \"description\": \"Verify a magic link token and create an authenticated session. Redirects to the specified URL or home page.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"example\": \"abc123...\",\n \"description\": \"Magic link token\"\n },\n \"required\": true,\n \"description\": \"Magic link token\",\n \"name\": \"token\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"/dashboard\",\n \"description\": \"Redirect URL after verification\"\n },\n \"required\": false,\n \"description\": \"Redirect URL after verification\",\n \"name\": \"redirect_to\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"302\": {\n \"description\": \"Redirect to target URL with session cookie set\"\n }\n }\n }\n },\n \"/api/auth/logout\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"End session\",\n \"description\": \"Destroy the current session and clear the session cookie.\",\n \"responses\": {\n \"302\": {\n \"description\": \"Redirect to login page\"\n }\n }\n }\n },\n \"/api/auth/whoami\": {\n \"get\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Current identity\",\n \"description\": \"Return the identity of the authenticated user. Supports session cookie and Bearer token.\",\n \"responses\": {\n \"200\": {\n \"description\": \"Current user identity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/WhoamiResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/sessions\": {\n \"get\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"List sessions\",\n \"description\": \"List all active sessions for the authenticated user. The current session is marked with isCurrent: true.\",\n \"responses\": {\n \"200\": {\n \"description\": \"List of active sessions\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListSessionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/sessions/{id}\": {\n \"delete\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Revoke session\",\n \"description\": \"Revoke a session by ID. Cannot revoke the current session (use logout instead).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"ses_abc123\"\n },\n \"required\": true,\n \"name\": \"id\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Session revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/device/code\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Request device code\",\n \"description\": \"Generate a device code and user code for the device authorization flow.\",\n \"responses\": {\n \"200\": {\n \"description\": \"Device code generated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeviceCodeResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/device/approve\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Approve device code\",\n \"description\": \"Approve a device authorization request using the user code. Requires authentication.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ApproveDeviceRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Device approved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ApproveDeviceResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/device/token\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Poll device token\",\n \"description\": \"Poll for authorization status using the device code. Returns a token when approved.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeviceTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Authorization approved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeviceTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Pending, slow down, or expired\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"List my projects\",\n \"description\": \"List all projects where the authenticated user is a member.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\"\n },\n \"required\": false,\n \"name\": \"cursor\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of projects\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListProjectsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Create project\",\n \"description\": \"Create a new project. The authenticated user becomes the owner.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateProjectRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Project created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateProjectResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Get project\",\n \"description\": \"Get a single project by ID. Requires membership.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Project details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ProjectDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Update project\",\n \"description\": \"Update project details. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateProjectRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Project updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateProjectResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Delete project\",\n \"description\": \"Delete a project and all its resources. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Project deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/members\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"List members\",\n \"description\": \"List all members of a project. Requires membership.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of members\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListMembersResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Add member\",\n \"description\": \"Add a member to the project by email. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AddMemberRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Member added\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Member\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/members/{userId}\": {\n \"patch\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Update member role\",\n \"description\": \"Update a member's role. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"user_a1b2c3\"\n },\n \"required\": true,\n \"name\": \"userId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateMemberRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Role updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Member\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Remove member\",\n \"description\": \"Remove a member from the project. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"user_a1b2c3\"\n },\n \"required\": true,\n \"name\": \"userId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Member removed\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows\": {\n \"get\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"List flows\",\n \"description\": \"List all flows for a project.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"name\", \"updated_at\", \"created_at\"],\n \"example\": \"updated_at\"\n },\n \"required\": false,\n \"name\": \"sort\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"asc\", \"desc\"],\n \"example\": \"desc\"\n },\n \"required\": false,\n \"name\": \"order\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"true\", \"false\"],\n \"example\": \"false\"\n },\n \"required\": false,\n \"name\": \"include_deleted\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\"\n },\n \"required\": false,\n \"name\": \"cursor\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of flows\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListFlowsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Create flow\",\n \"description\": \"Create a new flow in the project. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateFlowRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Flow created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Flow\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}\": {\n \"get\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Get flow\",\n \"description\": \"Get a single flow by ID. Use ?fields to select specific sections (reduces response size).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Comma-separated dot-paths to select specific fields (e.g., \\\"config.variables,config.flows.tracking.sources\\\"). Always includes id, createdAt, updatedAt.\",\n \"example\": \"config.variables,config.flows.tracking.sources\"\n },\n \"required\": false,\n \"description\": \"Comma-separated dot-paths to select specific fields (e.g., \\\"config.variables,config.flows.tracking.sources\\\"). Always includes id, createdAt, updatedAt.\",\n \"name\": \"fields\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Flow details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Update flow\",\n \"description\": \"Update an existing flow. Creates a version snapshot before applying changes. Requires member role. Use Content-Type: application/merge-patch+json to send only changed fields (RFC 7386).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"example\": \"\\\"a1b2c3d4e5f6g7h8\\\"\"\n },\n \"required\": false,\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"name\": \"if-match\",\n \"in\": \"header\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateFlowRequest\"\n }\n },\n \"application/merge-patch+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateFlowRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Flow updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowUpdateResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"412\": {\n \"description\": \"ETag mismatch — flow was modified since last read\"\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Soft-delete flow\",\n \"description\": \"Soft delete a flow (sets deleted_at timestamp). Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"example\": \"\\\"a1b2c3d4e5f6g7h8\\\"\"\n },\n \"required\": false,\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"name\": \"if-match\",\n \"in\": \"header\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Flow deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"412\": {\n \"description\": \"ETag mismatch — flow was modified since last read\"\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/duplicate\": {\n \"post\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Duplicate flow\",\n \"description\": \"Create a copy of an existing flow with a new ID and no version history. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DuplicateFlowRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Flow duplicated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Flow\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/secrets\": {\n \"get\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"List secrets\",\n \"description\": \"List a flow's secrets as metadata only (name, id, timestamps). Values are never returned. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Secret metadata list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"flowId\",\n \"createdAt\",\n \"updatedAt\"\n ]\n }\n }\n },\n \"required\": [\"secrets\"]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Create secret\",\n \"description\": \"Create a secret for a flow. The value is encrypted at rest and never returned. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[A-Z_][A-Z0-9_]*$\"\n },\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"name\", \"value\"]\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Secret created (metadata only)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/secrets/{secretId}\": {\n \"put\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Update secret value\",\n \"description\": \"Rotate a secret's value (re-encrypts). The value is never returned. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sec_abc123\"\n },\n \"required\": true,\n \"name\": \"secretId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"value\"]\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Secret updated (metadata only)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Delete secret\",\n \"description\": \"Soft-delete a secret. Idempotent: deleting a missing secret returns 204. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sec_abc123\"\n },\n \"required\": true,\n \"name\": \"secretId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Secret deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/secrets/values\": {\n \"get\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Get decrypted secret values\",\n \"description\": \"Return decrypted secret values for a flow as a name-to-value map. Dual auth: a runtime container Bearer token bound to (projectId, flowId) with the `runner:read-secrets` scope returns only the bundle-referenced subset; a session cookie with member role returns all of the flow's secrets for administration. Responses are never cached.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Decrypted secret values keyed by name\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"values\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"values\"]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/steps/{stepPath}/examples\": {\n \"post\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Add step example\",\n \"description\": \"Add a named example to a step. Examples are stored as an object map keyed by name. Rejects duplicate names with 409.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"example\": \"destinations.gtag\"\n },\n \"required\": true,\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"name\": \"stepPath\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateStepExampleRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Updated examples object map\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StepExamplesResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Unprocessable entity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"put\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Edit step example\",\n \"description\": \"Edit an existing named example in place, merging provided fields onto the stored entry. Returns 404 when the named example does not exist.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"example\": \"destinations.gtag\"\n },\n \"required\": true,\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"name\": \"stepPath\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/EditStepExampleRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Updated examples object map\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StepExamplesResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Unprocessable entity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Remove step example\",\n \"description\": \"Remove a named example from a step. Returns 404 when the named example does not exist.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"example\": \"destinations.gtag\"\n },\n \"required\": true,\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"name\": \"stepPath\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Name of the example to remove.\",\n \"example\": \"product view\"\n },\n \"required\": true,\n \"description\": \"Name of the example to remove.\",\n \"name\": \"name\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Updated examples object map\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StepExamplesResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Unprocessable entity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/deploy\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get latest deployment\",\n \"description\": \"Get the latest deployment for a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Latest deployment (or null)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Start deployment\",\n \"description\": \"Start a new deployment for a flow. Returns 400 AMBIGUOUS_SETTINGS if the flow has multiple named settings — use the per-settings deploy endpoint instead.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"201\": {\n \"description\": \"Deployment started\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StartDeploymentResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Deployment already in progress\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get deployment\",\n \"description\": \"Get a specific deployment by ID.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Delete deployment\",\n \"description\": \"Delete a deployment and its container. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment deleted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"deleted\"]\n }\n },\n \"required\": [\"id\", \"status\"]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"List settings\",\n \"description\": \"List active named settings for a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of settings\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListSettingsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Get settings\",\n \"description\": \"Get a single settings entry with its latest deployment.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Settings details with deployment\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowSettingsDetail\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/json\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Download settings JSON\",\n \"description\": \"Download the named flow settings as a self-contained Config JSON file. Includes parent variables and definitions.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Flow Config JSON file\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/bundle\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Download settings bundle\",\n \"description\": \"Download the compiled JS/MJS for the settings' latest deployment. Redirects to a presigned download URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"302\": {\n \"description\": \"Redirect to presigned bundle URL\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deploy\": {\n \"post\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Deploy settings\",\n \"description\": \"Start a deployment for a specific settings entry. Detects platform from the settings.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"201\": {\n \"description\": \"Deployment started\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploySettingsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Deployment already in progress\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Settings orphaned\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Get latest settings deployment\",\n \"description\": \"Get the latest deployment for a specific settings entry.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Latest deployment (or null)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SettingsDeploymentResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deployments/{deploymentId}\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Get settings deployment detail\",\n \"description\": \"Get a specific deployment by ID, scoped to a settings entry.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SettingsDeploymentDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/previews\": {\n \"post\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"Create preview\",\n \"description\": \"Create a new preview for a web flow settings entry. Bundles the flow and publishes to a unique token-based URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreatePreviewRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Preview created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PreviewResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Quota exceeded\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Bundle or upload failed\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"get\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"List previews\",\n \"description\": \"List all previews for a flow, ordered by creation date descending.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of previews\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListPreviewsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/previews/{previewId}\": {\n \"get\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"Get preview\",\n \"description\": \"Get a single preview by ID.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^prv_[a-z0-9]+$\",\n \"example\": \"prv_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"previewId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Preview details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PreviewResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"Delete preview\",\n \"description\": \"Delete a preview and its S3 bundle. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^prv_[a-z0-9]+$\",\n \"example\": \"prv_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"previewId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Preview deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/versions\": {\n \"get\": {\n \"tags\": [\"Versions\"],\n \"summary\": \"List versions\",\n \"description\": \"List all versions for a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of versions\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListVersionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}\": {\n \"get\": {\n \"tags\": [\"Versions\"],\n \"summary\": \"Get version\",\n \"description\": \"Get a specific version of a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"required\": true,\n \"name\": \"versionNumber\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Version details with content\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/GetVersionResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}/restore\": {\n \"post\": {\n \"tags\": [\"Versions\"],\n \"summary\": \"Restore version\",\n \"description\": \"Restore a flow to a specific version. Creates a new version snapshot. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"required\": true,\n \"name\": \"versionNumber\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Flow restored\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Flow\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/tokens\": {\n \"get\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"List my tokens\",\n \"description\": \"List all API tokens for the authenticated user. Returns summaries (no raw token values).\",\n \"responses\": {\n \"200\": {\n \"description\": \"List of tokens\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListApiTokensResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Create token\",\n \"description\": \"Create a new API token. The raw token is returned once and cannot be retrieved again.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateApiTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Token created (raw token shown once)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateApiTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/tokens/{tokenId}\": {\n \"delete\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Revoke token\",\n \"description\": \"Revoke an API token (soft delete via revokedAt timestamp).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^tok_[a-zA-Z0-9_-]+$\",\n \"example\": \"tok_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"tokenId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Token revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/bundle\": {\n \"post\": {\n \"tags\": [\"Bundle\"],\n \"summary\": \"Bundle flow\",\n \"description\": \"Bundle a flow using CLI. Returns bundleId (content-hash). Use ?output=download to redirect to presigned S3 URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"my-web-flow\",\n \"description\": \"Named flow to bundle (required for multi-settings flows)\"\n },\n \"required\": false,\n \"description\": \"Named flow to bundle (required for multi-settings flows)\",\n \"name\": \"flow\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"download\"],\n \"description\": \"Set to \\\"download\\\" to redirect to the bundle file\"\n },\n \"required\": false,\n \"description\": \"Set to \\\"download\\\" to redirect to the bundle file\",\n \"name\": \"output\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Bundle result\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/BundleResponse\"\n }\n }\n }\n },\n \"302\": {\n \"description\": \"Redirect to presigned bundle URL (when output=download)\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/simulate\": {\n \"post\": {\n \"tags\": [\"Simulate\"],\n \"summary\": \"Simulate a flow step\",\n \"description\": \"Execute a simulation against a pre-built bundle. Requires bundleId from the bundle endpoint.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SimulateRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Simulation result\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SimulateResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Simulation container error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List deployments\",\n \"description\": \"List deployments for a project. Supports filtering by status, type, origin, and flowId, plus pagination.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ]\n },\n \"required\": false,\n \"name\": \"status\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"required\": false,\n \"name\": \"type\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"]\n },\n \"required\": false,\n \"name\": \"origin\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": false,\n \"name\": \"flowId\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"created_at\", \"updated_at\"]\n },\n \"required\": false,\n \"name\": \"sort\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"asc\", \"desc\"]\n },\n \"required\": false,\n \"name\": \"order\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\"\n },\n \"required\": false,\n \"name\": \"cursor\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of deployments\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListDeploymentsResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Create deployment\",\n \"description\": \"Create a new deployment slot. Supports an Idempotency-Key header — a repeated key returns the original deployment id with status `already_created`. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Optional client key to make creation idempotent.\"\n },\n \"required\": false,\n \"description\": \"Optional client key to make creation idempotent.\",\n \"name\": \"idempotency-key\",\n \"in\": \"header\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"label\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"]\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Deployment created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateDeploymentResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/latest\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List latest deployments\",\n \"description\": \"List the latest deployment for each flow in the project.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Latest deployment per flow\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/LatestDeploymentsByFlow\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/runtimes/register\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Register runtime\",\n \"description\": \"Register a server-side runtime container and get a presigned bundle URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RegisterRuntimeRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Presigned bundle URL\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/observe/ticket\": {\n \"post\": {\n \"tags\": [\"Observe\"],\n \"summary\": \"Create SSE ticket\",\n \"description\": \"Generate a one-time ticket for authenticating an SSE connection to the Observer service. Requires project membership.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Ticket generated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ObserveTicketResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/observe/validate-ticket\": {\n \"post\": {\n \"tags\": [\"Observe\"],\n \"summary\": \"Validate ticket\",\n \"description\": \"Internal endpoint for the Observer service to validate and consume a ticket.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ValidateTicketRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Ticket payload\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ValidateTicketResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Invalid or expired ticket\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/health\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"Health check\",\n \"description\": \"Check the health of the API and its dependencies.\",\n \"responses\": {\n \"200\": {\n \"description\": \"Health status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/HealthResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/openapi.json\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"OpenAPI spec\",\n \"description\": \"Return the OpenAPI 3.1 specification for this API.\",\n \"responses\": {\n \"200\": {\n \"description\": \"OpenAPI document\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": {}\n }\n }\n }\n }\n }\n }\n },\n \"/ingest/v1/{projectId}\": {\n \"post\": {\n \"tags\": [\"Observer\"],\n \"summary\": \"Event ingestion\",\n \"description\": \"Ingest walkerOS events for a project. Served by the Observer service (port 3001).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"202\": {\n \"description\": \"Accepted\"\n }\n }\n }\n },\n \"/stream/v1\": {\n \"get\": {\n \"tags\": [\"Observer\"],\n \"summary\": \"SSE stream\",\n \"description\": \"Server-Sent Events stream for real-time event observation. Requires a valid ticket. Served by the Observer service (port 3001).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"One-time ticket from /api/projects/{projectId}/observe/ticket\"\n },\n \"required\": true,\n \"description\": \"One-time ticket from /api/projects/{projectId}/observe/ticket\",\n \"name\": \"ticket\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Project ID for scoped validation\"\n },\n \"required\": true,\n \"description\": \"Project ID for scoped validation\",\n \"name\": \"project\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"SSE event stream\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/health\": {\n \"get\": {\n \"tags\": [\"Observer\"],\n \"summary\": \"Observer health\",\n \"description\": \"Health check for the Observer service (port 3001).\",\n \"responses\": {\n \"200\": {\n \"description\": \"Health status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"status\"]\n }\n }\n }\n }\n }\n }\n },\n \"/api/feedback\": {\n \"post\": {\n \"tags\": [\"Feedback\"],\n \"summary\": \"Submit user feedback\",\n \"description\": \"Accepts free-form feedback from the walkerOS CLI, MCP, or a future in-app form. Public endpoint — no authentication required. The body `userId` is stored verbatim as a best-effort contact email and is not validated against the app users table.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FeedbackRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Feedback stored\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FeedbackResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts\": {\n \"get\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"List service accounts\",\n \"description\": \"List service accounts for a project. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of service accounts\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListServiceAccountsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Create service account\",\n \"description\": \"Create a service account and its first token. The raw token is returned once and cannot be retrieved again. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateServiceAccountRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Service account created (raw token shown once)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateServiceAccountResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts/{serviceAccountId}\": {\n \"get\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Get service account\",\n \"description\": \"Get a single service account by ID. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Service account details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ServiceAccountSummary\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Update service account\",\n \"description\": \"Update a service account's name, description, or role. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateServiceAccountRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Service account updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ServiceAccountSummary\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Delete service account\",\n \"description\": \"Soft-delete a service account and revoke all its tokens. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Service account deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts/{serviceAccountId}/tokens\": {\n \"get\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"List service account tokens\",\n \"description\": \"List tokens for a service account. Returns summaries (no raw token values). Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of tokens\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListSaTokensResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Create service account token\",\n \"description\": \"Create a new token for a service account. The raw token is returned once and cannot be retrieved again. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateSaTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Token created (raw token shown once)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateSaTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts/{serviceAccountId}/tokens/{tokenId}\": {\n \"delete\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Revoke service account token\",\n \"description\": \"Revoke a service account token. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"tok_abc123\"\n },\n \"required\": true,\n \"name\": \"tokenId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Token revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/invitations\": {\n \"get\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"List invitations\",\n \"description\": \"List invitations for a project. Defaults to pending; pass ?status=all for every status. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\n \"pending\",\n \"accepted\",\n \"declined\",\n \"expired\",\n \"cancelled\",\n \"all\"\n ],\n \"example\": \"pending\"\n },\n \"required\": false,\n \"name\": \"status\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of invitations\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListInvitationsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Create invitation\",\n \"description\": \"Create an invitation and send the invite email. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateInvitationRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Invitation created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateInvitationResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Invitation limit reached\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/invitations/{inviteId}\": {\n \"delete\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Cancel invitation\",\n \"description\": \"Cancel a pending invitation. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"inv_abc123\"\n },\n \"required\": true,\n \"name\": \"inviteId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Invitation cancelled\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/invitations/{token}\": {\n \"get\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Preview invitation\",\n \"description\": \"Preview invitation details. No authentication required — the token is the credential.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Opaque invitation token (the credential).\",\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"required\": true,\n \"description\": \"Opaque invitation token (the credential).\",\n \"name\": \"token\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Invitation preview\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/InvitationPreview\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/invitations/{token}/accept\": {\n \"post\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Accept invitation\",\n \"description\": \"Accept an invitation. Requires authentication; the authenticated user's email must match the invitation email.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Opaque invitation token (the credential).\",\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"required\": true,\n \"description\": \"Opaque invitation token (the credential).\",\n \"name\": \"token\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Invitation accepted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AcceptInvitationResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/invitations/{token}/decline\": {\n \"post\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Decline invitation\",\n \"description\": \"Decline an invitation. No authentication required — the token is the credential.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Opaque invitation token (the credential).\",\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"required\": true,\n \"description\": \"Opaque invitation token (the credential).\",\n \"name\": \"token\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Invitation declined\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeclineInvitationResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/telemetry\": {\n \"post\": {\n \"tags\": [\"Telemetry\"],\n \"summary\": \"Submit telemetry event\",\n \"description\": \"Accept a single walkerOS v4 event from the CLI or MCP telemetry emitter. Public endpoint — no authentication. `source.type` is constrained to `cli` or `mcp`.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TelemetryEvent\"\n }\n }\n }\n },\n \"responses\": {\n \"204\": {\n \"description\": \"Telemetry event accepted\"\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/billing\": {\n \"get\": {\n \"tags\": [\"Billing\"],\n \"summary\": \"Get billing details\",\n \"description\": \"Get billing details for a project, or null when none are set. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Billing details (or null when unset)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/BillingDetailsResponse\"\n },\n {\n \"type\": [\"object\", \"null\"]\n }\n ]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"put\": {\n \"tags\": [\"Billing\"],\n \"summary\": \"Upsert billing details\",\n \"description\": \"Create or update billing details for a project. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpsertBillingDetailsRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Billing details saved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/BillingDetailsResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get deployment detail\",\n \"description\": \"Get deployment detail. Accepts a dep_ID or a slug. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment detail\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Update deployment\",\n \"description\": \"Update a deployment's label, or stop/resume it. Stop and resume require admin role; label updates require member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"stop\", \"resume\"]\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateDeploymentResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Deployment state changed concurrently\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Delete deployment\",\n \"description\": \"Tear down and soft-delete a deployment. Idempotent. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Deployment deleted (or already absent)\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/publish\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Publish deployment version\",\n \"description\": \"Push a new version to a deployment, either from an existing flow setting or from a direct config upload. Bundles in-process and transitions the deployment to `deploying`. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Optional client key to make publishing idempotent.\"\n },\n \"required\": false,\n \"description\": \"Optional client key to make publishing idempotent.\",\n \"name\": \"idempotency-key\",\n \"in\": \"header\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\"flow\"]\n },\n \"flowId\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\"\n },\n \"flowSettingsName\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"required\": [\"source\", \"flowId\", \"flowSettingsName\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\"config\"]\n },\n \"config\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n },\n \"required\": [\"source\", \"config\"]\n }\n ]\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Version published (bundling/deploying)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PublishVersionResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Publish already in progress\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited or concurrent deploy limit\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Build service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/versions\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List deployment versions\",\n \"description\": \"List the version history for a deployment, paginated. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Version history\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListDeploymentVersionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/versions/current/content\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get current deployed content\",\n \"description\": \"Get the active deployed per-setting content for a deployment, used to diff changes since deploy. Content is masked and display-only; every field is null when there is no deployed baseline. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployed content (or a null baseline)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeployedContentResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/heartbeats\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List deployment heartbeats\",\n \"description\": \"List heartbeat records for a deployment with optional from/to time-range filtering and pagination. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ISO start of the time range.\"\n },\n \"required\": false,\n \"description\": \"ISO start of the time range.\",\n \"name\": \"from\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ISO end of the time range.\"\n },\n \"required\": false,\n \"description\": \"ISO end of the time range.\",\n \"name\": \"to\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 1000\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Heartbeat history\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListHeartbeatsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/rotate-ingest-token\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Rotate ingest token\",\n \"description\": \"Rotate the ingest token for a deployment. Owner-only. No grace window: the previous token is immediately invalidated and the new token is returned once.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"New ingest token\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RotateIngestTokenResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/trace\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Toggle debug tracing\",\n \"description\": \"Enable or disable debug tracing for a deployment. Owner-only, gated by the debugTrace feature. `minutes` of 0 disables; allowed values are 0, 15, 30, 60. An absent body defaults to 15 minutes.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"required\": false,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TraceDeploymentRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Updated trace window\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TraceDeploymentResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/usage\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Deployment usage\",\n \"description\": \"Aggregate usage summary plus bucketed chart data for a deployment over the requested period. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"1h\", \"24h\", \"7d\", \"30d\"],\n \"description\": \"Time window for the usage summary.\"\n },\n \"required\": false,\n \"description\": \"Time window for the usage summary.\",\n \"name\": \"period\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Usage summary and chart buckets\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentUsageResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/custom-domains\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List custom domains\",\n \"description\": \"List custom domains attached to any deployment of this flow. Requires member role and the customDomains feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Custom domains for the flow\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListCustomDomainsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Attach custom domain\",\n \"description\": \"Attach a custom domain to the flow's latest server deployment, or to an explicit deployment supplied in the body. Requires member role and the customDomains feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateCustomDomainRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Custom domain attached\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CustomDomain\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/custom-domains/{domainId}\": {\n \"delete\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Detach custom domain\",\n \"description\": \"Detach a custom domain from its deployment and remove the Scaleway record. Idempotent: a missing domain still returns 204.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dom_abc123\"\n },\n \"required\": true,\n \"name\": \"domainId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Custom domain detached\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deploy-token\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Self-hosted deploy-token status\",\n \"description\": \"Report whether a self-hosted deploy token exists for this config, plus the deployment health summary when present. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deploy-token status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeployTokenStatusResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Mint self-hosted deploy token\",\n \"description\": \"Create a self-hosted deployment (if none exists) and mint a flow+deployment-bound runner token. Admin-only. The raw token is returned once and never stored in plaintext.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"201\": {\n \"description\": \"Deploy token minted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateDeployTokenResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/entitlements\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Resolved entitlements\",\n \"description\": \"Return resolved feature entitlements for the authenticated user and project. Used by CLI/API clients; the web UI uses SSR-resolved entitlements. Requires viewer role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Resolved entitlements\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/EntitlementsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/settings/llm\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Active LLM provider\",\n \"description\": \"Report which LLM provider is currently active for the project and where billing is sourced. Never returns the apiKey. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Active LLM provider status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/LlmConfigStatusResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"No platform LLM provider configured\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/LlmConfigStatusResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Set LLM provider\",\n \"description\": \"Set or clear the project LLM provider override. Admin-only, gated by the chat feature. The apiKey is write-only: it is encrypted and never returned.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SetLlmConfigRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"LLM config saved or cleared\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SetLlmConfigResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/chat/sessions\": {\n \"get\": {\n \"tags\": [\"Chat\"],\n \"summary\": \"List chat sessions\",\n \"description\": \"List the caller's recent chat sessions for a project, ordered by last activity. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Chat session list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListChatSessionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/chat/sessions/{sessionId}\": {\n \"get\": {\n \"tags\": [\"Chat\"],\n \"summary\": \"Get chat session\",\n \"description\": \"Return a chat session and its full message history when the caller owns it. Foreign or unknown sessions return 404 (never 403) so existence is not leaked. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sess_abc123\"\n },\n \"required\": true,\n \"name\": \"sessionId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Chat session with messages\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ChatSessionDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/chat/elicit\": {\n \"post\": {\n \"tags\": [\"Chat\"],\n \"summary\": \"Answer elicitation prompt\",\n \"description\": \"Answer a pending MCP elicitation prompt (accept, decline, or cancel), unblocking the waiting tool invocation. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ElicitRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Elicitation resolved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ElicitResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/mcp/tokens\": {\n \"get\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"List MCP tokens\",\n \"description\": \"List the authenticated user's personal MCP tokens. No secret material is returned.\",\n \"responses\": {\n \"200\": {\n \"description\": \"MCP token list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListMcpTokensResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Issue MCP token\",\n \"description\": \"Issue a personal MCP token. The raw token is returned exactly once and is never retrievable afterwards.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateMcpTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"MCP token issued\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateMcpTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/mcp/tokens/{tokenId}\": {\n \"delete\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Revoke MCP token\",\n \"description\": \"Revoke a personal MCP token by id.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"mcptok_abc123\"\n },\n \"required\": true,\n \"name\": \"tokenId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"MCP token revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/runners\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List runners (deprecated)\",\n \"description\": \"Deprecated: runners migrated to deployments (origin=self-hosted). Always returns an empty list for backward compatibility. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Empty runner list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListRunnersResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/runners/heartbeat\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Runner heartbeat\",\n \"description\": \"Accept a self-hosted runner heartbeat with usage counters. Authenticated by a flow+deployment-bound runner token. Updates deployment liveness and records an immutable usage row.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/HeartbeatRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Heartbeat accepted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RunnerHeartbeatResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/packages\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"Package catalog\",\n \"description\": \"Resolved `@walkeros/*` package catalog for the add-step picker, optionally filtered by type and platform.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Filter by package type.\"\n },\n \"required\": false,\n \"description\": \"Filter by package type.\",\n \"name\": \"type\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Filter by platform.\"\n },\n \"required\": false,\n \"description\": \"Filter by platform.\",\n \"name\": \"platform\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Package catalog\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PackageCatalogResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Package catalog unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/packages/search\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"Search packages\",\n \"description\": \"Search the npm registry for `@walkeros/*` packages. An empty query returns popular scope packages.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Search query.\"\n },\n \"required\": false,\n \"description\": \"Search query.\",\n \"name\": \"q\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Filter by platform.\"\n },\n \"required\": false,\n \"description\": \"Filter by platform.\",\n \"name\": \"platform\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Search results\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PackageSearchResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Package search unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/observe/timing\": {\n \"post\": {\n \"tags\": [\"Observe\"],\n \"summary\": \"Report connect timing\",\n \"description\": \"Fire-and-forget beacon for client-side connect timing SLIs. No auth required; carries no secrets. Returns 204.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ObserveTimingRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"204\": {\n \"description\": \"Timing recorded\"\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n }\n },\n \"webhooks\": {}\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\n\nconst TITLE = 'Authentication';\nconst DESCRIPTION =\n 'Manage walkerOS authentication. Check login status, log in via device code flow, or log out. ' +\n 'No terminal or browser required, the MCP client handles the authorization URL.';\n\nconst inputSchema = {\n action: z\n .enum(['status', 'login', 'logout'])\n .describe('Authentication action to perform'),\n deviceCode: z\n .string()\n .optional()\n .describe(\n 'Device code from a previous pending login attempt. Provide to resume polling without requesting a new code.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createAuthToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'auth',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => authHandlerBody(client, input),\n };\n}\n\nasync function authHandlerBody(client: ToolClient, input: unknown) {\n const { action, deviceCode } = (input ?? {}) as {\n action?: 'status' | 'login' | 'logout';\n deviceCode?: string;\n };\n try {\n switch (action) {\n case 'status': {\n const resolved = client.resolveToken();\n if (!resolved) {\n return mcpResult(\n { authenticated: false },\n { next: ['Use auth with action \"login\" to authenticate'] },\n );\n }\n const user = await client.whoami();\n return mcpResult({\n authenticated: true,\n ...(user as Record<string, unknown>),\n });\n }\n\n case 'login': {\n if (deviceCode) {\n const pollResult = await client.pollForToken(deviceCode, {\n timeoutMs: 60000,\n });\n\n if (pollResult.success) {\n return mcpResult(\n { authenticated: true, email: pollResult.email },\n {\n next: [\n 'Use project_manage with action \"list\" to see your projects',\n ],\n },\n );\n }\n\n if (pollResult.status === 'pending') {\n return mcpResult({\n authenticated: false,\n status: 'pending',\n message: 'Still waiting for authorization. Try again shortly.',\n deviceCode,\n });\n }\n\n return mcpError(\n new Error(pollResult.error || 'Authorization failed'),\n );\n }\n\n const code = await client.requestDeviceCode();\n const loginUrl = code.verificationUriComplete || code.verificationUri;\n\n return mcpResult({\n authenticated: false,\n status: 'awaiting_authorization',\n loginUrl,\n message: `Open this link to authorize: ${loginUrl}`,\n deviceCode: code.deviceCode,\n });\n }\n\n case 'logout': {\n const deleted = client.deleteConfig();\n const hadEnvToken =\n typeof process.env.WALKEROS_TOKEN === 'string' &&\n process.env.WALKEROS_TOKEN.length > 0;\n delete process.env.WALKEROS_TOKEN;\n let message: string;\n if (deleted && hadEnvToken) {\n message =\n 'Logged out. Config removed and WALKEROS_TOKEN cleared from process environment.';\n } else if (deleted) {\n message = 'Logged out and config removed.';\n } else if (hadEnvToken) {\n message =\n 'No config found. WALKEROS_TOKEN cleared from process environment.';\n } else {\n message = 'No config found, already logged out.';\n }\n return mcpResult({\n loggedOut: true,\n message,\n });\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: status, login, logout`,\n );\n }\n } catch (error) {\n return mcpError(error);\n }\n}\n\nexport function registerAuthTool(server: McpServer, client: ToolClient) {\n const spec = createAuthToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport { wrapUserData } from '../user-data.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n validateActionInput,\n assertParam,\n PROJECT_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\n\nfunction wrapProjectName<T extends { name?: string }>(p: T): T {\n return p.name !== undefined ? { ...p, name: wrapUserData(p.name) } : p;\n}\n\nconst TITLE = 'Project Management';\nconst DESCRIPTION =\n 'Manage walkerOS projects. List, create, update, delete projects, or set a default project for CLI operations.';\n\nconst inputSchema = {\n action: z\n .enum(['list', 'get', 'create', 'update', 'delete', 'set_default'])\n .describe('Project management action to perform'),\n projectId: z\n .string()\n .optional()\n .describe('Required for get, update, delete, set_default.'),\n name: z\n .string()\n .optional()\n .describe(\n 'Required for create and update (update also requires projectId).',\n ),\n cursor: z\n .string()\n .optional()\n .describe(\n 'Pagination cursor from a previous list response. Only used with the list action.',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .optional()\n .describe('Max items per page (1-100). Only used with the list action.'),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createProjectManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'project_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => projectManageHandlerBody(client, input),\n };\n}\n\nasync function projectManageHandlerBody(client: ToolClient, input: unknown) {\n const { action, projectId, name, cursor, limit } = (input ?? {}) as {\n action?: 'list' | 'get' | 'create' | 'update' | 'delete' | 'set_default';\n projectId?: string;\n name?: string;\n cursor?: string;\n limit?: number;\n };\n const validationError = validateActionInput(\n 'project_manage',\n action ?? '',\n { projectId, name },\n PROJECT_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n switch (action) {\n case 'list': {\n const projects = (await client.listProjects({ cursor, limit })) as\n | unknown[]\n | { projects?: unknown[] };\n const items = Array.isArray(projects)\n ? projects\n : projects?.projects || [];\n if (items.length === 0) {\n return mcpResult(\n { projects: [] },\n {\n next: [\n 'Use project_manage with action \"create\" to create your first project',\n 'Use project_manage with action \"set_default\" after creating to set it as default',\n ],\n },\n );\n }\n const typedItems = items as Array<{ name?: string }>;\n const safe = Array.isArray(projects)\n ? typedItems.map(wrapProjectName)\n : { ...projects, projects: typedItems.map(wrapProjectName) };\n return mcpResult(safe);\n }\n\n case 'get': {\n const project = await client.getProject({ projectId });\n return mcpResult(wrapProjectName(project as { name?: string }));\n }\n\n case 'create': {\n assertParam(name, 'name', 'create');\n const created = await client.createProject({ name });\n return mcpResult(wrapProjectName(created as { name?: string }), {\n next: [\n 'Use project_manage with action \"set_default\" to make this your active project',\n ],\n });\n }\n\n case 'update': {\n assertParam(name, 'name', 'update');\n const updated = await client.updateProject({ projectId, name });\n return mcpResult(wrapProjectName(updated as { name?: string }));\n }\n\n case 'delete': {\n const deleted = await client.deleteProject({ projectId });\n return mcpResult(deleted);\n }\n\n case 'set_default': {\n assertParam(projectId, 'projectId', 'set_default');\n client.setDefaultProject(projectId);\n return mcpResult(\n { defaultProjectId: projectId },\n {\n next: [\n 'Use flow_manage with action \"list\" to see flows in this project',\n ],\n },\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: list, get, create, update, delete, set_default`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerProjectManageTool(\n server: McpServer,\n client: ToolClient,\n) {\n const spec = createProjectManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","export interface ActionRule {\n /** Params that must each be present for this action. */\n required?: string[];\n /** Param groups where at least one of each group must be present. */\n oneOf?: string[][];\n /** Optional discovery hint appended to the error (e.g. 'Use action \"list\" ...'). */\n hint?: string;\n}\n\nexport type ActionRequirementMap = Record<string, ActionRule>;\n\n/**\n * Returns a canonical error message string when `input` is missing a\n * required (or one-of) param for `action`, otherwise null. The message is\n * uniform across tools so error quality cannot drift between tools.\n * Required params are checked (and reported) before oneOf groups.\n */\nexport function validateActionInput(\n toolName: string,\n action: string,\n input: Record<string, unknown>,\n map: ActionRequirementMap,\n): string | null {\n const rule = map[action];\n if (!rule) return null;\n for (const param of rule.required ?? []) {\n if (\n input[param] === undefined ||\n input[param] === null ||\n input[param] === ''\n ) {\n return missing(toolName, action, param, rule.hint);\n }\n }\n for (const group of rule.oneOf ?? []) {\n const satisfied = group.some(\n (p) => input[p] !== undefined && input[p] !== null && input[p] !== '',\n );\n if (!satisfied) {\n return `${toolName} action \"${action}\" requires one of: ${group.join(', ')}.${rule.hint ? ' ' + rule.hint : ''}`;\n }\n }\n return null;\n}\n\n/**\n * Narrows a param that the action's requirement map has already validated as\n * present, so typed client calls accept it without re-checking. The companion\n * to `validateActionInput`: callers run that first to produce a friendly error,\n * then use this assertion at the use site to recover the non-nullable type.\n * Because validation guarantees presence, this never throws in practice; the\n * throw exists only to satisfy the assertion-signature contract. The thrown\n * message mirrors the `missing()` form (\"<param> is required for <action> action.\").\n */\nexport function assertParam(\n value: string | undefined,\n param: string,\n action: string,\n): asserts value is string {\n if (value === undefined || value === null || value === '')\n throw new Error(`${param} is required for ${action} action.`);\n}\n\nfunction missing(\n tool: string,\n action: string,\n param: string,\n hint?: string,\n): string {\n // Keep the substring \"<param> is required\" so existing assertions/docs that\n // string-match it stay green.\n return `${param} is required for ${action} action.${hint ? ' ' + hint : ''}`;\n}\n\nexport const FLOW_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n get: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n update: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n delete: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n duplicate: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n create: { required: ['name'] },\n preview_list: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n preview_get: { required: ['flowId', 'previewId'] },\n preview_create: {\n required: ['flowId'],\n oneOf: [['flowName', 'flowSettingsId']],\n },\n preview_delete: { required: ['flowId', 'previewId'] },\n};\n\nexport const DEPLOY_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n deploy: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n get: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n delete: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n};\n\nexport const SECRET_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n list: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n set: {\n required: ['flowId', 'name', 'value'],\n hint: 'Use action \"list\" to see existing secret names for this flow.',\n },\n update: {\n required: ['flowId', 'secretId', 'value'],\n hint: 'Use action \"list\" to find the secretId.',\n },\n delete: {\n required: ['flowId', 'secretId'],\n hint: 'Use action \"list\" to find the secretId.',\n },\n};\n\nexport const PROJECT_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n get: {\n required: ['projectId'],\n hint: 'Use action \"list\" to see available projects.',\n },\n update: {\n required: ['projectId', 'name'],\n hint: 'Use action \"list\" to see available projects.',\n },\n delete: {\n required: ['projectId'],\n hint: 'Use action \"list\" to see available projects.',\n },\n set_default: {\n required: ['projectId'],\n hint: 'Use action \"list\" to see available projects.',\n },\n create: { required: ['name'] },\n};\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport {\n wrapUserData,\n redactNestedStrings,\n keepStructural,\n} from '../user-data.js';\nimport { flowCanvasResult } from '../ui-parts.js';\n\n/** Peek at a Flow.Json root (v4) and decide whether the bubble should render\n * as web-flavoured or server-flavoured. The platform is recorded on\n * `flows[name].config.platform`. We pick the first flow's platform; if no\n * platform is set we fall back to `'server'` so the chat bubble can still\n * render even if the user is mid-edit. */\nfunction pickPlatform(content: unknown): 'web' | 'server' {\n if (content && typeof content === 'object') {\n const flows = (content as { flows?: unknown }).flows;\n if (flows && typeof flows === 'object') {\n for (const flow of Object.values(flows as Record<string, unknown>)) {\n if (flow && typeof flow === 'object') {\n const config = (flow as { config?: unknown }).config;\n if (config && typeof config === 'object') {\n const platform = (config as { platform?: unknown }).platform;\n if (platform === 'web' || platform === 'server') return platform;\n }\n }\n }\n }\n }\n return 'server';\n}\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n validateActionInput,\n assertParam,\n FLOW_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\nimport {\n NO_DEFAULT_PROJECT_ERROR,\n resolveDefaultProject,\n} from './project-context.js';\n\nfunction safeSummary<T extends { name?: string }>(flow: T): T {\n return flow.name !== undefined\n ? { ...flow, name: wrapUserData(flow.name) }\n : flow;\n}\n\nfunction safeDetail<T extends { name?: string; config?: unknown }>(flow: T): T {\n const withName =\n flow.name !== undefined\n ? { ...flow, name: wrapUserData(flow.name) }\n : { ...flow };\n if (flow.config !== undefined) {\n (withName as { config?: unknown }).config = redactNestedStrings(\n flow.config,\n { skip: keepStructural },\n );\n }\n return withName as T;\n}\n\nconst TITLE = 'Flow Management';\nconst DESCRIPTION =\n 'Manage walkerOS flows and their previews. List/get/create/update/delete/duplicate flows, or create/inspect/delete preview bundles for testing flow changes on live sites.';\n\nconst inputSchema = {\n action: z\n .enum([\n 'list',\n 'get',\n 'create',\n 'update',\n 'delete',\n 'duplicate',\n 'preview_list',\n 'preview_get',\n 'preview_create',\n 'preview_delete',\n ])\n .describe('Flow management action to perform'),\n flowId: z\n .string()\n .optional()\n .describe(\n 'Flow ID (flow_...) or config ID (cfg_...). Required for get, update, delete, duplicate, preview_list, preview_get, preview_create, preview_delete.',\n ),\n projectId: z\n .string()\n .optional()\n .describe(\n 'Project ID. Optional filter for list (omit to list all projects). Required for create if no default project set.',\n ),\n name: z\n .string()\n .optional()\n .describe(\n 'Flow name. Required for create. Optional for update (to rename) and duplicate.',\n ),\n content: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Flow.Json content. Used for create and update.'),\n patch: z\n .boolean()\n .optional()\n .describe(\n 'Merge-patch for update (default true). When true, only provided fields are updated.',\n ),\n fields: z\n .array(z.string())\n .optional()\n .describe('Dot-path selectors for get to return only specific fields.'),\n sort: z\n .enum(['name', 'updated_at', 'created_at'])\n .optional()\n .describe('Sort field for list.'),\n order: z.enum(['asc', 'desc']).optional().describe('Sort order for list.'),\n includeDeleted: z\n .boolean()\n .optional()\n .describe('Include soft-deleted flows in list results.'),\n cursor: z\n .string()\n .optional()\n .describe(\n 'Pagination cursor from a previous list response. Only used with the list action.',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .optional()\n .describe('Max items per page (1-100). Only used with the list action.'),\n previewId: z\n .string()\n .optional()\n .describe(\n 'Preview ID (prv_...). Required for preview_get and preview_delete (both also require flowId).',\n ),\n flowName: z\n .string()\n .optional()\n .describe(\n 'Used by preview_create — provide one of flowName or flowSettingsId (preview_create also requires flowId).',\n ),\n flowSettingsId: z\n .string()\n .optional()\n .describe(\n 'Used by preview_create — provide one of flowName or flowSettingsId (preview_create also requires flowId).',\n ),\n source: z\n .discriminatedUnion('kind', [\n z.object({ kind: z.literal('draft') }),\n z.object({\n kind: z.literal('deployment-version'),\n deploymentVersionId: z.string(),\n }),\n ])\n .optional()\n .describe(\n \"What the preview should run, for preview_create: the flow's draft (default) or a deployed version's stored config (kind 'deployment-version' with its deploymentVersionId).\",\n ),\n siteUrl: z\n .string()\n .optional()\n .describe(\n 'Optional site URL for preview_create. When provided, the response includes full activationUrl and deactivationUrl the user can click.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFlowManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowManageHandlerBody(client, input),\n };\n}\n\nasync function flowManageHandlerBody(client: ToolClient, input: unknown) {\n const {\n action,\n flowId,\n projectId,\n name,\n content,\n patch,\n fields,\n sort,\n order,\n includeDeleted,\n cursor,\n limit,\n previewId,\n flowName,\n flowSettingsId,\n source,\n siteUrl,\n } = (input ?? {}) as {\n action?:\n | 'list'\n | 'get'\n | 'create'\n | 'update'\n | 'delete'\n | 'duplicate'\n | 'preview_list'\n | 'preview_get'\n | 'preview_create'\n | 'preview_delete';\n flowId?: string;\n projectId?: string;\n name?: string;\n content?: Record<string, unknown>;\n patch?: boolean;\n fields?: string[];\n sort?: 'name' | 'updated_at' | 'created_at';\n order?: 'asc' | 'desc';\n includeDeleted?: boolean;\n cursor?: string;\n limit?: number;\n previewId?: string;\n flowName?: string;\n flowSettingsId?: string;\n source?:\n | { kind: 'draft' }\n | { kind: 'deployment-version'; deploymentVersionId: string };\n siteUrl?: string;\n };\n const validationError = validateActionInput(\n 'flow_manage',\n action ?? '',\n { flowId, projectId, name, previewId, flowName, flowSettingsId },\n FLOW_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n switch (action) {\n case 'list': {\n if (projectId) {\n const data = await client.listFlows({\n projectId,\n sort,\n order,\n includeDeleted,\n cursor,\n limit,\n });\n const dataObj = data as { flows?: Array<{ name?: string }> };\n const flows = dataObj.flows;\n const safe = Array.isArray(flows)\n ? { ...dataObj, flows: flows.map(safeSummary) }\n : data;\n return mcpResult(safe);\n }\n const data = await client.listAllFlows({\n sort,\n order,\n includeDeleted,\n cursor,\n limit,\n });\n const safe = Array.isArray(data)\n ? (data as Array<{ name?: string }>).map(safeSummary)\n : data;\n return mcpResult(\n { projects: safe },\n {\n next: [\n 'Use flow_manage with action \"get\" and a flowId to inspect a specific flow',\n 'Use flow_load to open a flow for editing',\n ],\n },\n );\n }\n\n case 'get': {\n assertParam(flowId, 'flowId', 'get');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const flow = await client.getFlow({\n flowId,\n projectId: resolvedProjectId,\n fields,\n });\n const safe = safeDetail(\n flow as {\n id?: string;\n name?: string;\n config?: Record<string, unknown>;\n },\n );\n return flowCanvasResult({\n flowId: safe.id,\n configName: safe.name ?? 'default',\n platform: pickPlatform(safe.config),\n flowConfig: safe.config ?? {},\n suggestions: [\n {\n label: 'Validate this flow',\n prompt: `Validate flow ${safe.id}`,\n autoSend: true,\n },\n {\n label: 'Add a destination',\n prompt: `Help me add a destination to flow ${safe.id}`,\n },\n ],\n });\n }\n\n case 'create': {\n assertParam(name, 'name', 'create');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const created = await client.createFlow({\n name,\n content: content ?? {},\n projectId: resolvedProjectId,\n });\n const safeCreated = safeDetail(\n created as {\n id?: string;\n name?: string;\n config?: Record<string, unknown>;\n },\n );\n return flowCanvasResult({\n flowId: safeCreated.id,\n configName: safeCreated.name ?? 'default',\n platform: pickPlatform(safeCreated.config),\n flowConfig: safeCreated.config ?? {},\n suggestions: [\n {\n label: 'Validate this flow',\n prompt: `Validate flow ${safeCreated.id}`,\n autoSend: true,\n },\n {\n label: 'Deploy it',\n prompt: `Deploy flow ${safeCreated.id}`,\n },\n ],\n });\n }\n\n case 'update': {\n assertParam(flowId, 'flowId', 'update');\n const updated = await client.updateFlow({\n flowId,\n projectId,\n name,\n content,\n mergePatch: patch ?? true,\n });\n const safeUpdated = safeDetail(\n updated as {\n id?: string;\n name?: string;\n config?: Record<string, unknown>;\n },\n );\n return flowCanvasResult({\n flowId: safeUpdated.id,\n configName: safeUpdated.name ?? 'default',\n platform: pickPlatform(safeUpdated.config),\n flowConfig: safeUpdated.config ?? {},\n suggestions: [\n {\n label: 'Validate this flow',\n prompt: `Validate flow ${safeUpdated.id}`,\n autoSend: true,\n },\n {\n label: 'Deploy it',\n prompt: `Deploy flow ${safeUpdated.id}`,\n },\n ],\n });\n }\n\n case 'delete': {\n assertParam(flowId, 'flowId', 'delete');\n const deleted = await client.deleteFlow({ flowId, projectId });\n return mcpResult(deleted);\n }\n\n case 'duplicate': {\n assertParam(flowId, 'flowId', 'duplicate');\n const duplicated = await client.duplicateFlow({\n flowId,\n name,\n projectId,\n });\n return mcpResult(\n safeDetail(duplicated as { name?: string; config?: unknown }),\n );\n }\n\n case 'preview_list': {\n assertParam(flowId, 'flowId', 'preview_list');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const data = await client.listPreviews({\n projectId: resolvedProjectId,\n flowId,\n });\n return mcpResult(data);\n }\n\n case 'preview_get': {\n assertParam(flowId, 'flowId', 'preview_get');\n assertParam(previewId, 'previewId', 'preview_get');\n const data = await client.getPreview({\n projectId,\n flowId,\n previewId,\n });\n return mcpResult(data);\n }\n\n case 'preview_create': {\n assertParam(flowId, 'flowId', 'preview_create');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const preview = await client.createPreview({\n projectId: resolvedProjectId,\n flowId,\n flowName,\n flowSettingsId,\n ...(source ? { source } : {}),\n });\n const typedPreview = preview as {\n id: string;\n token: string;\n activationUrl: string;\n bundleUrl: string;\n createdBy: string;\n createdAt: string;\n [key: string]: unknown;\n };\n const enriched: Record<string, unknown> = {\n ...typedPreview,\n activationParam: typedPreview.activationUrl,\n };\n if (siteUrl) {\n const on = new URL(siteUrl);\n on.searchParams.set('elbPreview', typedPreview.token);\n enriched.activationUrl = on.toString();\n\n const off = new URL(siteUrl);\n off.searchParams.set('elbPreview', 'off');\n enriched.deactivationUrl = off.toString();\n } else {\n delete enriched.activationUrl;\n }\n return mcpResult(enriched, {\n next: siteUrl\n ? [\n 'Open activationUrl to activate preview mode; open deactivationUrl to exit.',\n ]\n : [\n 'Append activationParam to any URL on your site to activate preview mode.',\n ],\n });\n }\n\n case 'preview_delete': {\n assertParam(flowId, 'flowId', 'preview_delete');\n assertParam(previewId, 'previewId', 'preview_delete');\n const data = await client.deletePreview({\n projectId,\n flowId,\n previewId,\n });\n // The app responds 204 No Content; an older CLI maps that to null.\n // mcpResult requires a record for structuredContent, so synthesize a\n // confirmation when the body is empty.\n return mcpResult(\n data && typeof data === 'object'\n ? data\n : { deleted: true, previewId },\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: list, get, create, update, delete, duplicate, preview_list, preview_get, preview_create, preview_delete`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerFlowManageTool(server: McpServer, client: ToolClient) {\n const spec = createFlowManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","export type SuggestionTile = {\n label: string;\n description?: string;\n prompt: string;\n autoSend?: boolean;\n};\n\nexport interface FlowCanvasPayload {\n flowId?: string;\n configName: string;\n platform: 'web' | 'server';\n flowConfig: Record<string, unknown>;\n highlight?: { stepAddress: string; reason: string };\n suggestions?: SuggestionTile[];\n}\n\nexport interface FlowCanvasToolResult extends FlowCanvasPayload {\n kind: 'flow-canvas';\n}\n\n/**\n * Tool-result helper that marks a response as renderable as a FlowCanvas.\n * The chat UI inspects `structuredContent.kind === 'flow-canvas'` and mounts\n * a `FlowCanvasBubble` instead of the generic JSON fallback. The `content[0]`\n * text is the same JSON stringified — the LLM sees a self-describing object.\n */\nexport function flowCanvasResult(payload: FlowCanvasPayload) {\n const structured: FlowCanvasToolResult = { kind: 'flow-canvas', ...payload };\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(structured, null, 2),\n },\n ],\n structuredContent: structured as unknown as Record<string, unknown> & {\n kind: 'flow-canvas';\n },\n };\n}\n\nexport function isFlowCanvasResult(v: unknown): v is FlowCanvasToolResult {\n return (\n typeof v === 'object' &&\n v !== null &&\n (v as { kind?: unknown }).kind === 'flow-canvas'\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport { redactDisplayNames } from '../user-data.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n resolveDeploymentSlug,\n type DeploymentSummaryForResolver,\n type ListDeploymentsForResolver,\n} from './_resolvers.js';\nimport {\n validateActionInput,\n assertParam,\n DEPLOY_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\n\nconst TITLE = 'Deploy Management';\nconst DESCRIPTION =\n 'Deploy walkerOS flows and manage deployments. ' +\n 'For get/delete actions pass flowId (required) plus optional slug to disambiguate when a flow has multiple active deployments. ' +\n \"If a flow has >=2 active deployments and no slug is supplied, the tool returns a MULTIPLE_DEPLOYMENTS error with a details[] list showing each deployment's slug, type, status, and updatedAt.\";\n\nconst inputSchema = {\n action: z\n .enum(['deploy', 'list', 'get', 'delete'])\n .describe('Deployment action to perform'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID. Optional; falls back to the default project.'),\n flowId: z.string().optional().describe('Required for deploy, get, delete.'),\n slug: z\n .string()\n .optional()\n .describe(\n 'Deployment slug. Optional disambiguator for get/delete when the flow has multiple active deployments.',\n ),\n type: z\n .enum(['web', 'server'])\n .optional()\n .describe('Deployment type filter for list.'),\n status: z.string().optional().describe('Status filter for list.'),\n wait: z\n .boolean()\n .optional()\n .describe(\n 'Wait for deploy to complete (default true). Only used with deploy action.',\n ),\n flowName: z\n .string()\n .optional()\n .describe(\n 'Flow name for multi-settings flows. Only used with deploy action.',\n ),\n cursor: z\n .string()\n .optional()\n .describe(\n 'Pagination cursor from a previous list response. Only used with the list action.',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .optional()\n .describe('Max items per page (1-100). Only used with the list action.'),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nfunction listForResolver(\n client: ToolClient,\n projectId: string | undefined,\n): ListDeploymentsForResolver {\n return async (q) => {\n const resp = (await client.listDeployments({\n projectId: projectId || q.projectId || undefined,\n flowId: q.flowId,\n })) as { deployments?: DeploymentSummaryForResolver[] };\n return resp.deployments ?? [];\n };\n}\n\nexport function createDeployManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'deploy_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => deployManageHandlerBody(client, input),\n };\n}\n\nasync function deployManageHandlerBody(client: ToolClient, input: unknown) {\n const {\n action,\n projectId,\n flowId,\n slug,\n type,\n status,\n wait,\n flowName,\n cursor,\n limit,\n } = (input ?? {}) as {\n action?: 'deploy' | 'list' | 'get' | 'delete';\n projectId?: string;\n flowId?: string;\n slug?: string;\n type?: 'web' | 'server';\n status?: string;\n wait?: boolean;\n flowName?: string;\n cursor?: string;\n limit?: number;\n };\n const validationError = validateActionInput(\n 'deploy_manage',\n action ?? '',\n { flowId, projectId },\n DEPLOY_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n switch (action) {\n case 'deploy': {\n assertParam(flowId, 'flowId', 'deploy');\n const result = await client.deploy({\n flowId,\n wait: wait ?? true,\n flowName,\n });\n return mcpResult(redactDisplayNames(result), {\n next: [\n 'Use deploy_manage with action \"get\" to check deployment status',\n ],\n });\n }\n\n case 'list': {\n const data = await client.listDeployments({\n projectId,\n flowId,\n type,\n status,\n cursor,\n limit,\n });\n return mcpResult(redactDisplayNames(data));\n }\n\n case 'get': {\n assertParam(flowId, 'flowId', 'get');\n const resolvedSlug = await resolveDeploymentSlug({\n projectId: projectId ?? '',\n flowId,\n slug,\n list: listForResolver(client, projectId),\n });\n const data = await client.getDeploymentBySlug({\n slug: resolvedSlug,\n projectId,\n });\n return mcpResult(redactDisplayNames(data));\n }\n\n case 'delete': {\n assertParam(flowId, 'flowId', 'delete');\n const resolvedSlug = await resolveDeploymentSlug({\n projectId: projectId ?? '',\n flowId,\n slug,\n list: listForResolver(client, projectId),\n });\n const data = await client.deleteDeployment({\n slug: resolvedSlug,\n projectId,\n });\n return mcpResult(\n redactDisplayNames({\n deleted: true,\n ...(data as Record<string, unknown>),\n }),\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: deploy, list, get, delete`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerDeployTool(server: McpServer, client: ToolClient) {\n const spec = createDeployManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","/**\n * Internal helpers shared by deploy_manage actions. Not re-exported from the\n * tools barrel; leading underscore marks this as tool-module internal.\n *\n * All collaborators are passed in as arguments so unit tests can inject fakes\n * without relying on jest.mock. This keeps resolver tests local to the\n * resolver signature and avoids shared-mock drift.\n */\n\n/**\n * The subset of a deployment summary the resolver needs to decide 0 / 1 / many\n * and to surface a useful MULTIPLE_DEPLOYMENTS error. Kept structurally\n * compatible with the CLI's DeploymentSummaryForFlow.\n */\nexport interface DeploymentSummaryForResolver {\n slug: string;\n type: string;\n status: string;\n updatedAt: string;\n}\n\n/**\n * Dependency injected list function. Must return only non-deleted deployments\n * for the given project + flow. The production wiring calls\n * `listDeployments({ projectId, flowId })` from `@walkeros/cli`, which hits\n * the app API; the API excludes soft-deleted rows.\n */\nexport type ListDeploymentsForResolver = (q: {\n projectId: string;\n flowId: string;\n}) => Promise<DeploymentSummaryForResolver[]>;\n\n/**\n * Error thrown when a flow has 0 matching deployments, or when a caller passed\n * a slug that does not match any active deployment of the flow. The MCP layer\n * translates this into an mcpError with `code: 'NOT_FOUND'`.\n */\nexport class DeploymentNotFoundError extends Error {\n readonly code = 'NOT_FOUND';\n constructor(message: string) {\n super(message);\n this.name = 'DeploymentNotFoundError';\n }\n}\n\n/**\n * Error thrown when a flow has >= 2 active deployments and the caller did not\n * pass a slug. Carries a `details[]` list so the MCP layer can surface the\n * options to the user.\n */\nexport class MultipleDeploymentsError extends Error {\n readonly code = 'MULTIPLE_DEPLOYMENTS';\n readonly details: DeploymentSummaryForResolver[];\n constructor(message: string, details: DeploymentSummaryForResolver[]) {\n super(message);\n this.name = 'MultipleDeploymentsError';\n this.details = details;\n }\n}\n\n/**\n * Resolve a concrete deployment slug for a (projectId, flowId, slug?) tuple.\n *\n * Behavior:\n * - 0 matches: throws DeploymentNotFoundError.\n * - 1 match, no slug: returns the single slug.\n * - slug provided and matches: returns the slug.\n * - slug provided and does not match: throws DeploymentNotFoundError.\n * - >= 2 matches, no slug: throws MultipleDeploymentsError with details[].\n */\nexport async function resolveDeploymentSlug(args: {\n projectId: string;\n flowId: string;\n slug?: string;\n list: ListDeploymentsForResolver;\n}): Promise<string> {\n const matches = await args.list({\n projectId: args.projectId,\n flowId: args.flowId,\n });\n\n if (matches.length === 0) {\n throw new DeploymentNotFoundError(\n `No deployments found for flow ${args.flowId}`,\n );\n }\n\n if (args.slug !== undefined) {\n const hit = matches.find((m) => m.slug === args.slug);\n if (!hit) {\n throw new DeploymentNotFoundError(\n `No deployment with slug ${args.slug} in flow ${args.flowId}`,\n );\n }\n return hit.slug;\n }\n\n if (matches.length === 1) {\n return matches[0].slug;\n }\n\n throw new MultipleDeploymentsError(\n `Flow ${args.flowId} has ${matches.length} active deployments; pass slug to disambiguate`,\n matches.map((m) => ({\n slug: m.slug,\n type: m.type,\n status: m.status,\n updatedAt: m.updatedAt,\n })),\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n validateActionInput,\n assertParam,\n SECRET_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\nimport {\n NO_DEFAULT_PROJECT_ERROR,\n resolveDefaultProject,\n} from './project-context.js';\n\nconst TITLE = 'Secret Management';\nconst DESCRIPTION =\n 'Manage a flow’s secrets (the $env.<NAME> values its steps reference at deploy/run time). ' +\n 'Actions: list (metadata only), set (create), update (rotate value), delete. ' +\n 'Secrets are write-mostly: values are encrypted at rest and are NEVER returned, listed, or echoed. ' +\n 'Reference a secret from a flow step as $env.<NAME>.';\n\nconst inputSchema = {\n action: z\n .enum(['list', 'set', 'update', 'delete'])\n .describe('Secret management action to perform'),\n projectId: z\n .string()\n .optional()\n .describe(\n 'Project ID. Optional: falls back to the default project when omitted.',\n ),\n flowId: z\n .string()\n .describe(\n 'Flow ID (flow_...) or config ID (cfg_...). Required for list, set, update, and delete: secrets are flow-scoped.',\n ),\n name: z\n .string()\n .regex(\n /^[A-Z_][A-Z0-9_]*$/,\n 'Secret name must be uppercase letters, digits, and underscores, starting with a letter or underscore.',\n )\n .optional()\n .describe(\n 'Secret name (UPPER_SNAKE_CASE). Required for set. Referenced in flows as $env.<NAME>.',\n ),\n value: z\n .string()\n .min(1)\n .max(65536)\n .optional()\n .describe(\n 'Secret value (1-65536 chars). Required for set and update. Write-only: never returned or logged.',\n ),\n secretId: z\n .string()\n .optional()\n .describe(\n 'Secret ID (sec_...). Required for update and delete. Use action \"list\" to find it.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createSecretManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'secret_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => secretManageHandlerBody(client, input),\n };\n}\n\nasync function secretManageHandlerBody(client: ToolClient, input: unknown) {\n const { action, projectId, flowId, name, value, secretId } = (input ??\n {}) as {\n action?: 'list' | 'set' | 'update' | 'delete';\n projectId?: string;\n flowId?: string;\n name?: string;\n value?: string;\n secretId?: string;\n };\n const validationError = validateActionInput(\n 'secret_manage',\n action ?? '',\n { flowId, name, value, secretId },\n SECRET_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId)\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n\n switch (action) {\n case 'list': {\n assertParam(flowId, 'flowId', 'list');\n const data = await client.listSecrets({\n projectId: resolvedProjectId,\n flowId,\n });\n return mcpResult(data as Record<string, unknown>, {\n next: [\n 'Reference a listed secret from a flow step as $env.<NAME>.',\n 'Use action \"set\" to add a secret or \"update\" to rotate one.',\n ],\n });\n }\n\n case 'set': {\n assertParam(flowId, 'flowId', 'set');\n assertParam(name, 'name', 'set');\n assertParam(value, 'value', 'set');\n const created = await client.createSecret({\n projectId: resolvedProjectId,\n flowId,\n name,\n value,\n });\n // Response is metadata only; value is never echoed back.\n return mcpResult(created as Record<string, unknown>, {\n next: [`Reference it in this flow as $env.${name}.`],\n });\n }\n\n case 'update': {\n assertParam(flowId, 'flowId', 'update');\n assertParam(secretId, 'secretId', 'update');\n assertParam(value, 'value', 'update');\n const updated = await client.updateSecret({\n projectId: resolvedProjectId,\n flowId,\n secretId,\n value,\n });\n return mcpResult(updated as Record<string, unknown>);\n }\n\n case 'delete': {\n assertParam(flowId, 'flowId', 'delete');\n assertParam(secretId, 'secretId', 'delete');\n const deleted = await client.deleteSecret({\n projectId: resolvedProjectId,\n flowId,\n secretId,\n });\n return mcpResult(\n deleted && typeof deleted === 'object'\n ? (deleted as Record<string, unknown>)\n : { deleted: true, secretId },\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: list, set, update, delete`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerSecretManageTool(\n server: McpServer,\n client: ToolClient,\n) {\n const spec = createSecretManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackageSchema } from '@walkeros/core';\nimport { fetchCatalog, getPackageBaseUrl } from '../catalog.js';\n\nexport function registerPackageSchemaResources(server: McpServer) {\n const template = new ResourceTemplate('walkeros://schema/{packageName}', {\n list: async () => {\n const { entries } = await fetchCatalog({ baseUrl: getPackageBaseUrl() });\n return {\n resources: entries.map((pkg) => ({\n uri: `walkeros://schema/${encodeURIComponent(pkg.name)}`,\n name: pkg.name,\n description: `Schema and examples for ${pkg.name}`,\n mimeType: 'application/json' as const,\n })),\n };\n },\n });\n\n server.registerResource(\n 'package-schema',\n template,\n {\n title: 'walkerOS Package Schema',\n description:\n 'JSON Schema and configuration examples for walkerOS packages',\n mimeType: 'application/json',\n },\n async (uri, { packageName }) => {\n const info = await fetchPackageSchema(\n decodeURIComponent(packageName as string),\n );\n return {\n contents: [\n {\n uri: uri.toString(),\n mimeType: 'application/json' as const,\n text: JSON.stringify(info, null, 2),\n },\n ],\n };\n },\n );\n}\n","/**\n * Reference resources — pure schema and structural data only.\n *\n * Design principle: resources are loaded into context and should contain\n * only schemas, type definitions, and structural references. Behavioral\n * guidance, tutorials, and step-by-step instructions belong in prompts.\n * Vendor-specific examples belong in packages (fetched via package_get).\n */\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { schemas } from '@walkeros/core/dev';\nimport openapiSpec from '@walkeros/cli/openapi/spec.json';\nimport { fetchCatalog, getPackageBaseUrl } from '../catalog.js';\n\nexport function registerReferenceResources(server: McpServer) {\n // Flow Schema reference (generated from Zod)\n server.resource(\n 'flow-schema',\n 'walkeros://reference/flow-schema',\n {\n description:\n 'JSON Schema for Flow.Json — the complete flow configuration structure',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/flow-schema',\n text: JSON.stringify(schemas.configJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Event Model reference (generated from Zod)\n server.resource(\n 'event-model',\n 'walkeros://reference/event-model',\n {\n description:\n 'JSON Schema for walkerOS events: entity-action naming, data, context, globals, user, consent',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/event-model',\n text: JSON.stringify(schemas.eventJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Mapping reference (generated from Zod — composite of related schemas)\n server.resource(\n 'mapping',\n 'walkeros://reference/mapping',\n {\n description:\n 'JSON Schemas for walkerOS mapping: rules, valueConfig, rule, policy',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/mapping',\n text: JSON.stringify(\n {\n rules: schemas.rulesJsonSchema,\n valueConfig: schemas.valueConfigJsonSchema,\n rule: schemas.ruleJsonSchema,\n policy: schemas.policyJsonSchema,\n },\n null,\n 2,\n ),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Consent reference (generated from Zod)\n server.resource(\n 'consent',\n 'walkeros://reference/consent',\n {\n description:\n 'JSON Schema for walkerOS consent: destination-level, rule-level, and field-level consent gating',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/consent',\n text: JSON.stringify(schemas.consentJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Variables reference (hand-maintained — runtime interpolation patterns not captured in Zod schemas)\n server.resource(\n 'variables',\n 'walkeros://reference/variables',\n {\n description:\n 'walkerOS variable patterns: $var, $env, $contract, $code, $store, $secret substitution',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/variables',\n text: JSON.stringify(\n {\n separatorRule:\n '`.` for names and paths; `:` for literal values or raw-code payloads.',\n patterns: {\n '$var.name':\n 'Variable reference. Whole-string preserves native type (object, array, scalar). Inline interpolation requires a scalar. Reusable fragments (mapping templates, matcher lists, consent objects) live in the variables block and are referenced by name.',\n '$var.name.deep.path':\n 'Deep-path access into a structured variable. Walks nested keys/indices. Whole-string preserves type at the leaf; inline still requires a scalar leaf.',\n '$env.NAME':\n 'Environment variable. $env.GA_ID reads process.env.GA_ID.',\n '$env.NAME:default':\n 'Environment variable with fallback. $env.GA_ID:G-DEFAULT (the `:` is the literal default separator).',\n '$contract.name':\n 'Contract reference. Links to a named contract for validation.',\n '$contract.name.path':\n 'Nested contract access. $contract.ecommerce.product.',\n '$code:(expr)':\n 'Inline JavaScript. $code:(event) => event.data.price * 100 (the `:` carries the raw-code payload).',\n '$store.storeId':\n 'Store injection in env values. Wires runtime store access.',\n '$secret.NAME':\n 'Secret injection. Resolved server-side at deploy/runtime.',\n },\n cascade: {\n priority: [\n '1. Step-level variables (highest)',\n '2. Flow-level variables',\n '3. Config-level variables (lowest)',\n ],\n example: {\n variables: {\n apiUrl: 'https://x.io',\n mapping: { id: 'data.id' },\n },\n flows: {\n production: {\n destinations: {\n api: {\n config: {\n url: '$var.apiUrl',\n idPath: '$var.mapping.id',\n },\n },\n },\n },\n },\n },\n },\n },\n null,\n 2,\n ),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Contract reference (generated from Zod)\n server.resource(\n 'contract',\n 'walkeros://reference/contract',\n {\n description:\n 'JSON Schema for walkerOS contracts: event schema validation with entity-action keying',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/contract',\n text: JSON.stringify(schemas.contractJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Examples reference (loaded from @walkeros/cli at runtime)\n server.resource(\n 'examples',\n 'walkeros://reference/examples',\n {\n description:\n 'Complete flow config example: web + server flows, mapping, contracts, step examples',\n mimeType: 'application/json',\n },\n async () => {\n let example: string;\n try {\n const { readFileSync } = await import('fs');\n const { createRequire } = await import('module');\n const require = createRequire(import.meta.url);\n const examplePath =\n require.resolve('@walkeros/cli/examples/flow-complete.json');\n example = readFileSync(examplePath, 'utf-8');\n } catch {\n example = JSON.stringify({ error: 'Example not found' });\n }\n return {\n contents: [\n {\n uri: 'walkeros://reference/examples',\n text: example,\n mimeType: 'application/json',\n },\n ],\n };\n },\n );\n\n // OpenAPI 3.1 specification for the walkerOS cloud HTTP API\n server.resource(\n 'openapi',\n 'walkeros://reference/openapi',\n {\n description: 'walkerOS cloud API — OpenAPI 3.1 specification',\n mimeType: 'application/json',\n },\n // The spec is embedded at build time (import above), so it is always\n // available with no runtime module resolution. This serves the client's\n // bundled contract baseline, not the live backend's spec.\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/openapi',\n text: JSON.stringify(openapiSpec, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Packages catalog resource\n server.resource(\n 'packages',\n 'walkeros://reference/packages',\n {\n description:\n 'Complete walkerOS package catalog — all sources, destinations, transformers, and stores',\n mimeType: 'application/json',\n },\n async () => {\n const { entries } = await fetchCatalog({ baseUrl: getPackageBaseUrl() });\n return {\n contents: [\n {\n uri: 'walkeros://reference/packages',\n text: JSON.stringify(entries, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerAddStepPrompt(server: McpServer) {\n server.registerPrompt(\n 'add-step',\n {\n description:\n 'Add a source, destination, transformer, or store step to a flow configuration. ' +\n 'Guides through package selection, config scaffolding, and wiring.',\n argsSchema: {\n stepType: z\n .string()\n .optional()\n .describe(\n 'Type of step to add: source, destination, transformer, or store',\n ),\n flowPath: z\n .string()\n .optional()\n .describe('Path to the flow.json file to modify'),\n },\n },\n async ({ stepType, flowPath }) => ({\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: [\n `Help me add a ${stepType || 'new'} step to my flow${flowPath ? ` at ${flowPath}` : ''}.`,\n '',\n 'Follow these steps:',\n `1. ${stepType ? '' : 'Ask what type of step (source, destination, transformer, store). Then '}Use package_search to browse available packages for the selected type and platform.`,\n '2. Use package_get to read the package\\'s config schema (schemas.config contains the full config shape: base fields like consent/require/logger + package-specific settings). Use section=\"hints\" for additional guidance.',\n '3. Use package_get with section=\"examples\" to see working configuration examples.',\n '4. Scaffold the step config using the package schemas — include required settings with placeholder values.',\n '5. Wire the step into the flow: add to packages section (with version if needed), connect via next/before chains if needed.',\n '6. For destinations: configure mapping using nested entity → action keys. Event \"product add\" maps to `{ \"product\": { \"add\": { name: \"AddToCart\" } } }`. Use the setup-mapping prompt for guidance.',\n '7. For destinations: if consent-gated loading is needed, add require: [\"consent\"] to config. ' +\n 'Note: require delays initialization until a \"walker consent\" event fires. ' +\n 'When simulating with flow_simulate, destinations with require will error \"not found\" — ' +\n 'remove require temporarily or test without it. ' +\n 'For per-event consent filtering, add consent: { marketing: true } to config.',\n '8. Use flow_validate to verify the result.',\n '9. For server sources: check if the package supports `ingest` configuration via package_get. Ingest extracts request metadata (IP, user-agent, headers) using mapping syntax. Transformers like fingerprint depend on ingest data.',\n '10. When adding a transformer that uses ingest fields, verify the source has `ingest` configured — otherwise ingest fields resolve to empty values.',\n '',\n 'Important:',\n '- Read the walkeros://reference/flow-schema resource to understand connection rules.',\n '- Sources connect to pre-collector transformers via `next`.',\n '- Destinations connect to post-collector transformers via `before`.',\n '- Routing supports string IDs, sequences (`[\"a\", \"b\"]`), or RouteConfig (`{ match?, next }` for gated single-target or `{ match?, one: [...] }` for first-match dispatch). Use `many` (instead of `one`) when every matching entry should run as an independent parallel flow — restricted to pre-collector positions. Omit `match` for always-match.',\n '- A transformer entry can be code-bearing (`code`), package-bearing (`package`), or a **pass-through step** (no `code`, no `package`). Pass-through synthesis is automatic at runtime. Three flavors of pass-through: `before`/`next`-only (named hop reusable across destinations), `cache`-only (dedup, rate-limit), or `mapping`-only (declarative event-to-event transform). A pass-through must declare at least one of `before`, `next`, `cache`, or `mapping`.',\n '- The `mapping` field on a transformer step uses the same `Mapping.Config` shape as destinations, but the semantic is event-to-event (mutates the event in place via `policy`, per-rule `policy`, `mapping[].name` for renames, `mapping[].ignore` to drop). Vendor-payload fields (`data`, `silent`) are no-ops at this position.',\n '- Closed schema: unknown top-level keys on a transformer step are errors (catches typos like `dedup` instead of `cache`). `code` + `package` together is a conflict.',\n '- Stores are passive — referenced via `$store.storeName` in env values.',\n '- Use variables ($var) for values that change between environments.',\n '- For required settings without defaults in the package schema, ask the user which value to use. Do not guess credentials, IDs, or environment-specific values.',\n '- If $meta.exports lists named exports, set the `code` field on the step to the chosen export name. If only one export exists, use it automatically.',\n ].join('\\n'),\n },\n },\n ],\n }),\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerSetupMappingPrompt(server: McpServer) {\n server.registerPrompt(\n 'setup-mapping',\n {\n description:\n 'Set up event mapping for any step in a flow. Teaches mapping syntax and uses package examples as templates.',\n argsSchema: {\n stepName: z\n .string()\n .optional()\n .describe('Step name in the flow (e.g., \"gtag\", \"meta\", \"express\")'),\n },\n },\n async ({ stepName }) => ({\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: [\n `Help me set up mapping${stepName ? ` for the \"${stepName}\" step` : ''}.`,\n '',\n 'Follow these steps:',\n '1. Read the walkeros://reference/mapping resource for syntax reference.',\n `2. ${stepName ? `Identify the package for \"${stepName}\" in the flow, then u` : 'U'}se package_get with section=\"examples\" to see the source output shape — mapping keys must match the actual events the source emits.`,\n '3. Ask whether this is source mapping (raw input → walkerOS events) or destination mapping (walkerOS events → vendor format).',\n '4. Ask which events to map (one at a time, not all at once).',\n '5. Generate one mapping rule using the package examples as templates. Validate it with flow_validate before moving to the next.',\n '6. Repeat for each event.',\n '',\n 'Mapping uses nested entity → action keys. Event \"product add\" maps to `{ \"product\": { \"add\": Rule } }`. Wildcards: `{ \"*\": { \"view\": Rule } }`.',\n '',\n 'Extract shared mapping shapes into variables, reference via $var.name (deep paths supported).',\n '',\n 'Policy and consent in mapping:',\n '- config.policy runs BEFORE mapping rules — use it to inject or redact fields on the event.',\n '- rule.policy runs after config.policy but before data transformation — use for event-specific pre-processing.',\n '- config.consent gates ALL events to this destination. rule.consent gates specific event types.',\n '- Individual value configs support consent: { marketing: true } for field-level gating.',\n ].join('\\n'),\n },\n },\n ],\n }),\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerManageContractPrompt(server: McpServer) {\n server.registerPrompt(\n 'manage-contract',\n {\n description:\n 'Create or update event contracts for a flow. Can generate contracts from existing mappings or scaffold mappings from contracts.',\n argsSchema: {\n direction: z\n .string()\n .optional()\n .describe(\n 'Direction: \"from-mappings\" (extract contract from existing mappings), ' +\n '\"from-scratch\" (create new contract), or \"to-mappings\" (scaffold mappings from contract)',\n ),\n },\n },\n async ({ direction }) => ({\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: [\n `Help me ${direction === 'to-mappings' ? 'scaffold mappings from a contract' : direction === 'from-mappings' ? 'generate a contract from existing mappings' : 'manage event contracts'}.`,\n '',\n 'Follow these steps:',\n '1. Read the walkeros://reference/contract resource to understand contract structure.',\n direction === 'from-mappings'\n ? '2. Read all destination mappings in the flow, extract referenced event fields, and generate a contract with those as required properties.'\n : direction === 'to-mappings'\n ? '2. Read the contract from the flow, then scaffold mapping stubs for each destination based on the contract fields.'\n : '2. Ask for entity-action names and required properties, or ask whether to generate from existing mappings.',\n '3. Use entity-action keying with wildcards (*.*, *.action, entity.*) for broad rules.',\n '4. Define JSON Schema for events, globals, context, custom, user, and consent.',\n '5. Use flow_validate to verify the contract.',\n '',\n 'Contracts and mappings are bidirectional:',\n '- **Contract → Mappings**: contract defines what events look like, mappings are scaffolded to match.',\n '- **Mappings → Contract**: existing mappings reveal which fields are used, contract formalizes them.',\n '',\n 'For server flows: if the contract references fields populated by ingest (e.g., user fingerprint hash), verify the source config.ingest extracts the needed request metadata.',\n '',\n 'Use $contract.name references to link contracts in the flow.',\n 'Contracts support extends for inheritance between event types.',\n ].join('\\n'),\n },\n },\n ],\n }),\n );\n}\n","export const SERVER_INSTRUCTIONS = `walkerOS is an open-source, privacy-first event data collection platform. Define event pipelines as code using JSON flow configurations.\n\n## Rules\n\n- **Never guess package names.** Always use \\`package_search\\` first to find exact names, then \\`package_get\\` for details.\n- **Never construct flow configs from memory.** Read \\`walkeros://reference/flow-schema\\` and use \\`package_get\\` for package-specific schemas.\n- **Always validate.** Run \\`flow_validate\\` after every config change. If validation fails, fix and re-validate.\n- **Simulate before deploying.** Use \\`flow_simulate\\` to test with mocked API calls before \\`flow_bundle\\` or \\`flow_push\\`.\n- **When a request fails,** call \\`diagnostics\\` to see which MCP/CLI versions, app URL, and backend you are on, plus whether the app is reachable.\n\n## Workflow\n\n1. \\`auth({ action: \"status\" })\\` — check if logged in, or \\`auth({ action: \"login\" })\\` to connect\n2. \\`project_manage({ action: \"list\" })\\` — see your projects\n3. \\`flow_manage({ action: \"list\" })\\` — see all flows across projects\n4. \\`flow_load({ platform: \"web\" })\\` or \\`flow_load({ source: \"./flow.json\" })\\` — create or load\n5. \\`package_search({ type: \"destination\", platform: \"web\" })\\` — discover packages\n6. \\`package_get({ package: \"...\" })\\` — read schemas, hints, examples\n7. Use the \\`add-step\\` prompt — guided step addition\n8. Use the \\`setup-mapping\\` prompt — event transformation config\n9. \\`flow_validate({ type: \"flow\", input: \"flow.json\" })\\` — verify\n10. \\`flow_simulate({ configPath: \"flow.json\", event: \"...\" })\\` — test\n11. \\`flow_manage({ action: \"update\", flowId: \"...\", content: {...} })\\` — save to cloud\n12. \\`deploy_manage({ action: \"deploy\", flowId: \"...\" })\\` — deploy\n\n## Architecture: Source → Collector → Destination(s)\n\nEvery component in a flow is a **step**: sources capture events, transformers process them, destinations deliver them, stores provide shared state. Steps connect via \\`next\\` (pre-collector) and \\`before\\` (post-collector) chains.\n\n## Flow Config Structure\n\n\\`\\`\\`json\n{\n \"version\": 4,\n \"flows\": {\n \"default\": {\n \"config\": { \"platform\": \"web\" },\n \"sources\": { \"<name>\": { \"package\": \"<npm-package>\", \"config\": {} } },\n \"destinations\": { \"<name>\": { \"package\": \"<npm-package>\", \"config\": { \"settings\": {} } } }\n }\n }\n}\n\\`\\`\\`\n\n- \\`version: 4\\` is required\n- Each flow declares its target via \\`config.platform\\` (\\`\"web\"\\` or \\`\"server\"\\`)\n- Destination settings go inside \\`config.settings\\`, not directly on the destination\n- Event format: \\`{ name: \"entity action\", data: {...}, entity: \"...\", action: \"...\" }\\`\n\n## Key Concepts\n\n- **Mapping** transforms events using data/map/loop/set/condition rules. Same syntax on sources and destinations. Mapping rules use NESTED entity → action keying: event name \"product add\" maps to \\`{ \"product\": { \"add\": Rule } }\\`. Wildcards: \\`{ \"*\": { \"view\": Rule } }\\`.\n- **Contracts** define event schemas using entity-action keying. Can generate FROM mappings or scaffold mappings FROM contracts.\n- **Variables** (\\$var, \\$env, \\$code, \\$store) enable DRY, environment-aware config. Whole-string \\`$var.name\\` references preserve native type (object/array/scalar); inline interpolation requires a scalar. Deep paths via \\`$var.name.deep.path\\`.\n- **Consent** gates destinations, mapping rules, and individual fields. Privacy-first by design.\n- **Routing** wires steps via \\`next\\` (pre-collector) and \\`before\\` (post-collector). A route is a string ID, a sequence (\\`[\"a\", \"b\"]\\`), or a RouteConfig (\\`{ match?, next }\\` or \\`{ match?, one: [...] }\\`). The \\`one\\` operator dispatches first-match against an ordered list of branches. Use \\`many\\` (instead of \\`one\\`) when every matching entry should run as an independent parallel flow — restricted to pre-collector positions. The optional \\`match\\` field is omitted to mean always-match (no wildcard literal).\n- **Pass-through steps** are transformer entries with no \\`code\\` and no \\`package\\`. The runtime synthesizes the push for them automatically. Three flavors share this shape: a \\`before\\` / \\`next\\`-only step (named hop reusable across destinations), a \\`cache\\`-only step (dedup, rate-limit), and a \\`mapping\\`-only step (declarative event-to-event transform). A pass-through must declare at least one of \\`before\\`, \\`next\\`, \\`cache\\`, or \\`mapping\\`.\n- **Mapping at the transformer position** uses the same \\`Mapping.Config\\` shape as destinations, but the semantic is event-to-event: \\`policy\\` and per-rule \\`policy\\`, \\`mapping[].name\\` (rename), \\`mapping[].ignore\\` (drop from chain), \\`consent\\`, and \\`include\\` apply. Vendor-payload fields (\\`data\\`, \\`silent\\`, \\`mapping[].data\\`) are no-ops at this position.\n- **Closed-schema rule on transformer entries:** known keys only. Operative keys are \\`code\\`, \\`package\\`, \\`before\\`, \\`next\\`, \\`cache\\`, \\`mapping\\`. Combined with structural keys (\\`config\\`, \\`env\\`, \\`validate\\`, \\`disabled\\`, \\`id\\`, etc.). Unknown top-level keys on a transformer step are errors (catches typos like \\`dedup: {}\\` instead of nested under \\`cache\\`). \\`code\\` + \\`package\\` together is a conflict.\n- **Cache** memoizes step output on a configured store. Set \\`cache.stop: true\\` to short-circuit the chain on HIT (sources default to stop-on-HIT). Set \\`cache.namespace\\` to prefix keys; omit it to write keys directly. \\`CacheRule.match\\` is optional, omit for always-match.\n\n## Simulation Tips\n\n- Destinations with \\`require: [\"consent\"]\\` stay **pending** until a \\`\"walker consent\"\\` event fires. Simulation will error \"not found\" for pending destinations, remove \\`require\\` from config when testing with \\`flow_simulate\\`.\n- Destinations with \\`consent: { marketing: true }\\` silently skip events that lack matching consent. Include \\`consent\\` in the event: \\`{ name: \"page view\", data: {...}, consent: { marketing: true } }\\`.\n- **Mapping** transforms event names and data at the destination level. Events without a matching mapping rule pass through unmodified.\n- **Policy** modifies the event before mapping runs, use it to inject computed fields or redact sensitive data.\n\n## Reference Resources\n\nRead these before constructing configs manually: \\`walkeros://reference/flow-schema\\`, \\`walkeros://reference/mapping\\`, \\`walkeros://reference/event-model\\`, \\`walkeros://reference/consent\\`, \\`walkeros://reference/variables\\`, \\`walkeros://reference/contract\\`, \\`walkeros://reference/examples\\`.`;\n","import { randomUUID } from 'crypto';\nimport { telemetry } from '@walkeros/cli';\n\n/**\n * Options for the MCP telemetry emitter wrapper.\n *\n * `clientInfo` mirrors the MCP SDK shape negotiated during initialize.\n * When the client doesn't send one, we record the client name as \"unknown\"\n * inside the per-event data so downstream analytics can still bucket the\n * event. The walkerOS source identifier is the package itself (`mcp`), not\n * the client.\n */\nexport interface McpEmitterOptions {\n clientInfo?: { name: string; version: string };\n packageVersion: string;\n}\n\n/**\n * MCP-specific event emitter.\n *\n * Wraps `@walkeros/cli`'s `telemetry.createEmitter` with:\n * - `source.type` fixed to `\"mcp\"`\n * - `source.platform` fixed to `\"server\"`\n * - per-emission `source.tool` for `cmd invoke` events\n * - a fresh session UUID per MCP server instance\n *\n * Surfaces the narrow set of events the MCP server needs to emit.\n */\nexport interface McpEmitter {\n emitStart(): Promise<void>;\n emitInvoke(\n tool: string,\n outcome: 'success' | 'error',\n timingMs: number,\n ): Promise<void>;\n emitError(kind: 'uncaught' | 'unhandledRejection' | 'startup'): Promise<void>;\n}\n\n/**\n * Build an MCP telemetry emitter.\n *\n * All consent, debug, and endpoint resolution is delegated to the CLI's\n * underlying `telemetry.createEmitter`. This wrapper only provides\n * MCP-specific field mapping and event shorthands.\n */\nexport async function createMcpEmitter(\n opts: McpEmitterOptions,\n): Promise<McpEmitter> {\n const clientName = opts.clientInfo?.name || 'unknown';\n const session = randomUUID();\n\n const emitter = await telemetry.createEmitter({\n source: {\n type: 'mcp',\n platform: 'server',\n },\n packageVersion: opts.packageVersion,\n session,\n });\n\n return {\n async emitStart() {\n const ci = telemetry.getCiInfo();\n await emitter.send('mcp start', {\n ...ci,\n client: clientName,\n });\n },\n async emitInvoke(tool, outcome, timingMs) {\n await emitter.send(\n 'cmd invoke',\n { outcome, client: clientName },\n timingMs,\n { tool },\n );\n },\n async emitError(kind) {\n await emitter.send('error throw', { kind });\n },\n };\n}\n","import {\n listProjects,\n getProject,\n createProject,\n updateProject,\n deleteProject,\n setDefaultProject,\n getDefaultProject,\n listAllFlows,\n listFlows,\n getFlow,\n createFlow,\n updateFlow,\n deleteFlow,\n duplicateFlow,\n listPreviews,\n getPreview,\n createPreview,\n deletePreview,\n listSecrets,\n createSecret,\n updateSecret,\n deleteSecret,\n deploy,\n listDeployments,\n getDeploymentBySlug,\n deleteDeployment,\n requestDeviceCode,\n pollForToken,\n whoami,\n resolveToken,\n resolveAppUrl,\n deleteConfig,\n feedback,\n getFeedbackPreference,\n setFeedbackPreference,\n} from '@walkeros/cli';\nimport type {\n DeviceCodeResult,\n PollResult,\n ListFlowsOptions,\n DeployOptions,\n ListDeploymentsOptions,\n ListPreviewsOptions,\n GetPreviewOptions,\n CreatePreviewOptions,\n DeletePreviewOptions,\n ListSecretsOptions,\n CreateSecretOptions,\n UpdateSecretOptions,\n DeleteSecretOptions,\n FeedbackOptions,\n} from '@walkeros/cli';\n\nimport type { ToolClient } from './tool-client.js';\n\n/**\n * Default ToolClient implementation backed by @walkeros/cli. Every method\n * delegates to the CLI's programmatic API, which in turn talks to the\n * walkerOS app over HTTPS via openapi-fetch. Token resolution and the\n * base URL come from the CLI's config file and environment\n * (WALKEROS_TOKEN, WALKEROS_APP_URL), so no constructor args are required.\n */\nexport class HttpToolClient implements ToolClient {\n async listProjects(options?: {\n cursor?: string;\n limit?: number;\n }): Promise<unknown> {\n return listProjects(options);\n }\n async getProject(options: { projectId?: string }): Promise<unknown> {\n return getProject(options);\n }\n async createProject(options: { name: string }): Promise<unknown> {\n return createProject(options);\n }\n async updateProject(options: {\n projectId?: string;\n name: string;\n }): Promise<unknown> {\n return updateProject(options);\n }\n async deleteProject(options: { projectId?: string }): Promise<unknown> {\n return deleteProject(options);\n }\n setDefaultProject(projectId: string): void {\n setDefaultProject(projectId);\n }\n getDefaultProject(): string | null {\n return getDefaultProject();\n }\n\n async listAllFlows(options?: {\n sort?: string;\n order?: 'asc' | 'desc';\n includeDeleted?: boolean;\n cursor?: string;\n limit?: number;\n }): Promise<unknown> {\n return listAllFlows(options as Parameters<typeof listAllFlows>[0]);\n }\n async listFlows(options: ListFlowsOptions): Promise<unknown> {\n return listFlows(options);\n }\n async getFlow(options: {\n flowId: string;\n projectId?: string;\n fields?: string[];\n }): Promise<unknown> {\n return getFlow(options);\n }\n async createFlow(options: {\n name: string;\n content: Record<string, unknown>;\n projectId?: string;\n }): Promise<unknown> {\n return createFlow(options);\n }\n async updateFlow(options: {\n flowId: string;\n projectId?: string;\n name?: string;\n content?: Record<string, unknown>;\n mergePatch?: boolean;\n }): Promise<unknown> {\n return updateFlow(options);\n }\n async deleteFlow(options: {\n flowId: string;\n projectId?: string;\n }): Promise<unknown> {\n return deleteFlow(options);\n }\n async duplicateFlow(options: {\n flowId: string;\n name?: string;\n projectId?: string;\n }): Promise<unknown> {\n return duplicateFlow(options);\n }\n\n async listPreviews(options: ListPreviewsOptions): Promise<unknown> {\n return listPreviews(options);\n }\n async getPreview(options: GetPreviewOptions): Promise<unknown> {\n return getPreview(options);\n }\n async createPreview(options: CreatePreviewOptions): Promise<unknown> {\n return createPreview(options);\n }\n async deletePreview(options: DeletePreviewOptions): Promise<unknown> {\n return deletePreview(options);\n }\n\n async listSecrets(options: ListSecretsOptions): Promise<unknown> {\n return listSecrets(options);\n }\n async createSecret(options: CreateSecretOptions): Promise<unknown> {\n return createSecret(options);\n }\n async updateSecret(options: UpdateSecretOptions): Promise<unknown> {\n return updateSecret(options);\n }\n async deleteSecret(options: DeleteSecretOptions): Promise<unknown> {\n return deleteSecret(options);\n }\n\n async deploy(options: DeployOptions): Promise<unknown> {\n return deploy(options);\n }\n async listDeployments(options: ListDeploymentsOptions): Promise<unknown> {\n return listDeployments(options);\n }\n async getDeploymentBySlug(options: {\n slug: string;\n projectId?: string;\n }): Promise<unknown> {\n return getDeploymentBySlug(options);\n }\n async deleteDeployment(options: {\n slug: string;\n projectId?: string;\n }): Promise<unknown> {\n return deleteDeployment(options);\n }\n\n async requestDeviceCode(): Promise<DeviceCodeResult> {\n return requestDeviceCode();\n }\n async pollForToken(\n deviceCode: string,\n options?: { timeoutMs?: number },\n ): Promise<PollResult> {\n return pollForToken(deviceCode, options);\n }\n async whoami(): Promise<unknown> {\n return whoami();\n }\n resolveToken(): { token: string; source: 'env' | 'config' } | null {\n return resolveToken();\n }\n deleteConfig(): boolean {\n return deleteConfig();\n }\n\n /**\n * Unauthenticated reachability probe of the app's PUBLIC `/api/health`\n * route. Uses a plain `fetch` (no `createApiClient`, which throws when no\n * token is set) so diagnostics works logged-out. Resolves\n * `{ reachable: false }` only on a real network/timeout failure.\n */\n async checkHealth(): Promise<{\n reachable: boolean;\n status?: string;\n version?: string;\n }> {\n try {\n const res = await fetch(`${resolveAppUrl()}/api/health`, {\n signal: AbortSignal.timeout(5000),\n });\n // A non-2xx status still means the app is reachable; only network or\n // timeout errors (the catch below) mark it unreachable.\n const body: unknown = await res.json().catch(() => undefined);\n const result: { reachable: boolean; status?: string; version?: string } =\n { reachable: true };\n if (body && typeof body === 'object') {\n const record = body as Record<string, unknown>;\n if (typeof record.status === 'string') result.status = record.status;\n if (typeof record.version === 'string') result.version = record.version;\n }\n return result;\n } catch {\n return { reachable: false };\n }\n }\n\n async submitFeedback(text: string, options?: FeedbackOptions): Promise<void> {\n await feedback(text, options);\n }\n getFeedbackPreference(): boolean | undefined {\n return getFeedbackPreference();\n }\n setFeedbackPreference(anonymous: boolean): void {\n setFeedbackPreference(anonymous);\n }\n}\n"],"mappings":"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","names":["path","schemas","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","schemas","annotations","mcpResult","mcpError","z","schemas","mcpResult","mcpError","bundle","TITLE","DESCRIPTION","inputSchema","schemas","z","annotations","mcpResult","mcpError","z","schemas","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","schemas","z","annotations","mcpError","mcpResult","z","loadJsonConfig","mcpResult","mcpError","cache","cache","TITLE","DESCRIPTION","inputSchema","z","annotations","loadJsonConfig","mcpResult","mcpError","z","fetchPackage","mcpResult","mcpError","z","mcpResult","fetchPackage","mcpError","z","loadJsonConfig","mcpResult","mcpError","API_ID_PREFIX","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","loadJsonConfig","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","annotations","mcpResult","TITLE","DESCRIPTION","inputSchema","annotations","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","annotations","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","data","safe","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","schemas","schemas","require","z","z","z","resolveAppUrl"]}
|
|
1
|
+
{"version":3,"sources":["../src/stdio.ts","../src/server.ts","../src/tools/validate.ts","../src/schemas/output.ts","../src/tools/bundle.ts","../src/tools/resolve-config-path.ts","../src/tools/simulate.ts","../src/tools/bundle-cache.ts","../src/tools/push.ts","../src/tools/examples.ts","../src/catalog.ts","../src/tools/package.ts","../src/tools/flow-load.ts","../src/types.ts","../src/user-data.ts","../src/tools/project-context.ts","../src/tools/feedback.ts","../src/tools/diagnostics.ts","../../../cli/openapi/spec.json","../src/tools/auth.ts","../src/tools/project-manage.ts","../src/action-requirements.ts","../src/tools/flow-manage.ts","../src/ui-parts.ts","../src/tools/deploy-manage.ts","../src/tools/_resolvers.ts","../src/tools/secret-manage.ts","../src/resources/package-schemas.ts","../src/resources/references.ts","../src/prompts/add-step.ts","../src/prompts/setup-mapping.ts","../src/prompts/manage-contract.ts","../src/instructions.ts","../src/telemetry.ts","../src/http-tool-client.ts"],"sourcesContent":["import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { setClientContext } from '@walkeros/cli';\n\nimport { createWalkerOSMcpServer, getMcpEmitterSingleton } from './server.js';\nimport { HttpToolClient } from './http-tool-client.js';\nimport { createMcpEmitter } from './telemetry.js';\n\ndeclare const __VERSION__: string;\n\nsetClientContext({ type: 'mcp', version: __VERSION__ });\n\n// Hook process-level error channels so we can emit `error throw` before the\n// process tears down. Both handlers look up the emitter lazily: if the MCP\n// handshake never completed, no emitter exists and we silently skip.\n// We don't call process.exit — stdio transport already propagates failures\n// up to the parent client via the JSON-RPC channel.\nprocess.on('uncaughtException', (err) => {\n const emitter = getMcpEmitterSingleton();\n if (emitter) {\n emitter.emitError('uncaught').catch(() => {});\n }\n console.error('Uncaught exception in Flow MCP server:', err);\n});\n\nprocess.on('unhandledRejection', (reason) => {\n const emitter = getMcpEmitterSingleton();\n if (emitter) {\n emitter.emitError('unhandledRejection').catch(() => {});\n }\n console.error('Unhandled rejection in Flow MCP server:', reason);\n});\n\nasync function main() {\n const server = createWalkerOSMcpServer({\n client: new HttpToolClient(),\n version: __VERSION__,\n });\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('walkerOS Flow MCP server running on stdio');\n}\n\nmain().catch(async (error) => {\n // Startup failure — no client handshake happened, so there's no emitter in\n // the module singleton. Build a one-shot emitter with an unknown client so\n // the error is still visible to telemetry.\n try {\n const emitter = await createMcpEmitter({\n clientInfo: undefined,\n packageVersion: __VERSION__,\n });\n await emitter.emitError('startup');\n } catch {\n // swallow — telemetry must never mask the original startup error\n }\n console.error('Failed to start Flow MCP server:', error);\n process.exit(1);\n});\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport type { ToolClient } from './tool-client.js';\nimport { registerFlowValidateTool } from './tools/validate.js';\nimport { registerFlowBundleTool } from './tools/bundle.js';\nimport { registerFlowSimulateTool } from './tools/simulate.js';\nimport { registerFlowPushTool } from './tools/push.js';\nimport { registerFlowExamplesTool } from './tools/examples.js';\nimport {\n registerPackageSearchTool,\n registerGetPackageSchemaTool,\n} from './tools/package.js';\nimport { registerFlowLoadTool } from './tools/flow-load.js';\nimport { registerFeedbackTool } from './tools/feedback.js';\nimport { registerDiagnosticsTool } from './tools/diagnostics.js';\nimport { registerAuthTool } from './tools/auth.js';\nimport { registerProjectManageTool } from './tools/project-manage.js';\nimport { registerFlowManageTool } from './tools/flow-manage.js';\nimport { registerDeployTool } from './tools/deploy-manage.js';\nimport { registerSecretManageTool } from './tools/secret-manage.js';\nimport { registerPackageSchemaResources } from './resources/package-schemas.js';\nimport { registerReferenceResources } from './resources/references.js';\nimport { registerAddStepPrompt } from './prompts/add-step.js';\nimport { registerSetupMappingPrompt } from './prompts/setup-mapping.js';\nimport { registerManageContractPrompt } from './prompts/manage-contract.js';\nimport { SERVER_INSTRUCTIONS } from './instructions.js';\nimport { createMcpEmitter, type McpEmitter } from './telemetry.js';\n\nexport interface Logger {\n debug?(message: string, meta?: Record<string, unknown>): void;\n info?(message: string, meta?: Record<string, unknown>): void;\n warn?(message: string, meta?: Record<string, unknown>): void;\n error?(message: string, meta?: Record<string, unknown>): void;\n}\n\nexport interface CreateServerOptions {\n client: ToolClient;\n logger?: Logger;\n version?: string;\n catalogBaseUrl?: string;\n}\n\n/**\n * Module-scoped singleton emitter, populated once the MCP `initialize`\n * handshake completes and clientInfo is known. The stdio entrypoint reads\n * this to emit process-level `error throw` events from uncaughtException /\n * unhandledRejection hooks, where the Server instance isn't in scope.\n */\nlet currentEmitter: McpEmitter | undefined;\n\nexport function getMcpEmitterSingleton(): McpEmitter | undefined {\n return currentEmitter;\n}\n\n/**\n * Internal: reset for tests that want a clean slate between cases.\n * Not exported from the package.\n */\nexport function __resetMcpEmitterSingletonForTesting(): void {\n currentEmitter = undefined;\n}\n\n/**\n * Minimal shape of a `_registeredTools` entry we rely on for handler\n * wrapping. Typed locally to avoid leaking SDK internals while keeping\n * strict typing on the handler signature.\n */\ntype WrappableRegisteredTool = {\n handler: (...args: unknown[]) => unknown;\n};\n\ntype RegisteredToolsRecord = Record<string, WrappableRegisteredTool>;\n\n/**\n * Wrap every already-registered tool handler with telemetry. The wrapper\n * emits `cmd invoke` with outcome + timing, swallowing any telemetry error\n * so it never surfaces to the tool caller. We look up the emitter lazily at\n * call time so wrapping can happen before the emitter is created.\n */\nfunction wrapRegisteredToolsWithTelemetry(server: McpServer): void {\n const internal = server as unknown as {\n _registeredTools: RegisteredToolsRecord;\n };\n const tools = internal._registeredTools;\n if (!tools) return;\n for (const [toolName, tool] of Object.entries(tools)) {\n const original = tool.handler;\n tool.handler = async (...args: unknown[]): Promise<unknown> => {\n const start = Date.now();\n try {\n const result = await original(...args);\n const emitter = currentEmitter;\n if (emitter) {\n emitter\n .emitInvoke(toolName, 'success', Date.now() - start)\n .catch(() => {});\n }\n return result;\n } catch (err) {\n const emitter = currentEmitter;\n if (emitter) {\n emitter\n .emitInvoke(toolName, 'error', Date.now() - start)\n .catch(() => {});\n }\n throw err;\n }\n };\n }\n}\n\nexport function createWalkerOSMcpServer(opts: CreateServerOptions): McpServer {\n const packageVersion = opts.version ?? '0.0.0';\n const server = new McpServer(\n {\n name: 'walkeros-flow',\n version: packageVersion,\n },\n { instructions: SERVER_INSTRUCTIONS },\n );\n\n registerAuthTool(server, opts.client);\n registerProjectManageTool(server, opts.client);\n registerFlowManageTool(server, opts.client);\n registerDeployTool(server, opts.client);\n registerSecretManageTool(server, opts.client);\n registerFeedbackTool(server, opts.client);\n registerDiagnosticsTool(server, opts.client, packageVersion);\n\n registerFlowValidateTool(server);\n registerFlowBundleTool(server, opts.client);\n registerFlowSimulateTool(server, opts.client);\n registerFlowPushTool(server);\n registerFlowExamplesTool(server);\n registerFlowLoadTool(server, opts.client);\n\n registerPackageSearchTool(server);\n registerGetPackageSchemaTool(server);\n\n registerPackageSchemaResources(server);\n registerReferenceResources(server);\n registerAddStepPrompt(server);\n registerSetupMappingPrompt(server);\n registerManageContractPrompt(server);\n\n wrapRegisteredToolsWithTelemetry(server);\n\n // MCP SDK fires `oninitialized` after the `initialized` notification, which\n // follows a successful `initialize` request. At that point `getClientVersion`\n // returns the negotiated client identity. We create the emitter here and\n // emit `mcp start`, so consent, debug, and endpoint resolution happen lazily\n // at the moment a real client connects.\n const priorOnInitialized = server.server.oninitialized;\n server.server.oninitialized = () => {\n try {\n priorOnInitialized?.();\n } catch {\n // existing handler must not prevent telemetry setup\n }\n const clientInfo = server.server.getClientVersion();\n void createMcpEmitter({\n clientInfo,\n packageVersion,\n })\n .then(async (emitter) => {\n currentEmitter = emitter;\n await emitter.emitStart();\n })\n .catch(() => {\n // telemetry must never break the server; swallow setup/emit errors.\n });\n };\n\n return server;\n}\n","import { validate, loadJsonConfig } from '@walkeros/cli';\nimport type { ValidateResult } from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { ValidateOutputShape } from '../schemas/output.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\n/**\n * Detect deprecated `@walkeros/store-memory` references in a flow.json.\n * Returns one validation error per offending store.\n *\n * MCP-layer concern: `@walkeros/store-memory` was removed and replaced by\n * the built-in cache (`Flow.Store.cache`). Surface a clear migration error\n * so users know what to do.\n */\nconst DEPRECATED_STORE_PACKAGE = '@walkeros/store-memory';\n\nfunction detectDeprecatedStorePackages(\n config: unknown,\n): ValidateResult['errors'] {\n const errors: ValidateResult['errors'] = [];\n if (!config || typeof config !== 'object') return errors;\n const flows = (config as { flows?: unknown }).flows;\n if (!flows || typeof flows !== 'object') return errors;\n for (const [flowName, flowEntry] of Object.entries(\n flows as Record<string, unknown>,\n )) {\n if (!flowEntry || typeof flowEntry !== 'object') continue;\n const stores = (flowEntry as { stores?: unknown }).stores;\n if (!stores || typeof stores !== 'object') continue;\n for (const [storeId, storeEntry] of Object.entries(\n stores as Record<string, unknown>,\n )) {\n if (!storeEntry || typeof storeEntry !== 'object') continue;\n const pkg = (storeEntry as { package?: unknown }).package;\n if (pkg === DEPRECATED_STORE_PACKAGE) {\n errors.push({\n path: `flows.${flowName}.stores.${storeId}`,\n message:\n `Store \"${storeId}\" uses ${DEPRECATED_STORE_PACKAGE}, which has been removed. ` +\n 'Use the built-in cache by omitting cache.store, or remove the store ' +\n 'declaration if it was only used as a cache target.',\n code: 'DEPRECATED_PACKAGE',\n });\n }\n }\n }\n return errors;\n}\n\nconst TITLE = 'Validate Flow';\nconst DESCRIPTION =\n 'Validate walkerOS events, flow configurations, mapping rules, or data contracts. ' +\n 'Accepts JSON strings, file paths, or URLs as input. ' +\n 'Returns validation results with errors, warnings, and details.';\n\nconst inputSchema = schemas.ValidateInputShape;\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createFlowValidateToolSpec(): ToolSpec {\n return {\n name: 'flow_validate',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowValidateHandlerBody(input),\n };\n}\n\nasync function flowValidateHandlerBody(input: unknown) {\n const {\n type,\n input: validateInput,\n flow,\n path,\n } = (input ?? {}) as {\n type: 'contract' | 'event' | 'flow' | 'mapping';\n input: string;\n flow?: string;\n path?: string;\n };\n try {\n const result: ValidateResult = await validate(type, validateInput, {\n flow,\n path,\n });\n\n // Post-validation pass: detect deprecated `@walkeros/store-memory`\n // references in flow configs. MCP-layer concern — keeps core\n // validation package-agnostic.\n let augmented = result;\n if (type === 'flow' && typeof validateInput === 'string') {\n try {\n const config = await loadJsonConfig<unknown>(validateInput);\n const deprecatedErrors = detectDeprecatedStorePackages(config);\n if (deprecatedErrors.length > 0) {\n augmented = {\n ...result,\n valid: false,\n errors: [...result.errors, ...deprecatedErrors],\n };\n }\n } catch {\n // Load failed (invalid JSON, missing file, etc.). The CLI validate\n // call already surfaces that; skip the deprecated-package check.\n }\n }\n\n const hints = augmented.valid\n ? {\n next: [\n 'Use flow_simulate to test event flow',\n 'Use flow_bundle to build',\n ],\n }\n : {\n next: [\n 'Fix errors above, then run flow_validate again',\n 'Read walkeros://reference/flow-schema for correct structure',\n ],\n };\n // Validation `message` and `path` are tool-generated, not echoed user\n // input — both stay literal, never wrapped in <user_data>.\n return mcpResult(augmented, hints);\n } catch (error) {\n return mcpError(\n error,\n 'Check the input parameter — expected a JSON string, file path, or URL',\n );\n }\n}\n\nexport function registerFlowValidateTool(server: McpServer) {\n const spec = createFlowValidateToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: ValidateOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\n\n// CLI tool output shapes\nexport const ValidateOutputShape = {\n valid: z.boolean().describe('Whether validation passed'),\n type: z\n .union([\n z.enum(['contract', 'entry', 'event', 'flow', 'mapping']),\n z.string().regex(/^(destinations|sources|transformers)\\.\\w+$/),\n ])\n .describe('What was validated'),\n errors: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n value: z.unknown().optional(),\n code: z.string().optional(),\n }),\n )\n .describe('Validation errors'),\n warnings: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n suggestion: z.string().optional(),\n }),\n )\n .describe('Validation warnings'),\n details: z\n .record(z.string(), z.unknown())\n .describe('Additional validation details'),\n};\n\nexport const BundleOutputShape = {\n success: z.boolean().describe('Whether bundling succeeded'),\n totalSize: z.number().optional().describe('Total bundle size in bytes'),\n buildTime: z.number().optional().describe('Build time in milliseconds'),\n packages: z\n .array(\n z.object({\n name: z.string(),\n }),\n )\n .optional()\n .describe('Names of packages included in the bundle'),\n treeshakingEffective: z\n .boolean()\n .optional()\n .describe('Whether tree-shaking was effective'),\n message: z.string().optional().describe('Status message'),\n};\n\nexport const SimulateOutputShape = {\n success: z.boolean().describe('Whether simulation succeeded'),\n error: z.string().optional().describe('Error message if failed'),\n summary: z.string().describe('One-line result summary'),\n destinations: z\n .record(\n z.string(),\n z.object({\n received: z\n .boolean()\n .describe('Whether destination received the event'),\n calls: z.number().describe('Number of API calls made'),\n payload: z\n .unknown()\n .optional()\n .describe('All intercepted API calls (only when verbose: true)'),\n }),\n )\n .optional()\n .describe('Per-destination results'),\n capturedEvents: z\n .array(z.record(z.string(), z.unknown()))\n .optional()\n .describe('Events captured by source simulation'),\n duration: z.number().optional().describe('Simulation duration in ms'),\n};\n\nexport const PushOutputShape = {\n success: z.boolean().describe('Whether push succeeded'),\n elbResult: z.unknown().optional().describe('Push result from the collector'),\n duration: z.number().describe('Push duration in milliseconds'),\n error: z.string().optional().describe('Error message if push failed'),\n};\n\n// Examples List output shape\nexport const ExamplesListOutputShape = {\n flow: z.string().describe('Flow name'),\n count: z.number().describe('Number of examples found'),\n examples: z\n .array(\n z.object({\n step: z.string().describe('Step location (e.g., \"destination.gtag\")'),\n stepType: z\n .enum(['source', 'transformer', 'destination'])\n .describe('Step type'),\n stepName: z.string().describe('Step name'),\n exampleName: z.string().describe('Example name'),\n source: z\n .enum(['inline', 'package'])\n .describe(\n 'Where the example came from: \"inline\" (defined in the flow step) or \"package\" (shipped by the referenced package)',\n ),\n title: z.string().optional().describe('Human-readable title if set'),\n description: z\n .string()\n .optional()\n .describe('Short human-readable description'),\n public: z\n .boolean()\n .optional()\n .describe(\n 'Whether the example is public (defaults to true if omitted)',\n ),\n hasIn: z.boolean().describe('Whether the example has an input value'),\n hasOut: z.boolean().describe('Whether the example has an output value'),\n hasMapping: z\n .boolean()\n .describe('Whether the example has a mapping configuration'),\n hasTrigger: z\n .boolean()\n .describe('Whether the example has trigger metadata'),\n in: z.unknown().optional().describe('Input event data'),\n out: z.unknown().optional().describe('Expected output data'),\n mapping: z\n .unknown()\n .optional()\n .describe('Mapping configuration for destinations'),\n trigger: z\n .object({\n type: z.string().optional(),\n options: z.unknown().optional(),\n })\n .optional()\n .describe('Trigger metadata for source simulation'),\n }),\n )\n .describe('Step examples'),\n};\n","import { bundle } from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { BundleOutputShape } from '../schemas/output.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport { resolveConfigPath } from './resolve-config-path.js';\n\nconst TITLE = 'Bundle Flow';\nconst DESCRIPTION =\n 'Bundle a walkerOS flow configuration into deployable JavaScript. ' +\n 'Resolves all destinations, sources, and transformers, then outputs ' +\n 'a tree-shaken production bundle. Returns bundle statistics.';\n\nconst inputSchema = {\n ...schemas.BundleInputShape,\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFlowBundleToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_bundle',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowBundleHandlerBody(client, input),\n };\n}\n\nasync function flowBundleHandlerBody(client: ToolClient, input: unknown) {\n const { configPath, flow, stats, output } = (input ?? {}) as {\n configPath: string;\n flow?: string;\n stats?: boolean;\n output?: string;\n };\n try {\n // Accept a cloud flow/config id as configPath, resolving it to inline JSON.\n const resolvedConfigPath = await resolveConfigPath(client, configPath);\n const result = await bundle(resolvedConfigPath, {\n flowName: flow,\n stats: stats ?? true,\n buildOverrides: output ? { output } : undefined,\n });\n\n if (!result) {\n return mcpResult(\n { success: false, message: 'Bundle produced no output' },\n {\n warnings: [\n 'The build returned no result. The flow may be empty or misconfigured.',\n ],\n next: ['Run flow_validate to check your configuration'],\n },\n );\n }\n\n const output_ = result as unknown as Record<string, unknown>;\n\n return mcpResult(\n { success: true, ...output_ },\n {\n next: [\n 'Use flow_simulate to test',\n 'Use deploy_manage with action \"deploy\" to publish',\n ],\n },\n );\n } catch (error) {\n return mcpError(error, 'Run flow_validate for detailed error messages');\n }\n}\n\nexport function registerFlowBundleTool(server: McpServer, client: ToolClient) {\n const spec = createFlowBundleToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: BundleOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import type { ToolClient } from '../tool-client.js';\n\n/** `flow_` and `cfg_` are reserved walkerOS API id namespaces. A configPath\n * matching either is a cloud flow/config id, resolved via the client rather\n * than treated as a local file path, URL, or inline JSON. */\nconst API_ID_PREFIX = /^(flow|cfg)_/;\n\n/**\n * Resolve a `configPath` for tools that consume it (simulate, bundle). When it\n * is a cloud flow/config id, fetch the flow via the same client seam `flow_load`\n * uses and return its config serialized as JSON (the underlying CLI functions\n * accept inline JSON as `configPath`). Otherwise return the value unchanged so\n * file paths, URLs, and inline JSON pass through as before.\n */\nexport async function resolveConfigPath(\n client: Pick<ToolClient, 'getFlow'>,\n configPath: string,\n): Promise<string> {\n if (!API_ID_PREFIX.test(configPath)) return configPath;\n\n const flow = await client.getFlow({ flowId: configPath });\n const config = (flow as { config?: Record<string, unknown> }).config;\n return JSON.stringify(config ?? {});\n}\n","import { z } from 'zod';\nimport {\n simulateSource,\n simulateTransformer,\n simulateDestination,\n simulateCollector,\n} from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport type { Ingest, Simulation, WalkerOS } from '@walkeros/core';\nimport { SimulateOutputShape } from '../schemas/output.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport { resolveConfigPath } from './resolve-config-path.js';\nimport { getOrBuildBundle } from './bundle-cache.js';\n\ninterface DestinationSummary {\n received: boolean;\n calls: number;\n payload?: unknown;\n}\n\nconst TITLE = 'Simulate Flow';\nconst DESCRIPTION =\n 'Simulate events through a walkerOS flow without making real API calls. ' +\n 'For destinations: event is a walkerOS event { name: \"entity action\", data: {...} }. ' +\n 'For sources: event is { content, trigger?: { type?, options? } }, where content is the ' +\n 'walkerOS event { name: \"entity action\", data: {...} }. ' +\n 'step (required) targets the step to simulate, e.g. \"destination.gtag\". ' +\n 'Use flow_examples to discover available test data. ' +\n 'IMPORTANT: Destinations with require (e.g. require: [\"consent\"]) stay pending until ' +\n 'that collector event fires — simulation will error \"not found\" if require is not satisfied. ' +\n 'Remove require from config or provide consent/user events before simulating. ' +\n 'Separately, destinations with consent (e.g. consent: { marketing: true }) only receive ' +\n 'events where the event includes matching consent. ' +\n 'Mapping transforms event names and data at the destination level. ' +\n 'Policy redacts or injects fields before mapping runs.';\n\nconst inputSchema = {\n configPath: schemas.SimulateInputShape.configPath,\n event: z\n .union([z.record(z.string(), z.unknown()), z.string()])\n .optional()\n .describe(\n 'For destinations: { name, data, consent? }. Include consent (e.g. { marketing: true }) ' +\n 'to satisfy destination consent requirements. ' +\n 'For sources: { content, trigger? } where content is the walkerOS event ' +\n '{ name, data }. ' +\n 'Can also be a JSON string or file path.',\n ),\n flow: schemas.SimulateInputShape.flow,\n platform: schemas.SimulateInputShape.platform,\n // Override the (optional) CLI `step` shape: the simulate handler hard-requires\n // a target step (no all-steps mode), so the registered schema must be honest.\n step: z\n .string()\n .describe(\n 'Required. Target step as \"type.name\" — e.g. \"source.demo\", \"destination.gtag\", \"transformer.router\".',\n ),\n verbose: z\n .boolean()\n .optional()\n .describe('Include full payload per destination (default: false)'),\n ingest: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\n 'Pipeline context a transformer reads via ctx.ingest, e.g. { url } for a ' +\n 'request decoder. Only used for transformer steps.',\n ),\n state: z\n .object({\n consent: z.record(z.string(), z.unknown()).optional(),\n user: z.record(z.string(), z.unknown()).optional(),\n globals: z.record(z.string(), z.unknown()).optional(),\n timing: z.number().optional(),\n })\n .optional()\n .describe(\n 'Collector-state snapshot for collector steps: consent/user/globals/timing. ' +\n 'Seeds the collector before enrichment runs.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createFlowSimulateToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_simulate',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowSimulateHandlerBody(client, input),\n };\n}\n\nasync function flowSimulateHandlerBody(client: ToolClient, input: unknown) {\n const { configPath, event, flow, platform, step, verbose, ingest, state } =\n (input ?? {}) as {\n configPath: string;\n event?: Record<string, unknown> | string;\n flow?: string;\n platform?: 'web' | 'server';\n step?: string;\n verbose?: boolean;\n ingest?: Omit<Ingest, '_meta'>;\n state?: {\n consent?: WalkerOS.Consent;\n user?: WalkerOS.User;\n globals?: WalkerOS.Properties;\n timing?: number;\n };\n };\n try {\n if (!event) {\n throw new Error(\n 'event is required. For sources provide { content, trigger? }, for destinations provide { name, data }.',\n );\n }\n\n if (!step) {\n throw new Error(\n 'step is required. Specify a target like \"source.browser\", \"destination.gtag\", or \"transformer.demo\".',\n );\n }\n\n // Resolve string event input (JSON string)\n let resolvedEvent: unknown = event;\n if (typeof event === 'string') {\n try {\n resolvedEvent = JSON.parse(event);\n } catch {\n throw new Error(\n 'Event string must be valid JSON. Got: ' + event.substring(0, 50),\n );\n }\n }\n\n // Parse step into type and id\n const dotIndex = step.indexOf('.');\n if (dotIndex === -1) {\n throw new Error(\n `Invalid step format \"${step}\". Use \"type.name\" (e.g. \"source.browser\", \"destination.gtag\").`,\n );\n }\n const stepType = step.substring(0, dotIndex);\n const stepId = step.substring(dotIndex + 1);\n\n // Accept a cloud flow/config id as configPath, resolving it to inline JSON.\n const resolvedConfigPath = await resolveConfigPath(client, configPath);\n\n // Reuse a prebuilt bundle across calls with the same resolved config. The\n // simulate fns take their fast `mode: 'prebuilt'` branch when given a\n // bundlePath, skipping the per-call rebuild. On any bundle failure fall back\n // to undefined so the simulate fn rebuilds and surfaces its canonical error.\n let bundlePath: string | undefined;\n try {\n bundlePath = await getOrBuildBundle(resolvedConfigPath);\n } catch {\n bundlePath = undefined;\n }\n\n let result: Simulation.Result;\n\n switch (stepType) {\n case 'source':\n result = await simulateSource(resolvedConfigPath, resolvedEvent, {\n sourceId: stepId,\n bundlePath,\n flow,\n silent: true,\n });\n break;\n\n case 'transformer':\n result = await simulateTransformer(\n resolvedConfigPath,\n resolvedEvent as WalkerOS.DeepPartialEvent,\n {\n transformerId: stepId,\n bundlePath,\n flow,\n silent: true,\n ingest,\n },\n );\n break;\n\n case 'collector':\n result = await simulateCollector(\n resolvedConfigPath,\n resolvedEvent as WalkerOS.DeepPartialEvent,\n {\n collectorName: stepId,\n bundlePath,\n flow,\n silent: true,\n state,\n },\n );\n break;\n\n case 'destination':\n result = await simulateDestination(\n resolvedConfigPath,\n resolvedEvent as WalkerOS.DeepPartialEvent,\n {\n destinationId: stepId,\n bundlePath,\n flow,\n silent: true,\n },\n );\n break;\n\n default:\n throw new Error(\n `Unknown step type \"${stepType}\". Use \"source\", \"collector\", \"transformer\", or \"destination\".`,\n );\n }\n\n const success = !result.error;\n const errorMessage = result.error?.message;\n\n // Source simulation: captured events are result.events\n if (result.step === 'source') {\n const eventCount = result.events.length;\n const summary = `Source captured ${eventCount} event${eventCount !== 1 ? 's' : ''}`;\n\n return mcpResult(\n {\n success,\n error: errorMessage,\n summary,\n capturedEvents: result.events,\n duration: result.duration,\n },\n {\n next:\n eventCount > 0\n ? [\n 'Use flow_simulate with a destination step to test downstream processing',\n ]\n : [\n 'Check source package examples with package_get, verify trigger type matches',\n ],\n },\n );\n }\n\n // Transformer simulation: surface the transformed events\n if (result.step === 'transformer') {\n return mcpResult(\n {\n success,\n error: errorMessage,\n summary: `Transformer processed event`,\n capturedEvents: result.events,\n duration: result.duration,\n },\n {\n next: ['Use flow_bundle to build for production'],\n },\n );\n }\n\n // Collector simulation: surface the enriched event\n if (result.step === 'collector') {\n return mcpResult(\n {\n success,\n error: errorMessage,\n summary: `Collector enriched event`,\n capturedEvents: result.events,\n duration: result.duration,\n },\n {\n next: ['Use flow_simulate with a destination step to test delivery'],\n },\n );\n }\n\n // Destination simulation: count intercepted env calls, key by step name\n const destinations: Record<string, DestinationSummary> = {};\n const callCount = result.calls.length;\n const destSummary: DestinationSummary = {\n received: callCount > 0,\n calls: callCount,\n };\n if (verbose && callCount > 0) {\n destSummary.payload = result.calls;\n }\n destinations[result.name] = destSummary;\n\n const destCount = Object.keys(destinations).length;\n const receivedCount = Object.values(destinations).filter(\n (d) => d.received,\n ).length;\n\n const warnings: string[] = [];\n if (receivedCount === 0) {\n warnings.push(\n 'Destination did not receive the event. Common causes: ' +\n '(1) destination config has consent: { marketing: true } but event lacks matching consent, ' +\n '(2) mapping rules do not match the event name, ' +\n '(3) policy redacted required fields. ' +\n 'Add consent to the event: { name: \"...\", data: {...}, consent: { marketing: true } }.',\n );\n }\n\n const resultObj = {\n success,\n error: errorMessage,\n summary: `${receivedCount}/${destCount} destinations received the event`,\n destinations,\n duration: result.duration,\n };\n\n return mcpResult(resultObj, {\n next: ['Use flow_bundle to build for production'],\n ...(warnings.length > 0 ? { warnings } : {}),\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : '';\n let hint = 'Run flow_validate for detailed error messages';\n if (msg.includes('not found in collector')) {\n hint =\n 'If this destination has require: [\"consent\"] or require: [\"user\"], it stays ' +\n 'pending until that event fires. For simulation, either remove require from ' +\n 'the config or simulate with a flow that omits require on the target destination.';\n }\n return mcpError(error, hint);\n }\n}\n\nexport function registerFlowSimulateTool(\n server: McpServer,\n client: ToolClient,\n) {\n const spec = createFlowSimulateToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: SimulateOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { createHash } from 'node:crypto';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { mkdir, rm, writeFile } from 'node:fs/promises';\nimport { rmSync } from 'node:fs';\nimport { bundle } from '@walkeros/cli';\n\n/**\n * Content-addressed cache of prebuilt simulate bundles for the MCP\n * `flow_simulate` tool. Each `flow_simulate` call otherwise re-bundles the\n * whole flow (`mode: 'build'`), which dominates latency. By keying a prebuilt\n * ESM by the hash of the *resolved* config content, repeated simulations of the\n * same flow reuse one bundle and a changed flow rebuilds.\n *\n * The CLI simulate functions accept a `bundlePath`; passing it takes their\n * `mode: 'prebuilt'` branch and skips the bundle step entirely.\n */\n\ninterface CacheEntry {\n bundlePath: string;\n dir: string;\n}\n\n/** LRU bound: enough to cover a few flows iterated in one session without\n * leaking temp dirs. Oldest entry is evicted (and its dir removed) on insert. */\nconst MAX_ENTRIES = 8;\n\n/** Insertion-ordered map gives us LRU for free: delete+set on access moves the\n * key to the end; the first key is the least-recently used. */\nconst cache = new Map<string, CacheEntry>();\n\n/** In-flight builds, deduped by key so two concurrent identical simulate calls\n * bundle once instead of racing to write the same artifact. */\nconst inFlight = new Map<string, Promise<string>>();\n\nlet cleanupRegistered = false;\n\nfunction hashConfig(resolvedConfig: string): string {\n return createHash('sha256').update(resolvedConfig).digest('hex');\n}\n\n/**\n * Inline JSON config content is cacheable: its full content is the cache key,\n * so an edit always re-keys. A file path or URL is NOT: `resolveConfigPath`\n * returns it unchanged, so the key would be the path string and an edit to the\n * file behind it would silently reuse a stale bundle. Such inputs skip the\n * cache and take the simulate fns' build path (which re-reads the file).\n *\n * The discriminator matches how the CLI simulate fns treat `configPath`: a\n * string that parses as JSON is inline config; anything else is a path/URL.\n */\nfunction isInlineJsonConfig(resolvedConfig: string): boolean {\n const trimmed = resolvedConfig.trimStart();\n if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) return false;\n try {\n JSON.parse(resolvedConfig);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction registerProcessCleanup(): void {\n if (cleanupRegistered) return;\n cleanupRegistered = true;\n const cleanup = () => {\n for (const entry of cache.values()) {\n // Synchronous best-effort removal on exit; async fs is not safe here.\n try {\n rmSync(entry.dir, { recursive: true, force: true });\n } catch {\n // Temp dir already gone or unwritable; nothing to recover.\n }\n }\n cache.clear();\n };\n process.once('exit', cleanup);\n}\n\nasync function evictIfNeeded(): Promise<void> {\n while (cache.size > MAX_ENTRIES) {\n const oldestKey = cache.keys().next().value;\n if (oldestKey === undefined) break;\n const evicted = cache.get(oldestKey);\n cache.delete(oldestKey);\n if (evicted) await rm(evicted.dir, { recursive: true, force: true });\n }\n}\n\n/**\n * Build the resolved config into a prebuilt simulate ESM and return its path,\n * reusing a cached bundle when the same resolved config was bundled before.\n *\n * `resolvedConfig` is the exact string the simulate functions would otherwise\n * receive as `configPath` (inline JSON for cloud ids after id resolution, or a\n * file path / URL / inline JSON otherwise). Keying on it means a cloud id whose\n * underlying content changes between calls rebuilds correctly.\n *\n * Returns `undefined` for file-path / URL configs (see `isInlineJsonConfig`):\n * those bypass the cache so an edited file is never served from a stale bundle.\n * The caller then passes the original configPath with no bundlePath, taking the\n * simulate fns' build path exactly as before.\n *\n * The producer mirrors the CLI build-mode bundle: target `simulate`\n * (skipWrapper + withDev, /dev graph inlined) written as ESM. The flow's own\n * platform is preserved via the bundler's platform defaults; only the output\n * format is pinned to ESM so the CLI can import it directly.\n */\nexport async function getOrBuildBundle(\n resolvedConfig: string,\n): Promise<string | undefined> {\n if (!isInlineJsonConfig(resolvedConfig)) return undefined;\n\n registerProcessCleanup();\n const key = hashConfig(resolvedConfig);\n\n const cached = cache.get(key);\n if (cached) {\n // Refresh LRU position.\n cache.delete(key);\n cache.set(key, cached);\n return cached.bundlePath;\n }\n\n const pending = inFlight.get(key);\n if (pending) return pending;\n\n const build = (async () => {\n const dir = path.join(\n os.tmpdir(),\n `walkeros-mcp-bundle-${key.slice(0, 16)}`,\n );\n await rm(dir, { recursive: true, force: true });\n await mkdir(dir, { recursive: true });\n const bundlePath = path.join(dir, 'flow.mjs');\n\n // Touch the file first so a producer that only mutates (rather than writes)\n // still leaves a real artifact; the bundler overwrites it with the real ESM.\n await writeFile(bundlePath, '', 'utf-8');\n\n // Load-bearing: `bundle()` derives platform from the flow config and\n // intentionally ignores `preset.platform` (the 'simulate' preset is node),\n // so a web flow still bundles browser-platform, equivalent to build-mode.\n // If `bundle()` ever honors `preset.platform`, web simulations via this\n // cache would silently bundle for node and diverge.\n await bundle(resolvedConfig, {\n target: 'simulate',\n silent: true,\n buildOverrides: { output: bundlePath, format: 'esm', minify: false },\n });\n\n cache.set(key, { bundlePath, dir });\n await evictIfNeeded();\n return bundlePath;\n })();\n\n inFlight.set(key, build);\n try {\n return await build;\n } finally {\n inFlight.delete(key);\n }\n}\n\n/** Test-only: clear the cache and remove all temp dirs. */\nexport async function __resetBundleCacheForTests(): Promise<void> {\n inFlight.clear();\n const dirs = Array.from(cache.values(), (e) => e.dir);\n cache.clear();\n await Promise.all(\n dirs.map((dir) => rm(dir, { recursive: true, force: true })),\n );\n}\n","import { z } from 'zod';\nimport { push } from '@walkeros/cli';\nimport type { PushResult } from '@walkeros/cli';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { PushOutputShape } from '../schemas/output.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\nconst TITLE = 'Push Events';\nconst DESCRIPTION =\n 'Push a real event through a walkerOS flow to actual destinations. ' +\n 'Makes real API calls to real endpoints. ' +\n 'Best suited for server-side flows — web flows should use flow_simulate for testing.';\n\nconst inputSchema = {\n configPath: schemas.PushInputShape.configPath,\n event: z\n .record(z.string(), z.unknown())\n .describe(\n 'Event object, e.g. { name: \"page view\", data: { title: \"Home\" } }',\n ),\n flow: schemas.PushInputShape.flow,\n platform: schemas.PushInputShape.platform,\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFlowPushToolSpec(): ToolSpec {\n return {\n name: 'flow_push',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowPushHandlerBody(input),\n };\n}\n\nasync function flowPushHandlerBody(input: unknown) {\n const { configPath, event, flow, platform } = (input ?? {}) as {\n configPath: string;\n event: Record<string, unknown>;\n flow?: string;\n platform?: 'web' | 'server';\n };\n try {\n const result: PushResult = await push(configPath, event, {\n json: true,\n flow,\n platform,\n });\n\n if (!result.success) {\n return mcpError(\n new Error(result.error || 'Push failed'),\n 'Check destination configuration and connectivity.',\n );\n }\n\n return mcpResult(result);\n } catch (error) {\n return mcpError(\n error,\n 'Check configPath and event format. For web flows, use flow_simulate.',\n );\n }\n}\n\nexport function registerFlowPushTool(server: McpServer) {\n const spec = createFlowPushToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: PushOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\nimport { loadJsonConfig } from '@walkeros/cli';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackage, mcpResult, mcpError } from '@walkeros/core';\nimport type { Flow } from '@walkeros/core';\nimport { ExamplesListOutputShape } from '../schemas/output.js';\nimport { getPackageBaseUrl, CLIENT_HEADER } from '../catalog.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\nconst TITLE = 'Flow Examples';\nconst DESCRIPTION =\n 'List all step examples in a walkerOS flow configuration. ' +\n 'Shows example names, step locations, and in/out shapes. ' +\n 'Inline examples on a step take precedence; steps without inline examples ' +\n 'fall back to the examples shipped by their referenced package. ' +\n 'Each result is tagged with its source (\"inline\" or \"package\"). ' +\n 'Use this to discover available test fixtures and simulation data.';\n\nconst inputSchema = {\n configPath: z\n .string()\n .min(1)\n .describe('Path to flow configuration file, URL, or inline JSON string'),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n step: z\n .string()\n .optional()\n .describe('Filter to a specific step (e.g., \"destination.gtag\")'),\n full: z\n .boolean()\n .optional()\n .describe(\n 'Return full in/out/mapping data for each example (default: false, returns metadata only)',\n ),\n includeHidden: z\n .boolean()\n .optional()\n .describe(\n 'Include examples marked public: false (default: false). Set true for test/debug discovery.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createFlowExamplesToolSpec(): ToolSpec {\n return {\n name: 'flow_examples',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowExamplesHandlerBody(input),\n };\n}\n\nasync function flowExamplesHandlerBody(input: unknown) {\n const { configPath, flow, step, full, includeHidden } = (input ?? {}) as {\n configPath: string;\n flow?: string;\n step?: string;\n full?: boolean;\n includeHidden?: boolean;\n };\n try {\n const rawConfig = await loadJsonConfig<Flow.Json>(configPath);\n\n // Resolve flow name\n const flowNames = Object.keys(rawConfig.flows || {});\n const flowName =\n flow || (flowNames.length === 1 ? flowNames[0] : undefined);\n\n if (!flowName) {\n throw new Error(\n `Multiple flows found. Specify flow parameter. Available: ${flowNames.join(', ')}`,\n );\n }\n\n const flowSettings = rawConfig.flows[flowName];\n if (!flowSettings) {\n throw new Error(`Flow \"${flowName}\" not found`);\n }\n\n // Collect all examples\n type ExampleItem = {\n step: string;\n stepType: string;\n stepName: string;\n exampleName: string;\n source: 'inline' | 'package';\n title?: string;\n description?: string;\n public?: boolean;\n hasIn: boolean;\n hasOut: boolean;\n hasMapping: boolean;\n hasTrigger: boolean;\n in?: unknown;\n out?: unknown;\n mapping?: unknown;\n trigger?: unknown;\n };\n const examples: ExampleItem[] = [];\n\n const toItems = (\n stepExamples: Flow.StepExamples,\n type: string,\n name: string,\n source: 'inline' | 'package',\n ): ExampleItem[] => {\n const items: ExampleItem[] = [];\n for (const [exName, ex] of Object.entries(stepExamples)) {\n if (!includeHidden && ex.public === false) continue;\n items.push({\n step: `${type}.${name}`,\n stepType: type,\n stepName: name,\n exampleName: exName,\n source,\n title: ex.title,\n description: ex.description,\n public: ex.public,\n hasIn: ex.in !== undefined,\n hasOut: ex.out !== undefined,\n hasMapping: ex.mapping !== undefined,\n hasTrigger: ex.trigger !== undefined,\n ...(full\n ? {\n in: ex.in,\n out: ex.out,\n mapping: ex.mapping,\n trigger: ex.trigger,\n }\n : {}),\n });\n }\n return items;\n };\n\n // Pull a referenced package's shipped step examples via the same path\n // package_get uses. A failed fetch must not break the whole tool: the\n // step is skipped and inline examples from other steps still return.\n const baseUrl = getPackageBaseUrl();\n const loadPackageExamples = async (\n packageName: string,\n ): Promise<Flow.StepExamples | undefined> => {\n try {\n const info = await fetchPackage(packageName, {\n baseUrl,\n client: CLIENT_HEADER,\n });\n const stepExamples = (info.examples as { step?: unknown } | undefined)\n ?.step;\n if (stepExamples && typeof stepExamples === 'object')\n return stepExamples as Flow.StepExamples;\n } catch {\n // Swallow: graceful fallback skip for this package.\n }\n return undefined;\n };\n\n const stepTypes = [\n { key: 'sources' as const, type: 'source' },\n { key: 'transformers' as const, type: 'transformer' },\n { key: 'destinations' as const, type: 'destination' },\n ];\n\n for (const { key, type } of stepTypes) {\n const refs = flowSettings[key] || {};\n for (const [name, ref] of Object.entries(refs)) {\n // Apply step filter\n if (step && `${type}.${name}` !== step) continue;\n\n // Inline examples take precedence over package-shipped ones.\n if (ref.examples) {\n examples.push(\n ...toItems(ref.examples as Flow.StepExamples, type, name, 'inline'),\n );\n continue;\n }\n\n // No inline examples: fall back to the referenced package's shipped\n // examples (only for refs that actually name a package).\n if (!ref.package) continue;\n const packageExamples = await loadPackageExamples(ref.package);\n if (packageExamples)\n examples.push(...toItems(packageExamples, type, name, 'package'));\n }\n }\n\n const result = {\n flow: flowName,\n count: examples.length,\n examples,\n };\n\n const hints: { next: string[]; warnings?: string[] } = {\n next: ['Use flow_simulate with step and event to simulate'],\n };\n if (examples.length === 0) {\n hints.warnings = [\n 'No examples found. Add examples to step entries, or reference a package that ships examples (see package_get).',\n ];\n }\n return mcpResult(result, hints);\n } catch (error) {\n return mcpError(error, 'Check configPath — expected a flow.json file');\n }\n}\n\nexport function registerFlowExamplesTool(server: McpServer) {\n const spec = createFlowExamplesToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema: ExamplesListOutputShape,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","// __VERSION__ is replaced at build time by tsup's `define` (see tsup.config.ts).\n// In tests, it's set on globalThis (see src/__tests__/support/version.ts).\ndeclare const __VERSION__: string;\n\nconst NPM_SEARCH_URL = 'https://registry.npmjs.org/-/v1/search';\nconst JSDELIVR_BASE = 'https://cdn.jsdelivr.net/npm';\nconst WALKEROS_JSON_PATH = 'dist/walkerOS.json';\nconst CACHE_TTL = 5 * 60 * 1000;\n\nexport const CLIENT_HEADER = 'walkeros-mcp/' + __VERSION__;\n\n/**\n * Resolve the walkerOS app base URL for MCP outbound calls.\n *\n * Env-only by design: the MCP runs in an editor with explicit `.mcp.json`\n * env. No config-file precedence (which is what `@walkeros/cli`'s\n * `resolveAppUrl()` does for the `walkeros` CLI binary). Hard-cut:\n * `APP_URL` is no longer recognized.\n *\n * Lives here (not in tools/package.ts) because both the package tools and the\n * catalog resources need to resolve the same app-primary base URL. This is an\n * in-package helper, not a cross-package registry.\n */\nexport function getPackageBaseUrl(): string | undefined {\n return process.env.WALKEROS_APP_URL || undefined;\n}\n\nexport interface CatalogEntry {\n name: string;\n version: string;\n description?: string;\n type: string;\n platform: string[];\n}\n\nexport interface CatalogResult {\n entries: CatalogEntry[];\n warnings: string[];\n}\n\n/**\n * Provenance of the most recent `fetchCatalog` call. Module-scoped and\n * last-call-wins: the stdio MCP is a single process, so the diagnostics tool\n * reads which source (`app` vs `npm` fallback) served the last catalog fetch,\n * how many entries it produced, and whether any were dropped (partial).\n * `undefined` until the first fetch.\n */\nexport interface LastCatalogFetchInfo {\n source: 'app' | 'npm';\n count: number;\n partial: boolean;\n timestamp: number;\n}\n\nlet lastFetchInfo: LastCatalogFetchInfo | undefined;\n\nexport function getLastCatalogSource(): LastCatalogFetchInfo | undefined {\n return lastFetchInfo;\n}\n\n// Cache keyed by effective source (app baseUrl or 'npm'). The tool reads\n// app-primary and the resources read npm-primary; a shared cache let one\n// source's result leak into the other. Only complete, non-empty results are\n// cached, so a transient empty/partial fetch never freezes for the TTL.\nconst cache = new Map<string, { entries: CatalogEntry[]; timestamp: number }>();\n\nexport function clearCatalogCache() {\n cache.clear();\n}\n\nexport function normalizePlatform(platform?: unknown): string[] {\n if (platform == null) return [];\n if (typeof platform === 'string') {\n return platform === 'universal' ? ['web', 'server'] : [platform];\n }\n if (Array.isArray(platform)) {\n return platform.filter((v): v is string => typeof v === 'string');\n }\n return [];\n}\n\ninterface SourceResult {\n entries: CatalogEntry[];\n complete: boolean;\n // Number of packages the source listed before enrichment, so the caller can\n // compute how many were dropped (listed minus enriched).\n requested: number;\n}\n\nexport async function fetchCatalog(filters?: {\n type?: string;\n platform?: string;\n baseUrl?: string;\n}): Promise<CatalogResult> {\n const sourceKey = filters?.baseUrl ?? 'npm';\n const warnings: string[] = [];\n\n const cached = cache.get(sourceKey);\n if (cached && Date.now() - cached.timestamp < CACHE_TTL) {\n lastFetchInfo = {\n source: filters?.baseUrl ? 'app' : 'npm',\n count: cached.entries.length,\n partial: false,\n timestamp: Date.now(),\n };\n return { entries: applyFilters(cached.entries, filters), warnings };\n }\n\n let result: SourceResult;\n // Which source actually served. Starts as the requested source, flips to\n // 'npm' when an app fetch fails over to the npm fallback.\n let servedBy: 'app' | 'npm' = filters?.baseUrl ? 'app' : 'npm';\n if (filters?.baseUrl) {\n try {\n result = await fetchCatalogFrom(filters.baseUrl, filters);\n } catch {\n warnings.push(\n 'app catalog endpoint unavailable, fell back to npm; results may be incomplete',\n );\n servedBy = 'npm';\n try {\n result = await fetchFromNpm();\n } catch {\n lastFetchInfo = {\n source: 'npm',\n count: 0,\n partial: true,\n timestamp: Date.now(),\n };\n return { entries: [], warnings };\n }\n }\n } else {\n try {\n result = await fetchFromNpm();\n } catch {\n lastFetchInfo = {\n source: 'npm',\n count: 0,\n partial: true,\n timestamp: Date.now(),\n };\n return { entries: [], warnings };\n }\n }\n\n const dropped = result.requested - result.entries.length;\n if (dropped > 0) {\n warnings.push(\n `${dropped} package(s) could not be enriched and were omitted`,\n );\n }\n\n lastFetchInfo = {\n source: servedBy,\n count: result.entries.length,\n partial: !result.complete,\n timestamp: Date.now(),\n };\n\n // Only freeze a complete, non-empty result. Empty or partial fetches must\n // retry on the next call rather than serve a stale shortfall for the TTL.\n if (result.entries.length > 0 && result.complete) {\n cache.set(sourceKey, { entries: result.entries, timestamp: Date.now() });\n }\n\n return { entries: applyFilters(result.entries, filters), warnings };\n}\n\nasync function fetchCatalogFrom(\n baseUrl: string,\n filters?: { type?: string; platform?: string },\n): Promise<SourceResult> {\n const params = new URLSearchParams();\n if (filters?.type) params.set('type', filters.type);\n if (filters?.platform) params.set('platform', filters.platform);\n\n const url = `${baseUrl}/api/packages${params.toString() ? `?${params}` : ''}`;\n const res = await fetch(url, {\n signal: AbortSignal.timeout(15000),\n headers: { 'X-Walkeros-Client': CLIENT_HEADER },\n });\n if (!res.ok) throw new Error(`Catalog fetch failed: ${res.status}`);\n\n const data = (await res.json()) as { catalog: CatalogEntry[] };\n const entries = data.catalog;\n return { entries, complete: entries.length > 0, requested: entries.length };\n}\n\nasync function fetchFromNpm(): Promise<SourceResult> {\n const res = await fetch(`${NPM_SEARCH_URL}?text=@walkeros/&size=250`, {\n signal: AbortSignal.timeout(10000),\n headers: { 'X-Walkeros-Client': CLIENT_HEADER },\n });\n if (!res.ok) throw new Error(`npm search failed: ${res.status}`);\n\n const data = (await res.json()) as {\n objects: Array<{\n package: { name: string; version: string; description?: string };\n }>;\n };\n\n const requested = data.objects.length;\n\n const metaResults = await Promise.allSettled(\n data.objects.map((obj) => enrichWithMeta(obj.package)),\n );\n\n const entries = metaResults\n .filter(\n (r): r is PromiseFulfilledResult<CatalogEntry | undefined> =>\n r.status === 'fulfilled',\n )\n .map((r) => r.value)\n .filter((entry): entry is CatalogEntry => entry !== undefined);\n\n // A non-empty npm list with fewer enriched entries means jsdelivr silently\n // dropped some packages; treat that as incomplete so it is not cached.\n const complete = requested === 0 || entries.length === requested;\n return { entries, complete, requested };\n}\n\nasync function enrichWithMeta(pkg: {\n name: string;\n version: string;\n description?: string;\n}): Promise<CatalogEntry | undefined> {\n try {\n const res = await fetch(\n `${JSDELIVR_BASE}/${pkg.name}@${pkg.version}/${WALKEROS_JSON_PATH}`,\n {\n signal: AbortSignal.timeout(5000),\n headers: { 'X-Walkeros-Client': CLIENT_HEADER },\n },\n );\n if (!res.ok) return undefined;\n\n const json = (await res.json()) as { $meta?: Record<string, unknown> };\n const meta = json.$meta;\n if (!meta || typeof meta.type !== 'string') return undefined;\n\n return {\n name: pkg.name,\n version: pkg.version,\n description: pkg.description,\n type: meta.type,\n platform: normalizePlatform(meta.platform),\n };\n } catch {\n return undefined;\n }\n}\n\nfunction applyFilters(\n entries: CatalogEntry[],\n filters?: { type?: string; platform?: string },\n): CatalogEntry[] {\n let results = entries;\n if (filters?.type) {\n results = results.filter((e) => e.type === filters.type);\n }\n if (filters?.platform) {\n // Empty platform means platform-agnostic → matches any filter\n results = results.filter(\n (e) => e.platform.length === 0 || e.platform.includes(filters.platform!),\n );\n }\n return results;\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackage, mcpResult, mcpError } from '@walkeros/core';\nimport { mergeConfigSchema } from '@walkeros/core/dev';\nimport {\n fetchCatalog,\n normalizePlatform,\n getPackageBaseUrl,\n CLIENT_HEADER,\n} from '../catalog.js';\n\nimport type { ToolSpec } from '../tool-spec.js';\n\n// `getPackageBaseUrl` lives in ../catalog.js because both these tools and the\n// catalog resources resolve the same app-primary base URL. Re-exported here so\n// existing importers of `tools/package.js` keep working.\nexport { getPackageBaseUrl };\n\n// ---------- package_search ----------\n\nconst SEARCH_TITLE = 'Search Package';\nconst SEARCH_DESCRIPTION =\n 'Start here for package discovery. Never guess package names: use this tool first to find exact names. ' +\n 'Without package name: returns catalog filtered by type/platform. ' +\n 'With package name: returns metadata, hint keys, and example summaries.';\n\nconst searchInputSchema = {\n package: z\n .string()\n .min(1)\n .optional()\n .describe(\n 'Exact npm package name for detailed lookup (e.g., @walkeros/web-destination-snowplow)',\n ),\n type: z\n .enum(['source', 'destination', 'transformer', 'store'])\n .optional()\n .describe('Filter by package type (browse mode)'),\n platform: z\n .enum(['web', 'server'])\n .optional()\n .describe('Filter by platform (browse mode, includes universal packages)'),\n version: z\n .string()\n .optional()\n .describe('Package version for detailed lookup (default: latest)'),\n};\n\nconst searchAnnotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n} as const;\n\nexport function createPackageSearchToolSpec(): ToolSpec {\n return {\n name: 'package_search',\n title: SEARCH_TITLE,\n description: SEARCH_DESCRIPTION,\n inputSchema: searchInputSchema,\n annotations: searchAnnotations,\n handler: (input) => packageSearchHandlerBody(input),\n };\n}\n\nasync function packageSearchHandlerBody(input: unknown) {\n const {\n package: packageName,\n type,\n platform,\n version,\n } = (input ?? {}) as {\n package?: string;\n type?: 'source' | 'destination' | 'transformer' | 'store';\n platform?: 'web' | 'server';\n version?: string;\n };\n const baseUrl = getPackageBaseUrl();\n\n // Browse mode: no package specified → return catalog\n if (!packageName) {\n const { entries, warnings } = await fetchCatalog({\n type,\n platform,\n baseUrl,\n });\n const result = { catalog: entries, count: entries.length };\n return mcpResult(result, {\n next: ['Use package_get for schemas and examples'],\n ...(warnings.length > 0 ? { warnings } : {}),\n });\n }\n\n // Lookup mode: fetch specific package details\n try {\n const info = await fetchPackage(packageName, {\n version,\n baseUrl,\n client: CLIENT_HEADER,\n });\n\n const result = {\n package: info.packageName,\n version: info.version,\n description: info.description,\n type: info.type,\n platform: normalizePlatform(info.platform),\n hintKeys: info.hintKeys,\n exampleSummaries: info.exampleSummaries,\n };\n\n return mcpResult(result, {\n next: ['Use package_get for schemas and examples'],\n });\n } catch (error) {\n return mcpError(\n error,\n 'Package not found. Use package_search without parameters to browse available packages.',\n );\n }\n}\n\nexport function registerPackageSearchTool(server: McpServer) {\n const spec = createPackageSearchToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // No outputSchema: browse mode returns {catalog, count}, lookup returns metadata — incompatible shapes\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n\n// ---------- package_get ----------\n\nconst GET_TITLE = 'Get Package';\nconst GET_DESCRIPTION =\n 'Requires exact package name: do not guess names, use package_search first to find them. ' +\n 'Returns schemas + hint texts + example summaries by default (lightweight). ' +\n 'Use section parameter for full content: \"hints\" (with code blocks), \"examples\" (full in/out data), or \"all\".';\n\nconst getInputSchema = {\n package: z\n .string()\n .min(1)\n .describe(\n 'Exact npm package name (e.g., @walkeros/web-destination-snowplow)',\n ),\n version: z.string().optional().describe('Package version (default: latest)'),\n section: z\n .enum(['hints', 'examples', 'all'])\n .optional()\n .describe(\n 'Section to expand with full content. Default: summary view with schemas + hint texts + example descriptions',\n ),\n};\n\nconst getAnnotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n} as const;\n\nexport function createPackageGetToolSpec(): ToolSpec {\n return {\n name: 'package_get',\n title: GET_TITLE,\n description: GET_DESCRIPTION,\n inputSchema: getInputSchema,\n annotations: getAnnotations,\n handler: (input) => packageGetHandlerBody(input),\n };\n}\n\nasync function packageGetHandlerBody(input: unknown) {\n const {\n package: packageName,\n version,\n section,\n } = (input ?? {}) as {\n package: string;\n version?: string;\n section?: 'hints' | 'examples' | 'all';\n };\n const baseUrl = getPackageBaseUrl();\n\n try {\n const info = await fetchPackage(packageName, {\n version,\n baseUrl,\n client: CLIENT_HEADER,\n });\n\n // Build merged schemas: base config + package settings → schemas.config\n const mergedSchemas: Record<string, unknown> = {};\n\n if (info.type) {\n mergedSchemas.config = mergeConfigSchema(\n info.type as 'source' | 'destination' | 'transformer' | 'store',\n info.schemas as Record<string, Record<string, unknown>>,\n );\n }\n\n // Keep non-settings schemas as siblings (mapping, ga4, tagger, etc.)\n for (const [key, value] of Object.entries(info.schemas)) {\n if (key !== 'settings') {\n mergedSchemas[key] = value;\n }\n }\n\n const result: Record<string, unknown> = {\n package: info.packageName,\n version: info.version,\n type: info.type,\n platform: normalizePlatform(info.platform),\n schemas: mergedSchemas,\n };\n\n // Hints\n if (info.hints) {\n if (section === 'hints' || section === 'all') {\n result.hints = info.hints;\n } else {\n const hintSummary: Record<string, { text: string }> = {};\n for (const [key, hint] of Object.entries(info.hints)) {\n const h = hint as { text: string };\n hintSummary[key] = { text: h.text };\n }\n result.hints = hintSummary;\n }\n }\n\n // Examples\n if (section === 'examples' || section === 'all') {\n result.examples = info.examples;\n } else {\n result.exampleSummaries = info.exampleSummaries;\n }\n\n return mcpResult(result);\n } catch (error) {\n return mcpError(\n error,\n 'Use package_search to browse available package names.',\n );\n }\n}\n\nexport function registerGetPackageSchemaTool(server: McpServer) {\n const spec = createPackageGetToolSpec();\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // No outputSchema: removed to avoid SDK -32602 crashes on unexpected field values\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { loadJsonConfig } from '@walkeros/cli';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport { redactNestedStrings, keepStructural } from '../user-data.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n NO_DEFAULT_PROJECT_ERROR,\n resolveDefaultProject,\n} from './project-context.js';\n\n/** `flow_` and `cfg_` are reserved walkerOS API id namespaces. A source\n * matching either is a cloud flow/config id, loaded via the client, not a\n * local file path or URL. */\nconst API_ID_PREFIX = /^(flow|cfg)_/;\n\nconst WEB_SKELETON = {\n version: 4,\n flows: {\n default: {\n config: { platform: 'web', bundle: { packages: {} } },\n sources: {},\n destinations: {},\n },\n },\n};\n\nconst SERVER_SKELETON = {\n version: 4,\n flows: {\n default: {\n config: { platform: 'server', bundle: { packages: {} } },\n sources: {},\n destinations: {},\n },\n },\n};\n\nconst TITLE = 'Load or Create Flow';\nconst DESCRIPTION =\n 'Load an existing flow configuration from a local file path, URL, or walkerOS API (by flow ID). ' +\n 'Or create a new empty flow by specifying a platform (web or server). ' +\n 'Use the add-step prompt to add sources, destinations, transformers, or stores to the flow.';\n\nconst inputSchema = {\n source: z\n .string()\n .optional()\n .describe(\n 'Flow source: local file path (./flow.json), URL (https://...), ' +\n 'inline JSON string, or API flow ID (cfg_...). Omit to create a new flow.',\n ),\n platform: z\n .enum(['web', 'server'])\n .optional()\n .describe(\n 'Platform for new flows. Required when source is omitted. ' +\n 'web = browser tracking, server = Node.js HTTP.',\n ),\n};\n\nconst outputSchema = {\n version: z.number().describe('Flow config version'),\n flows: z.record(z.string(), z.unknown()).describe('Flow entries'),\n};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n} as const;\n\nexport function createFlowLoadToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_load',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowLoadHandlerBody(client, input),\n };\n}\n\nasync function flowLoadHandlerBody(client: ToolClient, input: unknown) {\n const { source, platform } = (input ?? {}) as {\n source?: string;\n platform?: 'web' | 'server';\n };\n\n // Load by cloud flow/config id (flow_… / cfg_…) via the same client seam\n // flow_manage `get` uses. Its NOT_FOUND surfaces directly, never remapped\n // to the local \"file not found\" hint below.\n if (source && API_ID_PREFIX.test(source)) {\n const resolvedProjectId = resolveDefaultProject(client, undefined);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n try {\n const flow = await client.getFlow({\n flowId: source,\n projectId: resolvedProjectId,\n });\n const config = (flow as { config?: Record<string, unknown> }).config;\n return mcpResult(\n redactNestedStrings(config ?? {}, { skip: keepStructural }),\n {\n next: ['Use flow_validate to check', 'Use add-step prompt to modify'],\n },\n );\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n }\n\n try {\n if (source) {\n const config = await loadJsonConfig(source);\n return mcpResult(redactNestedStrings(config, { skip: keepStructural }), {\n next: ['Use flow_validate to check', 'Use add-step prompt to modify'],\n });\n }\n\n if (!platform) {\n return mcpError(\n new Error(\n 'Provide source (file path, URL, or flow ID) to load existing flow, ' +\n 'or platform (web/server) to create a new one.',\n ),\n );\n }\n\n const skeleton = platform === 'web' ? WEB_SKELETON : SERVER_SKELETON;\n return mcpResult(skeleton, {\n next: [\n 'Read walkeros://reference/flow-schema for config structure',\n 'Use add-step prompt to add sources and destinations',\n ],\n });\n } catch (error) {\n const msg = error instanceof Error ? error.message : '';\n if (msg.includes('not found') || msg.includes('ENOENT'))\n return mcpError(error, 'Check configPath — expected a flow.json file');\n return mcpError(error);\n }\n}\n\nexport function registerFlowLoadTool(server: McpServer, client: ToolClient) {\n const spec = createFlowLoadToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n // outputSchema is wire-only; not part of ToolSpec\n outputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","// Shared types for MCP management tools.\n// Keep this file dependency-light: only type-level imports from SDK/core.\n\n/**\n * Discriminated input shape for action-based MCP tools.\n * Example: ActionToolInput<'list', { projectId?: string }>\n */\nexport type ActionToolInput<A extends string, T = Record<string, never>> = {\n action: A;\n} & T;\n\n/**\n * Uniform handler return shape used by all mgmt tools.\n * Matches mcpResult / mcpError from @walkeros/core.\n */\nexport type ToolHandlerResult = {\n content: Array<{ type: 'text'; text: string }>;\n structuredContent: Record<string, unknown>;\n isError?: true;\n};\n\n/**\n * True when the error looks like an authentication/authorization failure\n * from the walkerOS cloud API. Used to decide whether to append the\n * \"Are you logged in?\" hint on caught errors.\n */\nexport function isAuthError(error: unknown): boolean {\n if (!(error instanceof Error)) return false;\n const msg = error.message.toLowerCase();\n if (\n msg.includes('unauthorized') ||\n msg.includes('forbidden') ||\n msg.includes('invalid token') ||\n msg.includes('token expired') ||\n msg.includes('not authenticated')\n ) {\n return true;\n }\n const code = (error as Error & { code?: string }).code;\n if (!code) return false;\n const upperCode = code.toUpperCase();\n return (\n upperCode === 'UNAUTHORIZED' ||\n upperCode === 'FORBIDDEN' ||\n upperCode === '401' ||\n upperCode === '403' ||\n upperCode.startsWith('AUTH_')\n );\n}\n\nexport const AUTH_HINT =\n 'Are you logged in? Use auth(action: \"status\") to check.';\n","/**\n * Wraps a user-writable string in `<user_data>…</user_data>` so the chat\n * assistant treats it as data, never as instructions. Inner `</user_data>`\n * sequences are mangled (`</user_data_>`) so a malicious string can't close\n * the envelope early.\n *\n * Idempotent: a string that is already a well-formed envelope with no inner\n * `</user_data>` is returned unchanged.\n */\nexport function wrapUserData(s: string): string {\n const alreadyWrapped =\n s.startsWith('<user_data>') &&\n s.endsWith('</user_data>') &&\n s.slice(11, -12).indexOf('</user_data>') === -1;\n if (alreadyWrapped) return s;\n const neutralised = s.replace(/<\\/user_data>/g, '</user_data_>');\n return `<user_data>${neutralised}</user_data>`;\n}\n\n/**\n * The single redaction rule for every tool that echoes flow/deployment data\n * back to the chat assistant:\n *\n * wrap only the human-facing display `name`/`flowName` field and deep config\n * VALUES; leave all structural ids/keys literal everywhere.\n *\n * Redaction exists to neutralise user-CONTROLLED string VALUES so an injected\n * `</user_data>` can't escape the envelope. It must NOT touch:\n * - structural keys (ids, slugs, dates, immutable identifiers): the LLM needs\n * to reference them verbatim, and wrapping them breaks get→edit→update\n * round-trips (e.g. wrapping `package`/`platform` corrupts a config the\n * user pushes straight back).\n * - tool-generated text (validation messages, error strings): that text is\n * authored by us, not echoed user input, so it stays literal like `path`.\n *\n * `STRUCTURAL_KEYS` is the union of every key whose value is an id/slug/date/\n * immutable identifier rather than user free-text. Confirmed: none of these key\n * names ever hold a genuine user-authored free-text value — `package`/`platform`\n * are enum/package-name fields, `kind` is a discriminator, the rest are\n * server-generated ids/timestamps.\n */\nexport const STRUCTURAL_KEYS = new Set([\n 'id',\n 'flowId',\n 'projectId',\n 'previewId',\n 'version',\n 'slug',\n 'kind',\n 'createdAt',\n 'updatedAt',\n 'deletedAt',\n 'package',\n 'platform',\n]);\n\n/** Return `true` for keys that must stay literal (ids, slugs, dates, package,\n * platform). Use as the `skip` predicate for {@link redactNestedStrings}. */\nexport const keepStructural = (key: string): boolean =>\n STRUCTURAL_KEYS.has(key);\n\nexport interface RedactOptions {\n /** Return `true` to skip wrapping for a given object key. Only invoked for\n * string values on object entries — not for array elements or scalar\n * roots. Use to keep ids / slugs / dates literal. */\n skip?: (key: string) => boolean;\n}\n\n/**\n * Recursively walks `value` and returns a deep-copied structure where every\n * string leaf has been passed through `wrapUserData`. Pass `skip` to exclude\n * specific keys (e.g. `id`) from wrapping.\n */\nexport function redactNestedStrings<T>(value: T, opts?: RedactOptions): T {\n return walk(value, opts) as T;\n}\n\n/** Human-facing display fields wrapped on echoed flow/deployment summaries even\n * when the rest of the object is left literal. */\nconst DISPLAY_NAME_KEYS = new Set(['name', 'flowName']);\n\n/**\n * Recursively wraps ONLY the human-facing display `name`/`flowName` fields,\n * leaving every other value (ids, slugs, status, type, dates) literal. Use on\n * tool responses that echo deployment/flow summaries where the only\n * user-authored free-text is the display name.\n */\nexport function redactDisplayNames<T>(value: T): T {\n return walkDisplay(value) as T;\n}\n\nfunction walkDisplay(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(walkDisplay);\n if (value && typeof value === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n if (DISPLAY_NAME_KEYS.has(k) && typeof v === 'string') {\n out[k] = wrapUserData(v);\n } else {\n out[k] = walkDisplay(v);\n }\n }\n return out;\n }\n return value;\n}\n\nfunction walk(value: unknown, opts?: RedactOptions): unknown {\n if (typeof value === 'string') return wrapUserData(value);\n if (Array.isArray(value)) return value.map((v) => walk(v, opts));\n if (value && typeof value === 'object') {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value)) {\n if (opts?.skip?.(k) && typeof v === 'string') {\n out[k] = v;\n } else {\n out[k] = walk(v, opts);\n }\n }\n return out;\n }\n return value;\n}\n","import type { ToolClient } from '../tool-client.js';\n\nexport const NO_DEFAULT_PROJECT_ERROR =\n 'No default project set and no projectId provided. Run project_manage action \"set_default\", or pass projectId.';\n\n/** Resolves the project for actions that fall back to the CLI default when\n * `projectId` is omitted. Returns the resolved id, or undefined when there is\n * no default to fall back to (the no-project-at-all case). An explicit\n * `projectId` is always honoured as-is so the app's genuine NOT_FOUND still\n * surfaces for an explicit-but-wrong id. */\nexport function resolveDefaultProject(\n client: ToolClient,\n projectId: string | undefined,\n): string | undefined {\n return projectId ?? client.getDefaultProject() ?? undefined;\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\n\ndeclare const __VERSION__: string;\n\nconst TITLE = 'Send Feedback';\nconst DESCRIPTION = 'Send feedback about walkerOS';\n\nconst inputSchema = {\n text: z.string().describe('Your feedback text'),\n anonymous: z\n .boolean()\n .optional()\n .describe(\n 'Include user/project info? false = include, true = anonymous. Only needed on first call if not yet configured.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFeedbackToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'feedback',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => feedbackHandlerBody(client, input),\n };\n}\n\nasync function feedbackHandlerBody(client: ToolClient, input: unknown) {\n const { text, anonymous: explicitAnonymous } = (input ?? {}) as {\n text: string;\n anonymous?: boolean;\n };\n try {\n let anonymous = client.getFeedbackPreference();\n\n if (anonymous === undefined && explicitAnonymous === undefined) {\n return mcpResult(\n { needsConsent: true },\n {\n next: [\n 'Ask the user if they want to include their info',\n 'Call feedback again with anonymous: true or false',\n ],\n },\n );\n }\n\n if (anonymous === undefined && explicitAnonymous !== undefined) {\n anonymous = explicitAnonymous;\n client.setFeedbackPreference(anonymous);\n }\n\n const isAnonymous = explicitAnonymous ?? anonymous ?? true;\n\n await client.submitFeedback(text, {\n anonymous: isAnonymous,\n version: __VERSION__,\n });\n\n return mcpResult({ ok: true });\n } catch (error) {\n return mcpError(error);\n }\n}\n\nexport function registerFeedbackTool(server: McpServer, client: ToolClient) {\n const spec = createFeedbackToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult } from '@walkeros/core';\nimport {\n VERSION as CLI_VERSION,\n resolveAppUrl,\n compareContract,\n} from '@walkeros/cli';\nimport type { ContractComparison } from '@walkeros/cli';\nimport openapiSpec from '@walkeros/cli/openapi/spec.json';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport { getPackageBaseUrl, getLastCatalogSource } from '../catalog.js';\n\n// The bundled OpenAPI contract version, embedded at build time via the import\n// above (no runtime module resolution). This is the client's bundled baseline,\n// not the live backend's spec.\nconst CONTRACT_OPENAPI_VERSION: string = openapiSpec.info.version;\n\nconst TITLE = 'Diagnostics';\nconst DESCRIPTION =\n 'Report the MCP runtime surface: MCP and CLI versions, the resolved app URL ' +\n 'and its source, app /api/health reachability, the bundled OpenAPI contract ' +\n 'version, and which source served the last package catalog fetch. ' +\n 'Read-only and callable when logged out; use it when a request fails to see ' +\n 'which versions and backend you are on.';\n\n// No input fields: diagnostics is callable with `{}`, including logged out.\nconst inputSchema = {};\n\nconst annotations = {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n} as const;\n\nexport function createDiagnosticsToolSpec(\n client: ToolClient,\n packageVersion: string,\n): ToolSpec {\n return {\n name: 'diagnostics',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: () => diagnosticsHandlerBody(client, packageVersion),\n };\n}\n\nasync function diagnosticsHandlerBody(\n client: ToolClient,\n packageVersion: string,\n) {\n // Provenance via the same helper the catalog uses; do not add a parallel\n // process.env check.\n const appUrlSource: 'env' | 'default' = getPackageBaseUrl()\n ? 'env'\n : 'default';\n const resolved = resolveAppUrl();\n\n // checkHealth is optional on ToolClient: clients that cannot probe\n // reachability omit it, in which case diagnostics degrades to\n // { reachable: false }. When present, its contract is to resolve\n // { reachable: false } on failure, but catch here too so a throwing client\n // never breaks diagnostics.\n const health: { reachable: boolean; status?: string } = client.checkHealth\n ? await client.checkHealth().catch(() => ({ reachable: false }))\n : { reachable: false };\n const healthUnavailable = !client.checkHealth;\n\n // Contract drift verdict: compare the client's baked baseline against the\n // live app's /api/health. Degrade to 'unknown' if the probe throws so a\n // network blip never breaks diagnostics.\n const contractComparison: ContractComparison = await compareContract().catch(\n () => ({\n verdict: 'unknown' as const,\n bakedVersion: CONTRACT_OPENAPI_VERSION,\n }),\n );\n\n const catalogInfo = getLastCatalogSource();\n\n const warnings: string[] = [];\n if (appUrlSource === 'default') {\n warnings.push(\n 'WALKEROS_APP_URL is not set; using the default app URL. Set it to target a specific backend.',\n );\n }\n if (healthUnavailable) {\n warnings.push(\n 'health check is unavailable on this client; app reachability is reported as false.',\n );\n } else if (!health.reachable) {\n warnings.push(\n `app /api/health is unreachable at ${resolved}; check the URL, network, and that the app is running.`,\n );\n }\n if (\n contractComparison.verdict === 'client-older' &&\n contractComparison.action\n ) {\n warnings.push(\n `client contract is behind the server: ${contractComparison.action}.`,\n );\n }\n\n const result = {\n mcp: { version: packageVersion },\n cli: { version: CLI_VERSION },\n appUrl: { resolved, source: appUrlSource },\n // app.version is intentionally omitted: the CLI's generated HealthResponse\n // is { status } only, so it is not a typed field here.\n app: {\n reachable: health.reachable,\n ...(health.status !== undefined && { status: health.status }),\n },\n contract: {\n openapiVersion: CONTRACT_OPENAPI_VERSION,\n verdict: contractComparison.verdict,\n ...(contractComparison.action !== undefined && {\n action: contractComparison.action,\n }),\n },\n catalog: catalogInfo\n ? {\n lastSource: catalogInfo.source,\n lastCount: catalogInfo.count,\n partial: catalogInfo.partial,\n }\n : { lastSource: undefined, lastCount: undefined, partial: undefined },\n };\n\n return mcpResult(result, warnings.length > 0 ? { warnings } : undefined);\n}\n\nexport function registerDiagnosticsTool(\n server: McpServer,\n client: ToolClient,\n packageVersion: string,\n) {\n const spec = createDiagnosticsToolSpec(client, packageVersion);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","{\n \"openapi\": \"3.1.0\",\n \"info\": {\n \"title\": \"walkerOS Tag Manager API\",\n \"version\": \"2.0.0\",\n \"description\": \"API for managing walkerOS flows, projects, and real-time event observation.\",\n \"contact\": {\n \"name\": \"elbwalker\",\n \"url\": \"https://www.elbwalker.com\"\n }\n },\n \"servers\": [\n {\n \"url\": \"/\",\n \"description\": \"Current server\"\n }\n ],\n \"tags\": [\n {\n \"name\": \"Auth\",\n \"description\": \"Authentication (magic link, session, identity)\"\n },\n {\n \"name\": \"Projects\",\n \"description\": \"Project management and membership\"\n },\n {\n \"name\": \"Flows\",\n \"description\": \"Flow CRUD (project-scoped)\"\n },\n {\n \"name\": \"Versions\",\n \"description\": \"Flow version history\"\n },\n {\n \"name\": \"Deployments\",\n \"description\": \"Flow deployment management\"\n },\n {\n \"name\": \"Settings\",\n \"description\": \"Per-settings management (named flows within a Config)\"\n },\n {\n \"name\": \"Tokens\",\n \"description\": \"API token management\"\n },\n {\n \"name\": \"Service Accounts\",\n \"description\": \"Project service accounts and their tokens\"\n },\n {\n \"name\": \"Invitations\",\n \"description\": \"Project membership invitations\"\n },\n {\n \"name\": \"Billing\",\n \"description\": \"Project billing details\"\n },\n {\n \"name\": \"Bundle\",\n \"description\": \"Flow bundling utility\"\n },\n {\n \"name\": \"Observe\",\n \"description\": \"Real-time event observation\"\n },\n {\n \"name\": \"Chat\",\n \"description\": \"AI chat sessions and elicitation\"\n },\n {\n \"name\": \"Telemetry\",\n \"description\": \"Anonymous CLI/MCP usage telemetry\"\n },\n {\n \"name\": \"System\",\n \"description\": \"Health and documentation\"\n },\n {\n \"name\": \"Observer\",\n \"description\": \"Observer service (Fastify, port 3001)\"\n },\n {\n \"name\": \"Feedback\",\n \"description\": \"Public feedback submission (CLI, MCP, in-app)\"\n }\n ],\n \"components\": {\n \"schemas\": {\n \"ErrorResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"error\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\",\n \"example\": \"VALIDATION_ERROR\"\n },\n \"message\": {\n \"type\": \"string\",\n \"example\": \"Validation failed\"\n },\n \"details\": {\n \"type\": \"object\",\n \"properties\": {\n \"field\": {\n \"type\": \"string\"\n },\n \"reason\": {\n \"type\": \"string\"\n },\n \"errors\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"path\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"path\", \"message\"]\n }\n }\n },\n \"additionalProperties\": {}\n }\n },\n \"required\": [\"code\", \"message\"]\n }\n },\n \"required\": [\"error\"]\n },\n \"ClientOutdatedError\": {\n \"type\": \"object\",\n \"properties\": {\n \"error\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\",\n \"enum\": [\"CLIENT_OUTDATED\"]\n },\n \"message\": {\n \"type\": \"string\",\n \"example\": \"This endpoint requires @walkeros/cli >= 3.5.0 (you are on 3.3.1).\"\n },\n \"minVersion\": {\n \"type\": \"string\",\n \"example\": \"3.5.0\"\n },\n \"clientVersion\": {\n \"type\": \"string\",\n \"example\": \"3.3.1\"\n },\n \"client\": {\n \"type\": \"string\",\n \"example\": \"cli\"\n },\n \"upgrade\": {\n \"type\": \"string\",\n \"example\": \"npm install -g @walkeros/cli@latest\"\n },\n \"docs\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"example\": \"https://walkeros.io/docs/upgrading\"\n }\n },\n \"required\": [\n \"code\",\n \"message\",\n \"minVersion\",\n \"clientVersion\",\n \"client\",\n \"upgrade\",\n \"docs\"\n ]\n }\n },\n \"required\": [\"error\"]\n },\n \"FlowConfig\": {\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"number\",\n \"enum\": [4]\n },\n \"$schema\": {\n \"type\": \"string\"\n },\n \"include\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"variables\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"flows\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"contract\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n },\n \"required\": [\"version\"],\n \"additionalProperties\": {}\n },\n \"Flow\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsSummary\"\n }\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"deletedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"config\", \"createdAt\", \"updatedAt\"]\n },\n \"FlowSettingsSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"platform\", \"createdAt\", \"updatedAt\"]\n },\n \"FlowSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"summary\": {\n \"type\": \"string\"\n },\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsListItem\"\n }\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"deletedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"createdAt\", \"updatedAt\", \"deletedAt\"]\n },\n \"FlowSettingsListItem\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"serving\": {\n \"$ref\": \"#/components/schemas/ServingStatus\"\n },\n \"latestAttempt\": {\n \"$ref\": \"#/components/schemas/LatestAttemptStatus\"\n },\n \"deploymentUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"deployedAt\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"platform\",\n \"serving\",\n \"latestAttempt\",\n \"deploymentUrl\",\n \"deployedAt\"\n ]\n },\n \"ServingStatus\": {\n \"type\": \"string\",\n \"enum\": [\"live\", \"none\"]\n },\n \"LatestAttemptStatus\": {\n \"type\": [\"string\", \"null\"],\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\",\n null\n ]\n },\n \"Version\": {\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdBy\": {\n \"type\": \"string\",\n \"enum\": [\"user\", \"auto_save\", \"restore\"],\n \"example\": \"user\"\n },\n \"contentHash\": {\n \"type\": \"string\",\n \"example\": \"sha256:abc123...\"\n }\n },\n \"required\": [\"version\", \"createdAt\", \"createdBy\"]\n },\n \"Project\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\",\n \"example\": \"My Website\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"],\n \"example\": \"owner\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"memberCount\": {\n \"type\": \"integer\",\n \"example\": 3\n },\n \"flowCount\": {\n \"type\": \"integer\",\n \"example\": 5\n },\n \"deploymentCount\": {\n \"type\": \"integer\",\n \"example\": 2\n },\n \"isDemo\": {\n \"type\": \"boolean\",\n \"example\": false\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"role\",\n \"createdAt\",\n \"updatedAt\",\n \"memberCount\",\n \"flowCount\",\n \"deploymentCount\",\n \"isDemo\"\n ]\n },\n \"Member\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"userId\", \"email\", \"role\", \"createdAt\"]\n },\n \"DeleteAccountRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"confirm\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"example\": \"me@example.com\"\n }\n },\n \"required\": [\"confirm\"]\n },\n \"DeleteAccountBlocked\": {\n \"type\": \"object\",\n \"properties\": {\n \"error\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\",\n \"enum\": [\"SOLE_OWNER\"],\n \"example\": \"SOLE_OWNER\"\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"details\": {\n \"type\": \"object\",\n \"properties\": {\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\"proj_abc123\"]\n }\n },\n \"required\": [\"projects\"]\n }\n },\n \"required\": [\"code\", \"message\", \"details\"]\n }\n },\n \"required\": [\"error\"]\n },\n \"AccountExportResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"exportedAt\": {\n \"type\": \"string\",\n \"example\": \"2026-06-10T12:00:00.000Z\"\n },\n \"profile\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"example\": \"user_a1b2c3d4\"\n },\n \"email\": {\n \"type\": \"string\",\n \"example\": \"me@example.com\"\n },\n \"displayName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\"\n },\n \"lastLoginAt\": {\n \"type\": [\"string\", \"null\"]\n },\n \"globalRole\": {\n \"type\": \"string\",\n \"example\": \"user\"\n },\n \"traits\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"id\",\n \"email\",\n \"displayName\",\n \"createdAt\",\n \"lastLoginAt\",\n \"globalRole\",\n \"traits\"\n ]\n },\n \"memberships\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\"\n },\n \"projectName\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"joinedAt\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"projectId\", \"projectName\", \"role\", \"joinedAt\"]\n }\n },\n \"apiTokens\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"]\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"]\n },\n \"revokedAt\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"projectId\",\n \"origin\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\",\n \"revokedAt\"\n ]\n }\n },\n \"sessions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": \"string\"\n },\n \"lastTouchedAt\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"id\", \"createdAt\", \"expiresAt\", \"lastTouchedAt\"]\n }\n },\n \"mcpTokens\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"]\n },\n \"expiresAt\": {\n \"type\": \"string\"\n },\n \"revokedAt\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\",\n \"revokedAt\"\n ]\n }\n },\n \"mcpSessions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\"\n },\n \"lastActiveAt\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": \"string\"\n },\n \"messages\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"seq\": {\n \"type\": \"number\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"content\": {},\n \"createdAt\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"seq\", \"role\", \"createdAt\"]\n }\n }\n },\n \"required\": [\n \"id\",\n \"projectId\",\n \"createdAt\",\n \"lastActiveAt\",\n \"expiresAt\",\n \"messages\"\n ]\n }\n },\n \"feedback\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"id\", \"projectId\", \"text\", \"source\", \"createdAt\"]\n }\n },\n \"invitations\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"invitedEmail\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": \"string\"\n },\n \"acceptedAt\": {\n \"type\": [\"string\", \"null\"]\n },\n \"declinedAt\": {\n \"type\": [\"string\", \"null\"]\n },\n \"cancelledAt\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"id\",\n \"projectId\",\n \"invitedEmail\",\n \"role\",\n \"status\",\n \"createdAt\",\n \"expiresAt\",\n \"acceptedAt\",\n \"declinedAt\",\n \"cancelledAt\"\n ]\n }\n }\n },\n \"required\": [\n \"exportedAt\",\n \"profile\",\n \"memberships\",\n \"apiTokens\",\n \"sessions\",\n \"mcpTokens\",\n \"mcpSessions\",\n \"feedback\",\n \"invitations\"\n ]\n },\n \"ApiTokenSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"example\": \"tok_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"example\": \"CI Pipeline\"\n },\n \"prefix\": {\n \"type\": \"string\",\n \"example\": \"sk-walkeros-abcd\"\n },\n \"origin\": {\n \"type\": \"string\",\n \"example\": \"manual\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"],\n \"example\": null\n },\n \"scopes\": {\n \"type\": [\"array\", \"null\"],\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": null\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"revokedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"prefix\",\n \"origin\",\n \"projectId\",\n \"scopes\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\",\n \"revokedAt\"\n ]\n },\n \"FlowSettingsDetail\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"config\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"deployment\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"status\", \"type\", \"createdAt\", \"updatedAt\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"platform\",\n \"config\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"DeploySettingsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"settingsId\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"status\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"deploymentId\", \"settingsId\", \"status\"]\n },\n \"FlowDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsEnriched\"\n }\n },\n \"bundleId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"deletedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"config\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\"\n ]\n },\n \"FlowSettingsEnriched\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"deployment\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"slug\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"id\",\n \"slug\",\n \"status\",\n \"type\",\n \"target\",\n \"containerUrl\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"serving\": {\n \"$ref\": \"#/components/schemas/ServingStatus\"\n },\n \"latestAttempt\": {\n \"$ref\": \"#/components/schemas/LatestAttemptStatus\"\n },\n \"deployedAt\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"platform\",\n \"deployment\",\n \"serving\",\n \"latestAttempt\",\n \"deployedAt\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"FlowUpdateResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"config\", \"createdAt\", \"updatedAt\"]\n },\n \"CreateProjectResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"createdAt\"]\n },\n \"UpdateProjectResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"updatedAt\"]\n },\n \"DeploymentSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"serving\": {\n \"$ref\": \"#/components/schemas/ServingStatus\"\n },\n \"currentVersionNumber\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0\n },\n \"url\": {\n \"type\": [\"string\", \"null\"]\n },\n \"flowId\": {\n \"type\": [\"string\", \"null\"],\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"flowName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"usageSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventsIn24h\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"healthy\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"eventsIn24h\", \"healthy\"]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"serving\",\n \"currentVersionNumber\",\n \"url\",\n \"flowId\",\n \"flowName\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"DeploymentDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"currentVersion\": {\n \"$ref\": \"#/components/schemas/DeploymentVersionDetail\"\n },\n \"versions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/DeploymentVersionHistoryEntry\"\n }\n },\n \"error\": {\n \"$ref\": \"#/components/schemas/DeploymentError\"\n },\n \"url\": {\n \"type\": [\"string\", \"null\"]\n },\n \"selfHosted\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"lastHeartbeatAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"instanceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"cliVersion\": {\n \"type\": [\"string\", \"null\"]\n },\n \"healthy\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"lastHeartbeatAt\",\n \"instanceId\",\n \"cliVersion\",\n \"healthy\"\n ]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"currentVersion\",\n \"versions\",\n \"error\",\n \"url\",\n \"selfHosted\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"DeploymentVersionDetail\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"number\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"configHash\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorCode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"publishedBy\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"number\",\n \"status\",\n \"source\",\n \"errorMessage\",\n \"errorCode\",\n \"publishedAt\",\n \"publishedBy\"\n ]\n },\n \"DeploymentVersionHistoryEntry\": {\n \"type\": \"object\",\n \"properties\": {\n \"versionNumber\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\"\n },\n \"errorCode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorPhase\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorDetail\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"versionNumber\",\n \"status\",\n \"source\",\n \"errorCode\",\n \"errorMessage\",\n \"errorPhase\",\n \"publishedAt\"\n ]\n },\n \"DeploymentError\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"code\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"type\": \"string\",\n \"enum\": [\"preflight\", \"deploy\", \"bundle\", \"publish\", \"provision\"],\n \"example\": \"bundle\"\n },\n \"detail\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"code\", \"message\", \"phase\"]\n },\n \"CreateDeploymentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"serving\": {\n \"$ref\": \"#/components/schemas/ServingStatus\"\n },\n \"currentVersionNumber\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0\n },\n \"url\": {\n \"type\": [\"string\", \"null\"]\n },\n \"flowId\": {\n \"type\": [\"string\", \"null\"],\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"flowName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"usageSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventsIn24h\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"healthy\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"eventsIn24h\", \"healthy\"]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"serving\",\n \"currentVersionNumber\",\n \"url\",\n \"flowId\",\n \"flowName\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"StartDeploymentResponse\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"deploymentId\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"deploying\"]\n },\n \"settingsId\": {\n \"type\": \"string\"\n },\n \"versionId\": {\n \"type\": \"string\"\n },\n \"versionNumber\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n }\n },\n \"required\": [\n \"deploymentId\",\n \"slug\",\n \"target\",\n \"type\",\n \"status\",\n \"versionId\",\n \"versionNumber\"\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"already_created\"]\n }\n },\n \"required\": [\"deploymentId\", \"status\"]\n }\n ]\n },\n \"DeploymentStreamStatusEvent\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"string\"\n },\n \"substatus\": {\n \"type\": [\"string\", \"null\"]\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorCode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"status\",\n \"substatus\",\n \"type\",\n \"target\",\n \"containerUrl\",\n \"errorCode\",\n \"errorMessage\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"ListDeploymentsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deployments\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/DeploymentSummary\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nextCursor\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\"deployments\", \"total\", \"limit\", \"offset\", \"nextCursor\"]\n },\n \"UpdateDeploymentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-z0-9]{12}$\",\n \"example\": \"k7m2x9p4q1w8\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"label\": {\n \"type\": [\"string\", \"null\"]\n },\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"],\n \"example\": \"cloud\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ],\n \"example\": \"active\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"slug\",\n \"target\",\n \"label\",\n \"origin\",\n \"status\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"LatestDeploymentsByFlow\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"slug\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"target\": {\n \"type\": [\"string\", \"null\"]\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"slug\",\n \"type\",\n \"status\",\n \"target\",\n \"containerUrl\",\n \"createdAt\"\n ]\n }\n },\n \"PublishVersionResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"versionNumber\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"versionId\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"deploying\"]\n },\n \"source\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"flow\"]\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\", \"flowId\", \"flowSettingsName\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"config\"]\n }\n },\n \"required\": [\"type\"]\n }\n ]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"versionNumber\",\n \"versionId\",\n \"deploymentId\",\n \"status\",\n \"source\",\n \"createdAt\"\n ]\n },\n \"ListDeploymentVersionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"versions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"number\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"configHash\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorCode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"bundlePath\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"publishedBy\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"number\",\n \"status\",\n \"source\",\n \"errorMessage\",\n \"errorCode\",\n \"bundlePath\",\n \"publishedAt\",\n \"publishedBy\"\n ]\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"versions\", \"total\", \"limit\", \"offset\"]\n },\n \"HeartbeatResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ack\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"pattern\": \"^dep_[a-zA-Z0-9_-]+$\",\n \"example\": \"dep_a1b2c3d4\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"none\", \"stop\", \"update\"]\n },\n \"versionNumber\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"bundleUrl\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"ack\", \"deploymentId\", \"action\"]\n },\n \"ObserveTicketResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ticket\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"observerUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"required\": [\"ticket\", \"observerUrl\"]\n },\n \"PreviewResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^prv_[a-z0-9]+$\",\n \"example\": \"prv_abc123xyz456\"\n },\n \"flowId\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\",\n \"minLength\": 12,\n \"maxLength\": 12,\n \"pattern\": \"^[a-z0-9]+$\",\n \"example\": \"k9x2m4p7abcd\"\n },\n \"bundleUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"activationUrl\": {\n \"type\": \"string\",\n \"pattern\": \"^\\\\?elbPreview=[a-z0-9]{12}$\"\n },\n \"createdBy\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"flowSettingsId\",\n \"projectId\",\n \"token\",\n \"bundleUrl\",\n \"activationUrl\",\n \"createdBy\",\n \"createdAt\"\n ]\n },\n \"ListPreviewsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"previews\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/PreviewResponse\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"previews\", \"total\"]\n },\n \"CreatePreviewRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"flowSettingsId\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"draft\"]\n }\n },\n \"required\": [\"kind\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\"deployment-version\"]\n },\n \"deploymentVersionId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"kind\", \"deploymentVersionId\"]\n }\n ]\n }\n },\n \"required\": [\"flowSettingsId\"]\n },\n \"ObserveSessionResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^ses_[a-zA-Z0-9_-]+$\",\n \"example\": \"ses_abc123xyz456\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"configSnapshot\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"serverFlowName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"serverEndpoint\": {\n \"type\": [\"string\", \"null\"]\n },\n \"web\": {\n \"$ref\": \"#/components/schemas/ObserveSessionWeb\"\n },\n \"createdBy\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"projectId\",\n \"flowId\",\n \"status\",\n \"errorMessage\",\n \"configSnapshot\",\n \"serverFlowName\",\n \"serverEndpoint\",\n \"web\",\n \"createdBy\",\n \"createdAt\"\n ]\n },\n \"ObserveSessionWeb\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"token\": {\n \"type\": \"string\"\n },\n \"activationUrl\": {\n \"type\": \"string\"\n },\n \"bundleUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"required\": [\"token\", \"activationUrl\", \"bundleUrl\"]\n },\n \"CreateObserveSessionRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"settingsName\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"settingsName\"]\n },\n \"ObserveSessionHeartbeatResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n }\n },\n \"required\": [\"ok\"]\n },\n \"SecretName\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[A-Z_][A-Z0-9_]*$\"\n },\n \"CreateSecretRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[A-Z_][A-Z0-9_]*$\"\n },\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"name\", \"value\"]\n },\n \"UpdateSecretRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"value\"]\n },\n \"SecretSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n },\n \"SecretListResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n }\n }\n },\n \"required\": [\"secrets\"]\n },\n \"FeedbackRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 5000,\n \"example\": \"The MCP flow_bundle tool is great but slow on large configs.\"\n },\n \"userId\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"alex@example.com\"\n },\n \"projectId\": {\n \"type\": \"string\",\n \"maxLength\": 255,\n \"example\": \"proj_abc123\"\n },\n \"version\": {\n \"type\": \"string\",\n \"maxLength\": 100,\n \"example\": \"0.4.2\"\n }\n },\n \"required\": [\"text\"]\n },\n \"FeedbackResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n },\n \"id\": {\n \"type\": \"string\",\n \"example\": \"fb_abcdef1234567890\"\n }\n },\n \"required\": [\"ok\", \"id\"]\n },\n \"StepExample\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"public\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"options\": {}\n }\n },\n \"mapping\": {},\n \"command\": {\n \"type\": \"string\"\n },\n \"in\": {\n \"$ref\": \"#/components/schemas/StepExampleEvent\"\n },\n \"out\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {}\n }\n }\n },\n \"required\": [\"in\"]\n },\n \"StepExampleEvent\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"data\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"context\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"globals\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"custom\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"string\"\n },\n \"timing\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"user\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\"\n },\n \"trigger\": {\n \"type\": \"string\"\n }\n }\n },\n \"CreateStepExampleRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"public\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"options\": {}\n }\n },\n \"mapping\": {},\n \"command\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"event\": {\n \"$ref\": \"#/components/schemas/StepExampleEvent\"\n },\n \"out\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {}\n }\n }\n },\n \"required\": [\"name\", \"event\"]\n },\n \"EditStepExampleRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"public\": {\n \"type\": \"boolean\"\n },\n \"trigger\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\"\n },\n \"options\": {}\n }\n },\n \"mapping\": {},\n \"command\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"event\": {\n \"$ref\": \"#/components/schemas/StepExampleEvent\"\n },\n \"out\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {}\n }\n }\n },\n \"required\": [\"name\"]\n },\n \"StepExamplesResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"examples\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/components/schemas/StepExample\"\n }\n }\n },\n \"required\": [\"examples\"]\n },\n \"SecretValuesResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"values\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"values\"]\n },\n \"ServiceAccountSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"role\", \"email\", \"description\", \"createdAt\"]\n },\n \"CreateServiceAccountRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 1000\n }\n },\n \"required\": [\"name\", \"role\"]\n },\n \"UpdateServiceAccountRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 1000\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n }\n }\n },\n \"CreateServiceAccountResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"member\", \"deployer\", \"viewer\"]\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"tokenId\": {\n \"type\": \"string\"\n },\n \"tokenPrefix\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"role\",\n \"email\",\n \"token\",\n \"tokenId\",\n \"tokenPrefix\",\n \"createdAt\"\n ]\n },\n \"ListServiceAccountsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"serviceAccounts\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ServiceAccountSummary\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"serviceAccounts\", \"total\"]\n },\n \"CreateSaTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n },\n \"expiresInDays\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"maximum\": 365\n }\n },\n \"required\": [\"name\"]\n },\n \"SaTokenSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"revokedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"prefix\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\",\n \"revokedAt\"\n ]\n },\n \"CreateSaTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"name\", \"token\", \"prefix\", \"expiresAt\", \"createdAt\"]\n },\n \"ListSaTokensResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/SaTokenSummary\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"tokens\", \"total\"]\n },\n \"Invitation\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\", \"accepted\", \"declined\", \"expired\", \"cancelled\"]\n },\n \"invitedBy\": {\n \"type\": [\"string\", \"null\"]\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\n \"id\",\n \"email\",\n \"status\",\n \"invitedBy\",\n \"expiresAt\",\n \"createdAt\"\n ]\n },\n \"CreateInvitationRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n }\n },\n \"required\": [\"email\"]\n },\n \"CreateInvitationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\"]\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n }\n },\n \"required\": [\"id\", \"email\", \"status\", \"expiresAt\", \"createdAt\"]\n },\n \"ListInvitationsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"invitations\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Invitation\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"invitations\", \"total\"]\n },\n \"InvitationPreview\": {\n \"type\": \"object\",\n \"properties\": {\n \"projectName\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"pending\", \"accepted\", \"declined\", \"expired\", \"cancelled\"]\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"invitedByEmail\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n }\n },\n \"required\": [\n \"projectName\",\n \"email\",\n \"status\",\n \"expiresAt\",\n \"invitedByEmail\"\n ]\n },\n \"AcceptInvitationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\"\n },\n \"projectName\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\",\n \"example\": \"member\"\n },\n \"alreadyMember\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"projectId\", \"projectName\", \"alreadyMember\"]\n },\n \"TelemetryEvent\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"entity\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\"\n },\n \"data\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"context\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"globals\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"custom\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"user\": {\n \"type\": \"object\",\n \"properties\": {\n \"device\": {\n \"type\": \"string\"\n },\n \"session\": {\n \"type\": \"string\"\n },\n \"os\": {\n \"type\": \"string\"\n },\n \"osVersion\": {\n \"type\": \"string\"\n },\n \"node\": {\n \"type\": \"string\"\n },\n \"language\": {\n \"type\": \"string\"\n },\n \"timezone\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"device\",\n \"os\",\n \"osVersion\",\n \"node\",\n \"language\",\n \"timezone\"\n ],\n \"additionalProperties\": {}\n },\n \"nested\": {\n \"type\": \"array\",\n \"items\": {}\n },\n \"consent\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"boolean\"\n }\n },\n \"trigger\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"number\"\n },\n \"timing\": {\n \"type\": \"number\"\n },\n \"source\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"cli\", \"mcp\"]\n },\n \"platform\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"schema\": {\n \"type\": \"string\"\n },\n \"tool\": {\n \"type\": \"string\"\n },\n \"command\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"],\n \"additionalProperties\": {}\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"entity\",\n \"action\",\n \"data\",\n \"context\",\n \"globals\",\n \"custom\",\n \"user\",\n \"nested\",\n \"consent\",\n \"trigger\",\n \"timestamp\",\n \"timing\",\n \"source\"\n ]\n },\n \"UpsertBillingDetailsRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"companyName\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"address\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"address2\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"postalCode\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 20\n },\n \"city\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"country\": {\n \"type\": \"string\",\n \"minLength\": 2,\n \"maxLength\": 2\n },\n \"vatId\": {\n \"type\": \"string\",\n \"maxLength\": 50\n },\n \"invoiceEmail\": {\n \"type\": \"string\",\n \"format\": \"email\"\n },\n \"contactName\": {\n \"type\": \"string\",\n \"maxLength\": 255\n }\n },\n \"required\": [\n \"companyName\",\n \"address\",\n \"postalCode\",\n \"city\",\n \"country\",\n \"invoiceEmail\"\n ]\n },\n \"BillingDetailsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"companyName\": {\n \"type\": \"string\"\n },\n \"address\": {\n \"type\": \"string\"\n },\n \"address2\": {\n \"type\": [\"string\", \"null\"]\n },\n \"postalCode\": {\n \"type\": \"string\"\n },\n \"city\": {\n \"type\": \"string\"\n },\n \"country\": {\n \"type\": \"string\"\n },\n \"vatId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"invoiceEmail\": {\n \"type\": \"string\"\n },\n \"contactName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"taxTreatment\": {\n \"type\": \"string\",\n \"enum\": [\"reverse_charge\", \"domestic\", \"export\", \"eu_standard\"]\n },\n \"viesStatus\": {\n \"type\": \"string\",\n \"enum\": [\"verified\", \"invalid\", \"unavailable\", \"not_checked\"]\n },\n \"viesCompanyName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"projectId\",\n \"companyName\",\n \"address\",\n \"address2\",\n \"postalCode\",\n \"city\",\n \"country\",\n \"vatId\",\n \"invoiceEmail\",\n \"contactName\",\n \"taxTreatment\",\n \"viesStatus\",\n \"viesCompanyName\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"DeployedContentResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deploymentId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"versionNumber\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0\n },\n \"status\": {\n \"type\": [\"string\", \"null\"]\n },\n \"flowSettingsName\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publishedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"content\": {}\n },\n \"required\": [\n \"deploymentId\",\n \"versionNumber\",\n \"status\",\n \"flowSettingsName\",\n \"publishedAt\"\n ]\n },\n \"ListHeartbeatsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"records\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/HeartbeatRecord\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"records\", \"total\", \"limit\", \"offset\"]\n },\n \"HeartbeatRecord\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"instanceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"cliVersion\": {\n \"type\": [\"string\", \"null\"]\n },\n \"configVersion\": {\n \"type\": [\"integer\", \"null\"]\n },\n \"mode\": {\n \"type\": [\"string\", \"null\"]\n },\n \"uptime\": {\n \"type\": [\"integer\", \"null\"]\n },\n \"eventsIn\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"eventsOut\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"eventsFailed\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"perDestinationBreakdown\": {},\n \"receivedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"instanceId\",\n \"cliVersion\",\n \"configVersion\",\n \"mode\",\n \"uptime\",\n \"eventsIn\",\n \"eventsOut\",\n \"eventsFailed\",\n \"receivedAt\"\n ]\n },\n \"RotateIngestTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ingestToken\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"ingestToken\"]\n },\n \"DeploymentUsageResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"totalEventsIn\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"totalEventsOut\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"totalEventsFailed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"totalInstances\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"heartbeatCount\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"from\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"to\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"averageThroughputPerHour\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"period\": {\n \"type\": \"string\"\n },\n \"buckets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/UsageBucket\"\n }\n }\n },\n \"required\": [\n \"totalEventsIn\",\n \"totalEventsOut\",\n \"totalEventsFailed\",\n \"totalInstances\",\n \"heartbeatCount\",\n \"from\",\n \"to\",\n \"averageThroughputPerHour\",\n \"period\",\n \"buckets\"\n ]\n },\n \"UsageBucket\": {\n \"type\": \"object\",\n \"properties\": {\n \"bucket\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"eventsIn\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsOut\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsFailed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"instances\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\n \"bucket\",\n \"eventsIn\",\n \"eventsOut\",\n \"eventsFailed\",\n \"instances\"\n ]\n },\n \"CreateCustomDomainRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"hostname\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 253\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"hostname\"]\n },\n \"CustomDomain\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"hostname\": {\n \"type\": \"string\"\n },\n \"kind\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"scwResourceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"certStatus\": {\n \"type\": \"string\"\n },\n \"verifiedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"deploymentId\",\n \"hostname\",\n \"kind\",\n \"status\",\n \"scwResourceId\",\n \"certStatus\",\n \"verifiedAt\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"ListCustomDomainsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"domains\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/CustomDomain\"\n }\n }\n },\n \"required\": [\"domains\"]\n },\n \"DeployTokenStatusResponse\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"hasToken\": {\n \"type\": \"boolean\",\n \"enum\": [false]\n }\n },\n \"required\": [\"hasToken\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"hasToken\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n },\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"healthy\": {\n \"type\": \"boolean\"\n },\n \"lastHeartbeatAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"instanceId\": {\n \"type\": [\"string\", \"null\"]\n },\n \"cliVersion\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\n \"hasToken\",\n \"deploymentId\",\n \"status\",\n \"healthy\",\n \"lastHeartbeatAt\",\n \"instanceId\",\n \"cliVersion\"\n ]\n }\n ]\n },\n \"CreateDeployTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"token\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"configName\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"token\",\n \"deploymentId\",\n \"projectId\",\n \"flowId\",\n \"configName\"\n ]\n },\n \"EntitlementsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"planId\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"entitlements\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n }\n },\n \"required\": [\"planId\", \"role\", \"entitlements\"]\n },\n \"SetLlmConfigRequest\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"clear\"]\n }\n },\n \"required\": [\"action\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"set\"]\n },\n \"config\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"mistral\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"anthropic\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"openai\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"google\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\",\n \"enum\": [\"openai-compatible\"]\n },\n \"modelId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"apiKey\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"baseURL\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"required\": [\"provider\", \"modelId\", \"apiKey\", \"baseURL\"]\n }\n ]\n }\n },\n \"required\": [\"action\", \"config\"]\n }\n ]\n },\n \"SetLlmConfigResponse\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"cleared\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n }\n },\n \"required\": [\"cleared\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"saved\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n }\n },\n \"required\": [\"saved\"]\n }\n ]\n },\n \"LlmConfigStatusResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\"platform\", \"byok\", \"byom\"]\n }\n },\n \"required\": [\"provider\", \"source\"]\n },\n \"ListChatSessionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessions\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChatSessionSummary\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"sessions\", \"total\"]\n },\n \"ChatSessionSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastActiveAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"messageCount\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"firstUserMessage\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"id\", \"createdAt\", \"lastActiveAt\", \"messageCount\"]\n },\n \"ChatSessionDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastActiveAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"messages\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChatSessionMessage\"\n }\n }\n },\n \"required\": [\"id\", \"createdAt\", \"lastActiveAt\", \"messages\"]\n },\n \"ChatSessionMessage\": {\n \"type\": \"object\",\n \"properties\": {\n \"seq\": {\n \"type\": \"integer\"\n },\n \"role\": {\n \"type\": \"string\"\n },\n \"content\": {},\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"seq\", \"role\", \"createdAt\"]\n },\n \"ElicitRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n },\n \"elicitationId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n },\n \"result\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"accept\"]\n },\n \"content\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n ]\n }\n }\n },\n \"required\": [\"action\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"decline\"]\n }\n },\n \"required\": [\"action\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"cancel\"]\n }\n },\n \"required\": [\"action\"]\n }\n ]\n }\n },\n \"required\": [\"sessionId\", \"elicitationId\", \"result\"]\n },\n \"ElicitResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"ok\": {\n \"type\": \"boolean\",\n \"enum\": [true]\n }\n },\n \"required\": [\"ok\"]\n },\n \"CreateMcpTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"ttlSeconds\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n }\n },\n \"required\": [\"name\"]\n },\n \"CreateMcpTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"token\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"token\", \"createdAt\", \"expiresAt\"]\n },\n \"ListMcpTokensResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/McpTokenSummary\"\n }\n }\n },\n \"required\": [\"tokens\"]\n },\n \"McpTokenSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"audience\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastUsedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"audience\",\n \"createdAt\",\n \"lastUsedAt\",\n \"expiresAt\"\n ]\n },\n \"PackageCatalogResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"catalog\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/PackageCatalogEntry\"\n }\n },\n \"count\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"catalog\", \"count\"]\n },\n \"PackageCatalogEntry\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\"\n },\n \"platform\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"name\", \"version\", \"type\", \"platform\"]\n },\n \"PackageSearchResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"packages\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/PackageSearchHit\"\n }\n },\n \"count\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"packages\", \"count\"]\n },\n \"PackageSearchHit\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"version\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"name\", \"version\", \"description\"]\n },\n \"ListRunnersResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"runners\": {\n \"type\": \"array\",\n \"items\": {}\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n }\n },\n \"required\": [\"runners\", \"total\"]\n },\n \"RunnerHeartbeatResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"instanceId\": {\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"id\", \"instanceId\", \"deploymentId\"]\n },\n \"ObserveTimingRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"connectId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"ticketMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"sseMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"totalMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"required\": [\"connectId\", \"ticketMs\", \"sseMs\", \"totalMs\"]\n },\n \"MagicLinkResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"message\": {\n \"type\": \"string\",\n \"example\": \"Magic link sent\"\n }\n },\n \"required\": [\"success\", \"message\"]\n },\n \"MagicLinkRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"redirect_to\": {\n \"type\": \"string\",\n \"example\": \"/dashboard\"\n }\n },\n \"required\": [\"email\"]\n },\n \"WhoamiResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"example\": \"user_a1b2c3d4\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"],\n \"example\": null\n }\n },\n \"required\": [\"userId\", \"email\", \"projectId\"]\n },\n \"ListSessionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"sessions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"expiresAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"lastTouchedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"isCurrent\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\",\n \"createdAt\",\n \"expiresAt\",\n \"lastTouchedAt\",\n \"isCurrent\"\n ]\n }\n }\n },\n \"required\": [\"sessions\"]\n },\n \"DeviceCodeResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"deviceCode\": {\n \"type\": \"string\"\n },\n \"userCode\": {\n \"type\": \"string\"\n },\n \"expiresIn\": {\n \"type\": \"number\"\n },\n \"interval\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"deviceCode\", \"userCode\", \"expiresIn\", \"interval\"]\n },\n \"ApproveDeviceResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"success\"]\n },\n \"ApproveDeviceRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"userCode\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"userCode\"]\n },\n \"DeviceTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"token\": {\n \"type\": \"string\"\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"userId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"token\", \"email\", \"userId\"]\n },\n \"DeviceTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"deviceCode\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"hostname\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"deviceCode\"]\n },\n \"ListProjectsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Project\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n },\n \"nextCursor\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\"projects\", \"total\", \"nextCursor\"]\n },\n \"CreateProjectRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n }\n },\n \"required\": [\"name\"]\n },\n \"ProjectDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"siteUrl\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"uri\",\n \"example\": \"https://example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"]\n }\n },\n \"required\": [\"id\", \"name\", \"role\"]\n },\n \"UpdateProjectRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"siteUrl\": {\n \"type\": [\"string\", \"null\"],\n \"maxLength\": 2048,\n \"format\": \"uri\",\n \"example\": \"https://example.com\"\n }\n }\n },\n \"ListMembersResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"members\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Member\"\n }\n },\n \"total\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"members\", \"total\"]\n },\n \"AddMemberRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"user@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"],\n \"default\": \"member\"\n }\n },\n \"required\": [\"email\"]\n },\n \"UpdateMemberRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\"owner\", \"admin\", \"member\", \"deployer\", \"viewer\"]\n }\n },\n \"required\": [\"role\"]\n },\n \"ListFlowsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"flows\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSummary\"\n }\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nextCursor\": {\n \"type\": [\"string\", \"null\"]\n }\n },\n \"required\": [\"flows\", \"total\", \"nextCursor\"]\n },\n \"CreateFlowRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n }\n },\n \"required\": [\"name\"]\n },\n \"UpdateFlowRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n },\n \"config\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n }\n }\n },\n \"DuplicateFlowRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"example\": \"my-website-flow\"\n }\n }\n },\n \"DeploymentResponse\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"type\",\n \"status\",\n \"containerUrl\",\n \"errorMessage\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"ListSettingsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"settings\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/FlowSettingsSummary\"\n }\n }\n },\n \"required\": [\"settings\"]\n },\n \"SettingsDeploymentResponse\": {\n \"type\": [\"object\", \"null\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"settingsId\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"settingsId\",\n \"type\",\n \"status\",\n \"containerUrl\",\n \"publicUrl\",\n \"errorMessage\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"SettingsDeploymentDetailResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"settingsId\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"containerUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"publicUrl\": {\n \"type\": [\"string\", \"null\"]\n },\n \"errorMessage\": {\n \"type\": [\"string\", \"null\"]\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"flowId\",\n \"settingsId\",\n \"status\",\n \"type\",\n \"containerUrl\",\n \"publicUrl\",\n \"errorMessage\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n \"ListVersionsResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Version\"\n }\n },\n \"flowId\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"limit\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0\n },\n \"offset\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"hasMore\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"data\", \"flowId\", \"total\", \"limit\", \"offset\", \"hasMore\"]\n },\n \"GetVersionResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"version\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"content\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"createdBy\": {\n \"type\": \"string\",\n \"enum\": [\"user\", \"auto_save\", \"restore\"]\n }\n },\n \"required\": [\"version\", \"content\", \"createdAt\", \"createdBy\"]\n },\n \"ListApiTokensResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"tokens\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ApiTokenSummary\"\n }\n }\n },\n \"required\": [\"tokens\"]\n },\n \"CreateApiTokenResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"example\": \"tok_a1b2c3d4\"\n },\n \"name\": {\n \"type\": \"string\",\n \"example\": \"CI Pipeline\"\n },\n \"token\": {\n \"type\": \"string\",\n \"example\": \"sk-walkeros-abcd1234...\"\n },\n \"prefix\": {\n \"type\": \"string\",\n \"example\": \"sk-walkeros-abcd\"\n },\n \"createdAt\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"expiresAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\",\n \"example\": \"2026-01-26T14:30:00.000Z\"\n },\n \"projectId\": {\n \"type\": [\"string\", \"null\"],\n \"example\": null\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"token\",\n \"prefix\",\n \"createdAt\",\n \"expiresAt\",\n \"projectId\"\n ]\n },\n \"CreateApiTokenRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100,\n \"example\": \"CI Pipeline\"\n },\n \"expiresInDays\": {\n \"type\": [\"integer\", \"null\"],\n \"exclusiveMinimum\": 0,\n \"maximum\": 365,\n \"example\": 90\n }\n },\n \"required\": [\"name\"]\n },\n \"BundleResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"bundleId\": {\n \"type\": \"string\"\n },\n \"cached\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"bundleId\", \"cached\"]\n },\n \"SimulateResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"success\": {\n \"type\": \"boolean\"\n },\n \"result\": {\n \"type\": \"object\",\n \"properties\": {\n \"step\": {\n \"type\": \"string\",\n \"enum\": [\"source\", \"transformer\", \"destination\"]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"events\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n },\n \"calls\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"fn\": {\n \"type\": \"string\"\n },\n \"args\": {\n \"type\": \"array\",\n \"items\": {}\n },\n \"ts\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"fn\", \"args\", \"ts\"]\n }\n },\n \"duration\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"step\", \"name\", \"events\", \"calls\", \"duration\"]\n }\n },\n \"required\": [\"success\"]\n },\n \"SimulateRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"bundleId\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-f0-9]{8,64}$\"\n },\n \"config\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"event\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"step\": {\n \"type\": \"string\",\n \"pattern\": \"^(source|transformer|destination)\\\\..+$\"\n }\n },\n \"required\": [\"bundleId\", \"config\", \"event\", \"step\"]\n },\n \"RegisterRuntimeRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"flowId\": {\n \"type\": \"string\"\n },\n \"bundlePath\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"flowId\", \"bundlePath\"]\n },\n \"ValidateTicketResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\"\n },\n \"projectId\": {\n \"type\": \"string\"\n },\n \"replay\": {\n \"type\": \"object\",\n \"properties\": {\n \"size\": {\n \"type\": \"number\"\n },\n \"ttlMs\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\"size\", \"ttlMs\"]\n }\n },\n \"required\": [\"userId\", \"projectId\", \"replay\"]\n },\n \"ValidateTicketRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"ticket\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\"ticket\"]\n },\n \"HealthResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"string\",\n \"example\": \"ok\"\n },\n \"appVersion\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d\",\n \"description\": \"Build identity of the running app (git short hash injected at build time).\"\n },\n \"contractVersion\": {\n \"type\": \"string\",\n \"example\": \"1.0.0\",\n \"description\": \"Semver of the API contract the server implements.\"\n },\n \"contractHash\": {\n \"type\": \"string\",\n \"example\": \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\n \"description\": \"Deterministic sha256 of the OpenAPI contract content.\"\n }\n },\n \"required\": [\"status\", \"appVersion\", \"contractVersion\", \"contractHash\"]\n },\n \"DeclineInvitationResponse\": {\n \"type\": \"object\",\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"message\"]\n },\n \"HeartbeatRequest\": {\n \"type\": \"object\",\n \"properties\": {\n \"instanceId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 64,\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"flowId\": {\n \"type\": \"string\",\n \"example\": \"flow_abc123\"\n },\n \"configVersion\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"type\": \"string\",\n \"enum\": [\"local\", \"collect\", \"serve\"]\n },\n \"cliVersion\": {\n \"type\": \"string\",\n \"example\": \"1.3.0\"\n },\n \"uptime\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"metadata\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n },\n \"deploymentId\": {\n \"type\": \"string\",\n \"example\": \"dpl_abc123\"\n },\n \"counters\": {\n \"type\": \"object\",\n \"properties\": {\n \"eventsIn\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsOut\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"eventsFailed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"destinations\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"count\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"failed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"duration\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"required\": [\"count\", \"failed\", \"duration\"]\n }\n }\n },\n \"required\": [\n \"eventsIn\",\n \"eventsOut\",\n \"eventsFailed\",\n \"destinations\"\n ]\n }\n },\n \"required\": [\"instanceId\", \"flowId\"]\n }\n },\n \"parameters\": {}\n },\n \"paths\": {\n \"/api/auth/magic-link\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Request magic link\",\n \"description\": \"Send a magic link to the provided email address for passwordless authentication. Always returns success to prevent email enumeration.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/MagicLinkRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Magic link sent (or would be sent if email exists)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/MagicLinkResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/verify\": {\n \"get\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Verify magic link token\",\n \"description\": \"Verify a magic link token and create an authenticated session. Redirects to the specified URL or home page.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"example\": \"abc123...\",\n \"description\": \"Magic link token\"\n },\n \"required\": true,\n \"description\": \"Magic link token\",\n \"name\": \"token\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"/dashboard\",\n \"description\": \"Redirect URL after verification\"\n },\n \"required\": false,\n \"description\": \"Redirect URL after verification\",\n \"name\": \"redirect_to\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"302\": {\n \"description\": \"Redirect to target URL with session cookie set\"\n }\n }\n }\n },\n \"/api/auth/logout\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"End session\",\n \"description\": \"Destroy the current session and clear the session cookie.\",\n \"responses\": {\n \"302\": {\n \"description\": \"Redirect to login page\"\n }\n }\n }\n },\n \"/api/auth/whoami\": {\n \"get\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Current identity\",\n \"description\": \"Return the identity of the authenticated user. Supports session cookie and Bearer token.\",\n \"responses\": {\n \"200\": {\n \"description\": \"Current user identity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/WhoamiResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/account\": {\n \"delete\": {\n \"tags\": [\"Account\"],\n \"summary\": \"Delete own account\",\n \"description\": \"Soft-delete the authenticated account, starting the 30-day grace window. Requires a confirmation of the account email in the body. Revokes all sessions, API tokens, and MCP tokens. Blocked with 409 when the caller is the sole owner of a project that still has other members.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeleteAccountRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"204\": {\n \"description\": \"Account scheduled for deletion\"\n },\n \"400\": {\n \"description\": \"Confirmation email does not match\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Sole owner of a shared project\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeleteAccountBlocked\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/account/export\": {\n \"get\": {\n \"tags\": [\"Account\"],\n \"summary\": \"Export own account data\",\n \"description\": \"Download a portable JSON export of everything the platform holds about the authenticated account: profile, memberships, token and session metadata, MCP sessions with messages, feedback, and invitations. Metadata only; token hashes and secret values are never included. Served as a file attachment.\",\n \"responses\": {\n \"200\": {\n \"description\": \"Account data export (file attachment)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AccountExportResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/sessions\": {\n \"get\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"List sessions\",\n \"description\": \"List all active sessions for the authenticated user. The current session is marked with isCurrent: true.\",\n \"responses\": {\n \"200\": {\n \"description\": \"List of active sessions\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListSessionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/sessions/{id}\": {\n \"delete\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Revoke session\",\n \"description\": \"Revoke a session by ID. Cannot revoke the current session (use logout instead).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"ses_abc123\"\n },\n \"required\": true,\n \"name\": \"id\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Session revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/device/code\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Request device code\",\n \"description\": \"Generate a device code and user code for the device authorization flow.\",\n \"responses\": {\n \"200\": {\n \"description\": \"Device code generated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeviceCodeResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/device/approve\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Approve device code\",\n \"description\": \"Approve a device authorization request using the user code. Requires authentication.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ApproveDeviceRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Device approved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ApproveDeviceResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/auth/device/token\": {\n \"post\": {\n \"tags\": [\"Auth\"],\n \"summary\": \"Poll device token\",\n \"description\": \"Poll for authorization status using the device code. Returns a token when approved.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeviceTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Authorization approved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeviceTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Pending, slow down, or expired\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"List my projects\",\n \"description\": \"List all projects where the authenticated user is a member.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\"\n },\n \"required\": false,\n \"name\": \"cursor\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of projects\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListProjectsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Create project\",\n \"description\": \"Create a new project. The authenticated user becomes the owner.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateProjectRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Project created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateProjectResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Get project\",\n \"description\": \"Get a single project by ID. Requires membership.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Project details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ProjectDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Update project\",\n \"description\": \"Update project details. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateProjectRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Project updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateProjectResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Delete project\",\n \"description\": \"Delete a project and all its resources. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Project deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/members\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"List members\",\n \"description\": \"List all members of a project. Requires membership.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of members\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListMembersResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Add member\",\n \"description\": \"Add a member to the project by email. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AddMemberRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Member added\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Member\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/members/{userId}\": {\n \"patch\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Update member role\",\n \"description\": \"Update a member's role. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"user_a1b2c3\"\n },\n \"required\": true,\n \"name\": \"userId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateMemberRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Role updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Member\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Remove member\",\n \"description\": \"Remove a member from the project. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"user_a1b2c3\"\n },\n \"required\": true,\n \"name\": \"userId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Member removed\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows\": {\n \"get\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"List flows\",\n \"description\": \"List all flows for a project.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"name\", \"updated_at\", \"created_at\"],\n \"example\": \"updated_at\"\n },\n \"required\": false,\n \"name\": \"sort\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"asc\", \"desc\"],\n \"example\": \"desc\"\n },\n \"required\": false,\n \"name\": \"order\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"true\", \"false\"],\n \"example\": \"false\"\n },\n \"required\": false,\n \"name\": \"include_deleted\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\"\n },\n \"required\": false,\n \"name\": \"cursor\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of flows\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListFlowsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Create flow\",\n \"description\": \"Create a new flow in the project. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateFlowRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Flow created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Flow\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}\": {\n \"get\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Get flow\",\n \"description\": \"Get a single flow by ID. Use ?fields to select specific sections (reduces response size).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Comma-separated dot-paths to select specific fields (e.g., \\\"config.variables,config.flows.tracking.sources\\\"). Always includes id, createdAt, updatedAt.\",\n \"example\": \"config.variables,config.flows.tracking.sources\"\n },\n \"required\": false,\n \"description\": \"Comma-separated dot-paths to select specific fields (e.g., \\\"config.variables,config.flows.tracking.sources\\\"). Always includes id, createdAt, updatedAt.\",\n \"name\": \"fields\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Flow details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Update flow\",\n \"description\": \"Update an existing flow. Creates a version snapshot before applying changes. Requires member role. Use Content-Type: application/merge-patch+json to send only changed fields (RFC 7386).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"example\": \"\\\"a1b2c3d4e5f6g7h8\\\"\"\n },\n \"required\": false,\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"name\": \"if-match\",\n \"in\": \"header\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateFlowRequest\"\n }\n },\n \"application/merge-patch+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateFlowRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Flow updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowUpdateResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"412\": {\n \"description\": \"ETag mismatch — flow was modified since last read\"\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Soft-delete flow\",\n \"description\": \"Soft delete a flow (sets deleted_at timestamp). Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"example\": \"\\\"a1b2c3d4e5f6g7h8\\\"\"\n },\n \"required\": false,\n \"description\": \"ETag from a previous GET. Returns 412 if flow was modified since.\",\n \"name\": \"if-match\",\n \"in\": \"header\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Flow deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"412\": {\n \"description\": \"ETag mismatch — flow was modified since last read\"\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/duplicate\": {\n \"post\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Duplicate flow\",\n \"description\": \"Create a copy of an existing flow with a new ID and no version history. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DuplicateFlowRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Flow duplicated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Flow\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/secrets\": {\n \"get\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"List secrets\",\n \"description\": \"List a flow's secrets as metadata only (name, id, timestamps). Values are never returned. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Secret metadata list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"flowId\",\n \"createdAt\",\n \"updatedAt\"\n ]\n }\n }\n },\n \"required\": [\"secrets\"]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Create secret\",\n \"description\": \"Create a secret for a flow. The value is encrypted at rest and never returned. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[A-Z_][A-Z0-9_]*$\"\n },\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"name\", \"value\"]\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Secret created (metadata only)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/secrets/{secretId}\": {\n \"put\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Update secret value\",\n \"description\": \"Rotate a secret's value (re-encrypts). The value is never returned. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sec_abc123\"\n },\n \"required\": true,\n \"name\": \"secretId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 65536\n }\n },\n \"required\": [\"value\"]\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Secret updated (metadata only)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"createdAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n },\n \"updatedAt\": {\n \"type\": [\"string\", \"null\"],\n \"format\": \"date-time\"\n }\n },\n \"required\": [\"id\", \"name\", \"flowId\", \"createdAt\", \"updatedAt\"]\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Delete secret\",\n \"description\": \"Soft-delete a secret. Idempotent: deleting a missing secret returns 204. Requires member role and the secrets entitlement.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sec_abc123\"\n },\n \"required\": true,\n \"name\": \"secretId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Secret deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/secrets/values\": {\n \"get\": {\n \"tags\": [\"Secrets\"],\n \"summary\": \"Get decrypted secret values\",\n \"description\": \"Return decrypted secret values for a flow as a name-to-value map. Dual auth: a runtime container Bearer token bound to (projectId, flowId) with the `runner:read-secrets` scope returns only the bundle-referenced subset; a session cookie with member role returns all of the flow's secrets for administration. Responses are never cached.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Decrypted secret values keyed by name\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"values\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\"values\"]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/steps/{stepPath}/examples\": {\n \"post\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Add step example\",\n \"description\": \"Add a named example to a step. Examples are stored as an object map keyed by name. Rejects duplicate names with 409.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"example\": \"destinations.gtag\"\n },\n \"required\": true,\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"name\": \"stepPath\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateStepExampleRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Updated examples object map\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StepExamplesResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Unprocessable entity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"put\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Edit step example\",\n \"description\": \"Edit an existing named example in place, merging provided fields onto the stored entry. Returns 404 when the named example does not exist.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"example\": \"destinations.gtag\"\n },\n \"required\": true,\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"name\": \"stepPath\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/EditStepExampleRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Updated examples object map\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StepExamplesResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Unprocessable entity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Flows\"],\n \"summary\": \"Remove step example\",\n \"description\": \"Remove a named example from a step. Returns 404 when the named example does not exist.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"example\": \"destinations.gtag\"\n },\n \"required\": true,\n \"description\": \"Dot-segmented step path (sectionKey.stepName), e.g. \\\"destinations.gtag\\\".\",\n \"name\": \"stepPath\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Name of the example to remove.\",\n \"example\": \"product view\"\n },\n \"required\": true,\n \"description\": \"Name of the example to remove.\",\n \"name\": \"name\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Updated examples object map\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StepExamplesResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Unprocessable entity\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/deploy\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get latest deployment\",\n \"description\": \"Get the latest deployment for a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Latest deployment (or null)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Start deployment\",\n \"description\": \"Start a new deployment for a flow. The bundle runs asynchronously on the worker. Returns 400 AMBIGUOUS_CONFIG when the flow has multiple named settings (use the per-settings deploy endpoint instead). When an Idempotency-Key replays a prior request, returns 200 with status `already_created`.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment started, or idempotent replay of a prior request\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StartDeploymentResponse\"\n }\n }\n }\n },\n \"201\": {\n \"description\": \"Deployment started\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/StartDeploymentResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Deployment already in progress\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited or concurrent deploy limit (Retry-After header)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/deploy/{deploymentId}\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get deployment\",\n \"description\": \"Get a specific deployment by ID.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Delete deployment\",\n \"description\": \"Delete a deployment and its container. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment deleted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\"deleted\"]\n }\n },\n \"required\": [\"id\", \"status\"]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"List settings\",\n \"description\": \"List active named settings for a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of settings\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListSettingsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Get settings\",\n \"description\": \"Get a single settings entry with its latest deployment.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Settings details with deployment\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowSettingsDetail\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/json\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Download settings JSON\",\n \"description\": \"Download the named flow settings as a self-contained Config JSON file. Includes parent variables and definitions.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Flow Config JSON file\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FlowConfig\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/bundle\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Download settings bundle\",\n \"description\": \"Download the compiled JS/MJS for the settings' latest deployment. Redirects to a presigned download URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"302\": {\n \"description\": \"Redirect to presigned bundle URL\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deploy\": {\n \"post\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Deploy settings\",\n \"description\": \"Start a deployment for a specific settings entry. Detects platform from the settings.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"201\": {\n \"description\": \"Deployment started\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploySettingsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Deployment already in progress\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"422\": {\n \"description\": \"Settings orphaned\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Get latest settings deployment\",\n \"description\": \"Get the latest deployment for a specific settings entry.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Latest deployment (or null)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SettingsDeploymentResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deployments/{deploymentId}\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Get settings deployment detail\",\n \"description\": \"Get a specific deployment by ID, scoped to a settings entry.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SettingsDeploymentDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/previews\": {\n \"post\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"Create preview\",\n \"description\": \"Create a new preview for a web flow settings entry. Bundles the flow and publishes to a unique token-based URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreatePreviewRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Preview created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PreviewResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Quota exceeded\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Bundle or upload failed\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"get\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"List previews\",\n \"description\": \"List all previews for a flow, ordered by creation date descending.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of previews\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListPreviewsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/previews/{previewId}\": {\n \"get\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"Get preview\",\n \"description\": \"Get a single preview by ID.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^prv_[a-z0-9]+$\",\n \"example\": \"prv_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"previewId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Preview details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PreviewResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Previews\"],\n \"summary\": \"Delete preview\",\n \"description\": \"Delete a preview and its S3 bundle. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^prv_[a-z0-9]+$\",\n \"example\": \"prv_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"previewId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Preview deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/observe-sessions\": {\n \"post\": {\n \"tags\": [\"Observe Sessions\"],\n \"summary\": \"Start observe session\",\n \"description\": \"Start an Observe session for a flow. Validates the flow topology, inserts the row, and kicks off detached provisioning. Returns the row immediately as arming.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateObserveSessionRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Observe session started\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ObserveSessionResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Flow topology not supported\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limit exceeded\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/observe-sessions/{sessionId}\": {\n \"get\": {\n \"tags\": [\"Observe Sessions\"],\n \"summary\": \"Get observe session\",\n \"description\": \"Get an observe session: status, error message, config snapshot, web activation info, and the live server endpoint when live.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^ses_[a-zA-Z0-9_-]+$\",\n \"example\": \"ses_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"sessionId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Observe session details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ObserveSessionResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Observe Sessions\"],\n \"summary\": \"End observe session\",\n \"description\": \"End an observe session: tear down the container, revoke credentials, delete the web preview, delete the row. Idempotent.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^ses_[a-zA-Z0-9_-]+$\",\n \"example\": \"ses_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"sessionId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Observe session ended\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/observe-sessions/{sessionId}/heartbeat\": {\n \"post\": {\n \"tags\": [\"Observe Sessions\"],\n \"summary\": \"Heartbeat observe session\",\n \"description\": \"Keep an observe session warm. The window posts this every 30s while open; a stale session is reaped by the janitor.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^ses_[a-zA-Z0-9_-]+$\",\n \"example\": \"ses_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"sessionId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Heartbeat recorded\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ObserveSessionHeartbeatResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/observe-sessions/{sessionId}/end\": {\n \"post\": {\n \"tags\": [\"Observe Sessions\"],\n \"summary\": \"End observe session (beacon)\",\n \"description\": \"The navigator.sendBeacon end target for page unload. Mirrors the DELETE end route because sendBeacon cannot send a DELETE. Idempotent.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^ses_[a-zA-Z0-9_-]+$\",\n \"example\": \"ses_abc123xyz456\"\n },\n \"required\": true,\n \"name\": \"sessionId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Observe session ended\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/versions\": {\n \"get\": {\n \"tags\": [\"Versions\"],\n \"summary\": \"List versions\",\n \"description\": \"List all versions for a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of versions\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListVersionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}\": {\n \"get\": {\n \"tags\": [\"Versions\"],\n \"summary\": \"Get version\",\n \"description\": \"Get a specific version of a flow.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"required\": true,\n \"name\": \"versionNumber\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Version details with content\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/GetVersionResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/versions/{versionNumber}/restore\": {\n \"post\": {\n \"tags\": [\"Versions\"],\n \"summary\": \"Restore version\",\n \"description\": \"Restore a flow to a specific version. Creates a new version snapshot. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"exclusiveMinimum\": 0,\n \"example\": 1\n },\n \"required\": true,\n \"name\": \"versionNumber\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Flow restored\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Flow\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/tokens\": {\n \"get\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"List my tokens\",\n \"description\": \"List all API tokens for the authenticated user. Returns summaries (no raw token values).\",\n \"responses\": {\n \"200\": {\n \"description\": \"List of tokens\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListApiTokensResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Create token\",\n \"description\": \"Create a new API token. The raw token is returned once and cannot be retrieved again.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateApiTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Token created (raw token shown once)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateApiTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/tokens/{tokenId}\": {\n \"delete\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Revoke token\",\n \"description\": \"Revoke an API token (soft delete via revokedAt timestamp).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^tok_[a-zA-Z0-9_-]+$\",\n \"example\": \"tok_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"tokenId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Token revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/bundle\": {\n \"post\": {\n \"tags\": [\"Bundle\"],\n \"summary\": \"Bundle flow\",\n \"description\": \"Bundle a flow using CLI. Returns bundleId (content-hash). Use ?output=download to redirect to presigned S3 URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"my-web-flow\",\n \"description\": \"Named flow to bundle (required for multi-settings flows)\"\n },\n \"required\": false,\n \"description\": \"Named flow to bundle (required for multi-settings flows)\",\n \"name\": \"flow\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"download\"],\n \"description\": \"Set to \\\"download\\\" to redirect to the bundle file\"\n },\n \"required\": false,\n \"description\": \"Set to \\\"download\\\" to redirect to the bundle file\",\n \"name\": \"output\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Bundle result\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/BundleResponse\"\n }\n }\n }\n },\n \"302\": {\n \"description\": \"Redirect to presigned bundle URL (when output=download)\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/simulate\": {\n \"post\": {\n \"tags\": [\"Simulate\"],\n \"summary\": \"Simulate a flow step\",\n \"description\": \"Execute a simulation against a pre-built bundle. Requires bundleId from the bundle endpoint.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SimulateRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Simulation result\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SimulateResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Simulation container error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List deployments\",\n \"description\": \"List deployments for a project. Supports filtering by status, type, origin, and flowId, plus pagination.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\n \"idle\",\n \"deploying\",\n \"published\",\n \"active\",\n \"stopped\",\n \"failed\"\n ]\n },\n \"required\": false,\n \"name\": \"status\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"]\n },\n \"required\": false,\n \"name\": \"type\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"cloud\", \"self-hosted\"]\n },\n \"required\": false,\n \"name\": \"origin\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": false,\n \"name\": \"flowId\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"created_at\", \"updated_at\"]\n },\n \"required\": false,\n \"name\": \"sort\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"asc\", \"desc\"]\n },\n \"required\": false,\n \"name\": \"order\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\"\n },\n \"required\": false,\n \"name\": \"cursor\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of deployments\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListDeploymentsResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Create deployment\",\n \"description\": \"Create a new deployment slot. Supports an Idempotency-Key header — a repeated key returns the original deployment id with status `already_created`. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Optional client key to make creation idempotent.\"\n },\n \"required\": false,\n \"description\": \"Optional client key to make creation idempotent.\",\n \"name\": \"idempotency-key\",\n \"in\": \"header\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\"web\", \"server\"],\n \"example\": \"web\"\n },\n \"label\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"flowId\": {\n \"type\": \"string\"\n },\n \"flowSettingsId\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"type\"]\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Deployment created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateDeploymentResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/latest\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List latest deployments\",\n \"description\": \"List the latest deployment for each flow in the project.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Latest deployment per flow\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/LatestDeploymentsByFlow\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/runtimes/register\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Register runtime\",\n \"description\": \"Register a server-side runtime container and get a presigned bundle URL.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RegisterRuntimeRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Presigned bundle URL\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/observe/ticket\": {\n \"post\": {\n \"tags\": [\"Observe\"],\n \"summary\": \"Create SSE ticket\",\n \"description\": \"Generate a one-time ticket for authenticating an SSE connection to the Observer service. Requires project membership.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Ticket generated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ObserveTicketResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/observe/validate-ticket\": {\n \"post\": {\n \"tags\": [\"Observe\"],\n \"summary\": \"Validate ticket\",\n \"description\": \"Internal endpoint for the Observer service to validate and consume a ticket.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ValidateTicketRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Ticket payload\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ValidateTicketResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Invalid or expired ticket\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/health\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"Health check\",\n \"description\": \"Check the health of the API and its dependencies.\",\n \"responses\": {\n \"200\": {\n \"description\": \"Health status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/HealthResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/openapi.json\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"OpenAPI spec\",\n \"description\": \"Return the OpenAPI 3.1 specification for this API.\",\n \"responses\": {\n \"200\": {\n \"description\": \"OpenAPI document\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {},\n \"additionalProperties\": {}\n }\n }\n }\n }\n }\n }\n },\n \"/ingest/v1/{projectId}\": {\n \"post\": {\n \"tags\": [\"Observer\"],\n \"summary\": \"Event ingestion\",\n \"description\": \"Ingest walkerOS events for a project. Served by the Observer service (port 3001).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"202\": {\n \"description\": \"Accepted\"\n }\n }\n }\n },\n \"/stream/v1\": {\n \"get\": {\n \"tags\": [\"Observer\"],\n \"summary\": \"SSE stream\",\n \"description\": \"Server-Sent Events stream for real-time event observation. Requires a valid ticket. Served by the Observer service (port 3001).\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"One-time ticket from /api/projects/{projectId}/observe/ticket\"\n },\n \"required\": true,\n \"description\": \"One-time ticket from /api/projects/{projectId}/observe/ticket\",\n \"name\": \"ticket\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Project ID for scoped validation\"\n },\n \"required\": true,\n \"description\": \"Project ID for scoped validation\",\n \"name\": \"project\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"SSE event stream\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/health\": {\n \"get\": {\n \"tags\": [\"Observer\"],\n \"summary\": \"Observer health\",\n \"description\": \"Health check for the Observer service (port 3001).\",\n \"responses\": {\n \"200\": {\n \"description\": \"Health status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\"status\"]\n }\n }\n }\n }\n }\n }\n },\n \"/api/feedback\": {\n \"post\": {\n \"tags\": [\"Feedback\"],\n \"summary\": \"Submit user feedback\",\n \"description\": \"Accepts free-form feedback from the walkerOS CLI, MCP, or a future in-app form. Public endpoint — no authentication required. The body `userId` is stored verbatim as a best-effort contact email and is not validated against the app users table.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FeedbackRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Feedback stored\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/FeedbackResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts\": {\n \"get\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"List service accounts\",\n \"description\": \"List service accounts for a project. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of service accounts\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListServiceAccountsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Create service account\",\n \"description\": \"Create a service account and its first token. The raw token is returned once and cannot be retrieved again. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateServiceAccountRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Service account created (raw token shown once)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateServiceAccountResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts/{serviceAccountId}\": {\n \"get\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Get service account\",\n \"description\": \"Get a single service account by ID. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Service account details\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ServiceAccountSummary\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Update service account\",\n \"description\": \"Update a service account's name, description, or role. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateServiceAccountRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Service account updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ServiceAccountSummary\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Delete service account\",\n \"description\": \"Soft-delete a service account and revoke all its tokens. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Service account deleted\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts/{serviceAccountId}/tokens\": {\n \"get\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"List service account tokens\",\n \"description\": \"List tokens for a service account. Returns summaries (no raw token values). Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of tokens\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListSaTokensResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Create service account token\",\n \"description\": \"Create a new token for a service account. The raw token is returned once and cannot be retrieved again. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateSaTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Token created (raw token shown once)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateSaTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/service-accounts/{serviceAccountId}/tokens/{tokenId}\": {\n \"delete\": {\n \"tags\": [\"Service Accounts\"],\n \"summary\": \"Revoke service account token\",\n \"description\": \"Revoke a service account token. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sa_abc123\"\n },\n \"required\": true,\n \"name\": \"serviceAccountId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"tok_abc123\"\n },\n \"required\": true,\n \"name\": \"tokenId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Token revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/invitations\": {\n \"get\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"List invitations\",\n \"description\": \"List invitations for a project. Defaults to pending; pass ?status=all for every status. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\n \"pending\",\n \"accepted\",\n \"declined\",\n \"expired\",\n \"cancelled\",\n \"all\"\n ],\n \"example\": \"pending\"\n },\n \"required\": false,\n \"name\": \"status\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"List of invitations\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListInvitationsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Create invitation\",\n \"description\": \"Create an invitation and send the invite email. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateInvitationRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Invitation created\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateInvitationResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Invitation limit reached\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/invitations/{inviteId}\": {\n \"delete\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Cancel invitation\",\n \"description\": \"Cancel a pending invitation. Requires admin role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"inv_abc123\"\n },\n \"required\": true,\n \"name\": \"inviteId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Invitation cancelled\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/invitations/{token}\": {\n \"get\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Preview invitation\",\n \"description\": \"Preview invitation details. No authentication required — the token is the credential.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Opaque invitation token (the credential).\",\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"required\": true,\n \"description\": \"Opaque invitation token (the credential).\",\n \"name\": \"token\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Invitation preview\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/InvitationPreview\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/invitations/{token}/accept\": {\n \"post\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Accept invitation\",\n \"description\": \"Accept an invitation. Requires authentication; the authenticated user's email must match the invitation email.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Opaque invitation token (the credential).\",\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"required\": true,\n \"description\": \"Opaque invitation token (the credential).\",\n \"name\": \"token\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Invitation accepted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AcceptInvitationResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/invitations/{token}/decline\": {\n \"post\": {\n \"tags\": [\"Invitations\"],\n \"summary\": \"Decline invitation\",\n \"description\": \"Decline an invitation. No authentication required — the token is the credential.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Opaque invitation token (the credential).\",\n \"example\": \"a1b2c3d4e5f6\"\n },\n \"required\": true,\n \"description\": \"Opaque invitation token (the credential).\",\n \"name\": \"token\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Invitation declined\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeclineInvitationResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/telemetry\": {\n \"post\": {\n \"tags\": [\"Telemetry\"],\n \"summary\": \"Submit telemetry event\",\n \"description\": \"Accept a single walkerOS v4 event from the CLI or MCP telemetry emitter. Public endpoint — no authentication. `source.type` is constrained to `cli` or `mcp`.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TelemetryEvent\"\n }\n }\n }\n },\n \"responses\": {\n \"204\": {\n \"description\": \"Telemetry event accepted\"\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/billing\": {\n \"get\": {\n \"tags\": [\"Billing\"],\n \"summary\": \"Get billing details\",\n \"description\": \"Get billing details for a project, or null when none are set. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Billing details (or null when unset)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/BillingDetailsResponse\"\n },\n {\n \"type\": [\"object\", \"null\"]\n }\n ]\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"put\": {\n \"tags\": [\"Billing\"],\n \"summary\": \"Upsert billing details\",\n \"description\": \"Create or update billing details for a project. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpsertBillingDetailsRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Billing details saved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/BillingDetailsResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get deployment detail\",\n \"description\": \"Get deployment detail. Accepts a dep_ID or a slug. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment detail\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"patch\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Update deployment\",\n \"description\": \"Update a deployment's label, or stop/resume it. Stop and resume require admin role; label updates require member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\"stop\", \"resume\"]\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Deployment updated\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/UpdateDeploymentResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Deployment state changed concurrently\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"delete\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Delete deployment\",\n \"description\": \"Tear down and soft-delete a deployment. Idempotent. Requires owner role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Deployment deleted (or already absent)\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/publish\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Publish deployment version\",\n \"description\": \"Push a new version to a deployment, either from an existing flow setting or from a direct config upload. Bundles in-process and transitions the deployment to `deploying`. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Optional client key to make publishing idempotent.\"\n },\n \"required\": false,\n \"description\": \"Optional client key to make publishing idempotent.\",\n \"name\": \"idempotency-key\",\n \"in\": \"header\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\"flow\"]\n },\n \"flowId\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\"\n },\n \"flowSettingsName\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"required\": [\"source\", \"flowId\", \"flowSettingsName\"]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\"config\"]\n },\n \"config\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n },\n \"required\": [\"source\", \"config\"]\n }\n ]\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Version published (bundling/deploying)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PublishVersionResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Publish already in progress\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited or concurrent deploy limit\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"Build service unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/stream\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Stream deployment status (SSE)\",\n \"description\": \"Server-Sent Events (`text/event-stream`) stream of a deployment's live status. Emits named events: `status` (a snapshot payload, schema below), `done` (terminal, no body), and `timeout`. The CLI consumes this with a raw fetch while waiting for a deploy to finish. Requires member role. The schema documents the JSON `data:` of a `status` event; `errorCode`/`errorMessage` carry the persisted, redacted classification of a failed deploy.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"SSE stream; `status` event payload shape documented here.\",\n \"content\": {\n \"text/event-stream\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentStreamStatusEvent\"\n }\n },\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentStreamStatusEvent\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/versions\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List deployment versions\",\n \"description\": \"List the version history for a deployment, paginated. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Version history\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListDeploymentVersionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/versions/current/content\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Get current deployed content\",\n \"description\": \"Get the active deployed per-setting content for a deployment, used to diff changes since deploy. Content is masked and display-only; every field is null when there is no deployed baseline. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deployed content (or a null baseline)\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeployedContentResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Rate limited\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/heartbeats\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List deployment heartbeats\",\n \"description\": \"List heartbeat records for a deployment with optional from/to time-range filtering and pagination. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ISO start of the time range.\"\n },\n \"required\": false,\n \"description\": \"ISO start of the time range.\",\n \"name\": \"from\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"ISO end of the time range.\"\n },\n \"required\": false,\n \"description\": \"ISO end of the time range.\",\n \"name\": \"to\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 1000\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Heartbeat history\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListHeartbeatsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/rotate-ingest-token\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Rotate ingest token\",\n \"description\": \"Rotate the ingest token for a deployment. Owner-only. No grace window: the previous token is immediately invalidated and the new token is returned once.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"New ingest token\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RotateIngestTokenResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/deployments/{deploymentId}/usage\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Deployment usage\",\n \"description\": \"Aggregate usage summary plus bucketed chart data for a deployment over the requested period. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dep_abc123\"\n },\n \"required\": true,\n \"name\": \"deploymentId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"enum\": [\"1h\", \"24h\", \"7d\", \"30d\"],\n \"description\": \"Time window for the usage summary.\"\n },\n \"required\": false,\n \"description\": \"Time window for the usage summary.\",\n \"name\": \"period\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Usage summary and chart buckets\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeploymentUsageResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/custom-domains\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List custom domains\",\n \"description\": \"List custom domains attached to any deployment of this flow. Requires member role and the customDomains feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Custom domains for the flow\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListCustomDomainsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Attach custom domain\",\n \"description\": \"Attach a custom domain to the flow's latest server deployment, or to an explicit deployment supplied in the body. Requires member role and the customDomains feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateCustomDomainRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"Custom domain attached\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CustomDomain\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"409\": {\n \"description\": \"Conflict\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/custom-domains/{domainId}\": {\n \"delete\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Detach custom domain\",\n \"description\": \"Detach a custom domain from its deployment and remove the Scaleway record. Idempotent: a missing domain still returns 204.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"dom_abc123\"\n },\n \"required\": true,\n \"name\": \"domainId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"Custom domain detached\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/flows/{flowId}/settings/{settingsId}/deploy-token\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Self-hosted deploy-token status\",\n \"description\": \"Report whether a self-hosted deploy token exists for this config, plus the deployment health summary when present. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Deploy-token status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/DeployTokenStatusResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Mint self-hosted deploy token\",\n \"description\": \"Create a self-hosted deployment (if none exists) and mint a flow+deployment-bound runner token. Admin-only. The raw token is returned once and never stored in plaintext.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^flow_[a-zA-Z0-9_-]+$\",\n \"example\": \"flow_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"flowId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^cfg_[a-zA-Z0-9_-]+$\",\n \"example\": \"cfg_a1b2c3d4\"\n },\n \"required\": true,\n \"name\": \"settingsId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"201\": {\n \"description\": \"Deploy token minted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateDeployTokenResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/entitlements\": {\n \"get\": {\n \"tags\": [\"Projects\"],\n \"summary\": \"Resolved entitlements\",\n \"description\": \"Return resolved feature entitlements for the authenticated user and project. Used by CLI/API clients; the web UI uses SSR-resolved entitlements. Requires viewer role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Resolved entitlements\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/EntitlementsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/settings/llm\": {\n \"get\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Active LLM provider\",\n \"description\": \"Report which LLM provider is currently active for the project and where billing is sourced. Never returns the apiKey. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Active LLM provider status\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/LlmConfigStatusResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"503\": {\n \"description\": \"No platform LLM provider configured\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/LlmConfigStatusResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Settings\"],\n \"summary\": \"Set LLM provider\",\n \"description\": \"Set or clear the project LLM provider override. Admin-only, gated by the chat feature. The apiKey is write-only: it is encrypted and never returned.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SetLlmConfigRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"LLM config saved or cleared\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SetLlmConfigResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/chat/sessions\": {\n \"get\": {\n \"tags\": [\"Chat\"],\n \"summary\": \"List chat sessions\",\n \"description\": \"List the caller's recent chat sessions for a project, ordered by last activity. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100\n },\n \"required\": false,\n \"name\": \"limit\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": [\"integer\", \"null\"],\n \"minimum\": 0\n },\n \"required\": false,\n \"name\": \"offset\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Chat session list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListChatSessionsResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/chat/sessions/{sessionId}\": {\n \"get\": {\n \"tags\": [\"Chat\"],\n \"summary\": \"Get chat session\",\n \"description\": \"Return a chat session and its full message history when the caller owns it. Foreign or unknown sessions return 404 (never 403) so existence is not leaked. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"sess_abc123\"\n },\n \"required\": true,\n \"name\": \"sessionId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Chat session with messages\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ChatSessionDetailResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/chat/elicit\": {\n \"post\": {\n \"tags\": [\"Chat\"],\n \"summary\": \"Answer elicitation prompt\",\n \"description\": \"Answer a pending MCP elicitation prompt (accept, decline, or cancel), unblocking the waiting tool invocation. Requires member role and the chat feature.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ElicitRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Elicitation resolved\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ElicitResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/mcp/tokens\": {\n \"get\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"List MCP tokens\",\n \"description\": \"List the authenticated user's personal MCP tokens. No secret material is returned.\",\n \"responses\": {\n \"200\": {\n \"description\": \"MCP token list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListMcpTokensResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n },\n \"post\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Issue MCP token\",\n \"description\": \"Issue a personal MCP token. The raw token is returned exactly once and is never retrievable afterwards.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateMcpTokenRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"MCP token issued\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateMcpTokenResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/mcp/tokens/{tokenId}\": {\n \"delete\": {\n \"tags\": [\"Tokens\"],\n \"summary\": \"Revoke MCP token\",\n \"description\": \"Revoke a personal MCP token by id.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"example\": \"mcptok_abc123\"\n },\n \"required\": true,\n \"name\": \"tokenId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"204\": {\n \"description\": \"MCP token revoked\"\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/runners\": {\n \"get\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"List runners (deprecated)\",\n \"description\": \"Deprecated: runners migrated to deployments (origin=self-hosted). Always returns an empty list for backward compatibility. Requires member role.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Empty runner list\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ListRunnersResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"403\": {\n \"description\": \"Forbidden\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/projects/{projectId}/runners/heartbeat\": {\n \"post\": {\n \"tags\": [\"Deployments\"],\n \"summary\": \"Runner heartbeat\",\n \"description\": \"Accept a self-hosted runner heartbeat with usage counters. Authenticated by a flow+deployment-bound runner token. Updates deployment liveness and records an immutable usage row.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^proj_[a-zA-Z0-9_-]+$\",\n \"example\": \"proj_x7y8z9\"\n },\n \"required\": true,\n \"name\": \"projectId\",\n \"in\": \"path\"\n }\n ],\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/HeartbeatRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Heartbeat accepted\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RunnerHeartbeatResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"401\": {\n \"description\": \"Unauthorized\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"404\": {\n \"description\": \"Not found\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/packages\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"Package catalog\",\n \"description\": \"Resolved `@walkeros/*` package catalog for the add-step picker, optionally filtered by type and platform.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Filter by package type.\"\n },\n \"required\": false,\n \"description\": \"Filter by package type.\",\n \"name\": \"type\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Filter by platform.\"\n },\n \"required\": false,\n \"description\": \"Filter by platform.\",\n \"name\": \"platform\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Package catalog\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PackageCatalogResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Package catalog unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/packages/search\": {\n \"get\": {\n \"tags\": [\"System\"],\n \"summary\": \"Search packages\",\n \"description\": \"Search the npm registry for `@walkeros/*` packages. An empty query returns popular scope packages.\",\n \"parameters\": [\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Search query.\"\n },\n \"required\": false,\n \"description\": \"Search query.\",\n \"name\": \"q\",\n \"in\": \"query\"\n },\n {\n \"schema\": {\n \"type\": \"string\",\n \"description\": \"Filter by platform.\"\n },\n \"required\": false,\n \"description\": \"Filter by platform.\",\n \"name\": \"platform\",\n \"in\": \"query\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"Search results\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/PackageSearchResponse\"\n }\n }\n }\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n },\n \"502\": {\n \"description\": \"Package search unavailable\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n },\n \"/api/observe/timing\": {\n \"post\": {\n \"tags\": [\"Observe\"],\n \"summary\": \"Report connect timing\",\n \"description\": \"Fire-and-forget beacon for client-side connect timing SLIs. No auth required; carries no secrets. Returns 204.\",\n \"requestBody\": {\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ObserveTimingRequest\"\n }\n }\n }\n },\n \"responses\": {\n \"204\": {\n \"description\": \"Timing recorded\"\n },\n \"400\": {\n \"description\": \"Validation error\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ErrorResponse\"\n }\n }\n }\n }\n }\n }\n }\n },\n \"webhooks\": {}\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\n\nconst TITLE = 'Authentication';\nconst DESCRIPTION =\n 'Manage walkerOS authentication. Check login status, log in via device code flow, or log out. ' +\n 'No terminal or browser required, the MCP client handles the authorization URL.';\n\nconst inputSchema = {\n action: z\n .enum(['status', 'login', 'logout'])\n .describe('Authentication action to perform'),\n deviceCode: z\n .string()\n .optional()\n .describe(\n 'Device code from a previous pending login attempt. Provide to resume polling without requesting a new code.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createAuthToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'auth',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => authHandlerBody(client, input),\n };\n}\n\nasync function authHandlerBody(client: ToolClient, input: unknown) {\n const { action, deviceCode } = (input ?? {}) as {\n action?: 'status' | 'login' | 'logout';\n deviceCode?: string;\n };\n try {\n switch (action) {\n case 'status': {\n const resolved = client.resolveToken();\n if (!resolved) {\n return mcpResult(\n { authenticated: false },\n { next: ['Use auth with action \"login\" to authenticate'] },\n );\n }\n const user = await client.whoami();\n return mcpResult({\n authenticated: true,\n ...(user as Record<string, unknown>),\n });\n }\n\n case 'login': {\n if (deviceCode) {\n const pollResult = await client.pollForToken(deviceCode, {\n timeoutMs: 60000,\n });\n\n if (pollResult.success) {\n return mcpResult(\n { authenticated: true, email: pollResult.email },\n {\n next: [\n 'Use project_manage with action \"list\" to see your projects',\n ],\n },\n );\n }\n\n if (pollResult.status === 'pending') {\n return mcpResult({\n authenticated: false,\n status: 'pending',\n message: 'Still waiting for authorization. Try again shortly.',\n deviceCode,\n });\n }\n\n return mcpError(\n new Error(pollResult.error || 'Authorization failed'),\n );\n }\n\n const code = await client.requestDeviceCode();\n const loginUrl = code.verificationUriComplete || code.verificationUri;\n\n return mcpResult({\n authenticated: false,\n status: 'awaiting_authorization',\n loginUrl,\n message: `Open this link to authorize: ${loginUrl}`,\n deviceCode: code.deviceCode,\n });\n }\n\n case 'logout': {\n const deleted = client.deleteConfig();\n const hadEnvToken =\n typeof process.env.WALKEROS_TOKEN === 'string' &&\n process.env.WALKEROS_TOKEN.length > 0;\n delete process.env.WALKEROS_TOKEN;\n let message: string;\n if (deleted && hadEnvToken) {\n message =\n 'Logged out. Config removed and WALKEROS_TOKEN cleared from process environment.';\n } else if (deleted) {\n message = 'Logged out and config removed.';\n } else if (hadEnvToken) {\n message =\n 'No config found. WALKEROS_TOKEN cleared from process environment.';\n } else {\n message = 'No config found, already logged out.';\n }\n return mcpResult({\n loggedOut: true,\n message,\n });\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: status, login, logout`,\n );\n }\n } catch (error) {\n return mcpError(error);\n }\n}\n\nexport function registerAuthTool(server: McpServer, client: ToolClient) {\n const spec = createAuthToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport { wrapUserData } from '../user-data.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n validateActionInput,\n assertParam,\n PROJECT_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\n\nfunction wrapProjectName<T extends { name?: string }>(p: T): T {\n return p.name !== undefined ? { ...p, name: wrapUserData(p.name) } : p;\n}\n\nconst TITLE = 'Project Management';\nconst DESCRIPTION =\n 'Manage walkerOS projects. List, create, update, delete projects, or set a default project for CLI operations.';\n\nconst inputSchema = {\n action: z\n .enum(['list', 'get', 'create', 'update', 'delete', 'set_default'])\n .describe('Project management action to perform'),\n projectId: z\n .string()\n .optional()\n .describe('Required for get, update, delete, set_default.'),\n name: z\n .string()\n .optional()\n .describe(\n 'Required for create and update (update also requires projectId).',\n ),\n cursor: z\n .string()\n .optional()\n .describe(\n 'Pagination cursor from a previous list response. Only used with the list action.',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .optional()\n .describe('Max items per page (1-100). Only used with the list action.'),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createProjectManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'project_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => projectManageHandlerBody(client, input),\n };\n}\n\nasync function projectManageHandlerBody(client: ToolClient, input: unknown) {\n const { action, projectId, name, cursor, limit } = (input ?? {}) as {\n action?: 'list' | 'get' | 'create' | 'update' | 'delete' | 'set_default';\n projectId?: string;\n name?: string;\n cursor?: string;\n limit?: number;\n };\n const validationError = validateActionInput(\n 'project_manage',\n action ?? '',\n { projectId, name },\n PROJECT_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n switch (action) {\n case 'list': {\n const projects = (await client.listProjects({ cursor, limit })) as\n | unknown[]\n | { projects?: unknown[] };\n const items = Array.isArray(projects)\n ? projects\n : projects?.projects || [];\n if (items.length === 0) {\n return mcpResult(\n { projects: [] },\n {\n next: [\n 'Use project_manage with action \"create\" to create your first project',\n 'Use project_manage with action \"set_default\" after creating to set it as default',\n ],\n },\n );\n }\n const typedItems = items as Array<{ name?: string }>;\n const safe = Array.isArray(projects)\n ? typedItems.map(wrapProjectName)\n : { ...projects, projects: typedItems.map(wrapProjectName) };\n return mcpResult(safe);\n }\n\n case 'get': {\n const project = await client.getProject({ projectId });\n return mcpResult(wrapProjectName(project as { name?: string }));\n }\n\n case 'create': {\n assertParam(name, 'name', 'create');\n const created = await client.createProject({ name });\n return mcpResult(wrapProjectName(created as { name?: string }), {\n next: [\n 'Use project_manage with action \"set_default\" to make this your active project',\n ],\n });\n }\n\n case 'update': {\n assertParam(name, 'name', 'update');\n const updated = await client.updateProject({ projectId, name });\n return mcpResult(wrapProjectName(updated as { name?: string }));\n }\n\n case 'delete': {\n const deleted = await client.deleteProject({ projectId });\n return mcpResult(deleted);\n }\n\n case 'set_default': {\n assertParam(projectId, 'projectId', 'set_default');\n client.setDefaultProject(projectId);\n return mcpResult(\n { defaultProjectId: projectId },\n {\n next: [\n 'Use flow_manage with action \"list\" to see flows in this project',\n ],\n },\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: list, get, create, update, delete, set_default`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerProjectManageTool(\n server: McpServer,\n client: ToolClient,\n) {\n const spec = createProjectManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","export interface ActionRule {\n /** Params that must each be present for this action. */\n required?: string[];\n /** Param groups where at least one of each group must be present. */\n oneOf?: string[][];\n /** Optional discovery hint appended to the error (e.g. 'Use action \"list\" ...'). */\n hint?: string;\n}\n\nexport type ActionRequirementMap = Record<string, ActionRule>;\n\n/**\n * Returns a canonical error message string when `input` is missing a\n * required (or one-of) param for `action`, otherwise null. The message is\n * uniform across tools so error quality cannot drift between tools.\n * Required params are checked (and reported) before oneOf groups.\n */\nexport function validateActionInput(\n toolName: string,\n action: string,\n input: Record<string, unknown>,\n map: ActionRequirementMap,\n): string | null {\n const rule = map[action];\n if (!rule) return null;\n for (const param of rule.required ?? []) {\n if (\n input[param] === undefined ||\n input[param] === null ||\n input[param] === ''\n ) {\n return missing(toolName, action, param, rule.hint);\n }\n }\n for (const group of rule.oneOf ?? []) {\n const satisfied = group.some(\n (p) => input[p] !== undefined && input[p] !== null && input[p] !== '',\n );\n if (!satisfied) {\n return `${toolName} action \"${action}\" requires one of: ${group.join(', ')}.${rule.hint ? ' ' + rule.hint : ''}`;\n }\n }\n return null;\n}\n\n/**\n * Narrows a param that the action's requirement map has already validated as\n * present, so typed client calls accept it without re-checking. The companion\n * to `validateActionInput`: callers run that first to produce a friendly error,\n * then use this assertion at the use site to recover the non-nullable type.\n * Because validation guarantees presence, this never throws in practice; the\n * throw exists only to satisfy the assertion-signature contract. The thrown\n * message mirrors the `missing()` form (\"<param> is required for <action> action.\").\n */\nexport function assertParam(\n value: string | undefined,\n param: string,\n action: string,\n): asserts value is string {\n if (value === undefined || value === null || value === '')\n throw new Error(`${param} is required for ${action} action.`);\n}\n\nfunction missing(\n tool: string,\n action: string,\n param: string,\n hint?: string,\n): string {\n // Keep the substring \"<param> is required\" so existing assertions/docs that\n // string-match it stay green.\n return `${param} is required for ${action} action.${hint ? ' ' + hint : ''}`;\n}\n\nexport const FLOW_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n get: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n update: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n delete: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n duplicate: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n create: { required: ['name'] },\n preview_list: {\n required: ['flowId'],\n hint: 'Use action \"list\" to see available flows.',\n },\n preview_get: { required: ['flowId', 'previewId'] },\n preview_create: {\n required: ['flowId'],\n oneOf: [['flowName', 'flowSettingsId']],\n },\n preview_delete: { required: ['flowId', 'previewId'] },\n};\n\nexport const DEPLOY_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n deploy: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n get: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n delete: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n};\n\nexport const SECRET_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n list: {\n required: ['flowId'],\n hint: 'Use flow_manage action \"list\" to see available flows.',\n },\n set: {\n required: ['flowId', 'name', 'value'],\n hint: 'Use action \"list\" to see existing secret names for this flow.',\n },\n update: {\n required: ['flowId', 'secretId', 'value'],\n hint: 'Use action \"list\" to find the secretId.',\n },\n delete: {\n required: ['flowId', 'secretId'],\n hint: 'Use action \"list\" to find the secretId.',\n },\n};\n\nexport const PROJECT_MANAGE_REQUIREMENTS: ActionRequirementMap = {\n get: {\n required: ['projectId'],\n hint: 'Use action \"list\" to see available projects.',\n },\n update: {\n required: ['projectId', 'name'],\n hint: 'Use action \"list\" to see available projects.',\n },\n delete: {\n required: ['projectId'],\n hint: 'Use action \"list\" to see available projects.',\n },\n set_default: {\n required: ['projectId'],\n hint: 'Use action \"list\" to see available projects.',\n },\n create: { required: ['name'] },\n};\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport {\n wrapUserData,\n redactNestedStrings,\n keepStructural,\n} from '../user-data.js';\nimport { flowCanvasResult } from '../ui-parts.js';\n\n/** Peek at a Flow.Json root (v4) and decide whether the bubble should render\n * as web-flavoured or server-flavoured. The platform is recorded on\n * `flows[name].config.platform`. We pick the first flow's platform; if no\n * platform is set we fall back to `'server'` so the chat bubble can still\n * render even if the user is mid-edit. */\nfunction pickPlatform(content: unknown): 'web' | 'server' {\n if (content && typeof content === 'object') {\n const flows = (content as { flows?: unknown }).flows;\n if (flows && typeof flows === 'object') {\n for (const flow of Object.values(flows as Record<string, unknown>)) {\n if (flow && typeof flow === 'object') {\n const config = (flow as { config?: unknown }).config;\n if (config && typeof config === 'object') {\n const platform = (config as { platform?: unknown }).platform;\n if (platform === 'web' || platform === 'server') return platform;\n }\n }\n }\n }\n }\n return 'server';\n}\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n validateActionInput,\n assertParam,\n FLOW_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\nimport {\n NO_DEFAULT_PROJECT_ERROR,\n resolveDefaultProject,\n} from './project-context.js';\n\nfunction safeSummary<T extends { name?: string }>(flow: T): T {\n return flow.name !== undefined\n ? { ...flow, name: wrapUserData(flow.name) }\n : flow;\n}\n\nfunction safeDetail<T extends { name?: string; config?: unknown }>(flow: T): T {\n const withName =\n flow.name !== undefined\n ? { ...flow, name: wrapUserData(flow.name) }\n : { ...flow };\n if (flow.config !== undefined) {\n (withName as { config?: unknown }).config = redactNestedStrings(\n flow.config,\n { skip: keepStructural },\n );\n }\n return withName as T;\n}\n\nconst TITLE = 'Flow Management';\nconst DESCRIPTION =\n 'Manage walkerOS flows and their previews. List/get/create/update/delete/duplicate flows, or create/inspect/delete preview bundles for testing flow changes on live sites.';\n\nconst inputSchema = {\n action: z\n .enum([\n 'list',\n 'get',\n 'create',\n 'update',\n 'delete',\n 'duplicate',\n 'preview_list',\n 'preview_get',\n 'preview_create',\n 'preview_delete',\n ])\n .describe('Flow management action to perform'),\n flowId: z\n .string()\n .optional()\n .describe(\n 'Flow ID (flow_...) or config ID (cfg_...). Required for get, update, delete, duplicate, preview_list, preview_get, preview_create, preview_delete.',\n ),\n projectId: z\n .string()\n .optional()\n .describe(\n 'Project ID. Optional filter for list (omit to list all projects). Required for create if no default project set.',\n ),\n name: z\n .string()\n .optional()\n .describe(\n 'Flow name. Required for create. Optional for update (to rename) and duplicate.',\n ),\n content: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Flow.Json content. Used for create and update.'),\n patch: z\n .boolean()\n .optional()\n .describe(\n 'Merge-patch for update (default true). When true, only provided fields are updated.',\n ),\n fields: z\n .array(z.string())\n .optional()\n .describe('Dot-path selectors for get to return only specific fields.'),\n sort: z\n .enum(['name', 'updated_at', 'created_at'])\n .optional()\n .describe('Sort field for list.'),\n order: z.enum(['asc', 'desc']).optional().describe('Sort order for list.'),\n includeDeleted: z\n .boolean()\n .optional()\n .describe('Include soft-deleted flows in list results.'),\n cursor: z\n .string()\n .optional()\n .describe(\n 'Pagination cursor from a previous list response. Only used with the list action.',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .optional()\n .describe('Max items per page (1-100). Only used with the list action.'),\n previewId: z\n .string()\n .optional()\n .describe(\n 'Preview ID (prv_...). Required for preview_get and preview_delete (both also require flowId).',\n ),\n flowName: z\n .string()\n .optional()\n .describe(\n 'Used by preview_create — provide one of flowName or flowSettingsId (preview_create also requires flowId).',\n ),\n flowSettingsId: z\n .string()\n .optional()\n .describe(\n 'Used by preview_create — provide one of flowName or flowSettingsId (preview_create also requires flowId).',\n ),\n source: z\n .discriminatedUnion('kind', [\n z.object({ kind: z.literal('draft') }),\n z.object({\n kind: z.literal('deployment-version'),\n deploymentVersionId: z.string(),\n }),\n ])\n .optional()\n .describe(\n \"What the preview should run, for preview_create: the flow's draft (default) or a deployed version's stored config (kind 'deployment-version' with its deploymentVersionId).\",\n ),\n siteUrl: z\n .string()\n .optional()\n .describe(\n 'Optional site URL for preview_create. When provided, the response includes full activationUrl and deactivationUrl the user can click.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createFlowManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'flow_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => flowManageHandlerBody(client, input),\n };\n}\n\nasync function flowManageHandlerBody(client: ToolClient, input: unknown) {\n const {\n action,\n flowId,\n projectId,\n name,\n content,\n patch,\n fields,\n sort,\n order,\n includeDeleted,\n cursor,\n limit,\n previewId,\n flowName,\n flowSettingsId,\n source,\n siteUrl,\n } = (input ?? {}) as {\n action?:\n | 'list'\n | 'get'\n | 'create'\n | 'update'\n | 'delete'\n | 'duplicate'\n | 'preview_list'\n | 'preview_get'\n | 'preview_create'\n | 'preview_delete';\n flowId?: string;\n projectId?: string;\n name?: string;\n content?: Record<string, unknown>;\n patch?: boolean;\n fields?: string[];\n sort?: 'name' | 'updated_at' | 'created_at';\n order?: 'asc' | 'desc';\n includeDeleted?: boolean;\n cursor?: string;\n limit?: number;\n previewId?: string;\n flowName?: string;\n flowSettingsId?: string;\n source?:\n | { kind: 'draft' }\n | { kind: 'deployment-version'; deploymentVersionId: string };\n siteUrl?: string;\n };\n const validationError = validateActionInput(\n 'flow_manage',\n action ?? '',\n { flowId, projectId, name, previewId, flowName, flowSettingsId },\n FLOW_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n switch (action) {\n case 'list': {\n if (projectId) {\n const data = await client.listFlows({\n projectId,\n sort,\n order,\n includeDeleted,\n cursor,\n limit,\n });\n const dataObj = data as { flows?: Array<{ name?: string }> };\n const flows = dataObj.flows;\n const safe = Array.isArray(flows)\n ? { ...dataObj, flows: flows.map(safeSummary) }\n : data;\n return mcpResult(safe);\n }\n const data = await client.listAllFlows({\n sort,\n order,\n includeDeleted,\n cursor,\n limit,\n });\n const safe = Array.isArray(data)\n ? (data as Array<{ name?: string }>).map(safeSummary)\n : data;\n return mcpResult(\n { projects: safe },\n {\n next: [\n 'Use flow_manage with action \"get\" and a flowId to inspect a specific flow',\n 'Use flow_load to open a flow for editing',\n ],\n },\n );\n }\n\n case 'get': {\n assertParam(flowId, 'flowId', 'get');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const flow = await client.getFlow({\n flowId,\n projectId: resolvedProjectId,\n fields,\n });\n const safe = safeDetail(\n flow as {\n id?: string;\n name?: string;\n config?: Record<string, unknown>;\n },\n );\n return flowCanvasResult({\n flowId: safe.id,\n configName: safe.name ?? 'default',\n platform: pickPlatform(safe.config),\n flowConfig: safe.config ?? {},\n suggestions: [\n {\n label: 'Validate this flow',\n prompt: `Validate flow ${safe.id}`,\n autoSend: true,\n },\n {\n label: 'Add a destination',\n prompt: `Help me add a destination to flow ${safe.id}`,\n },\n ],\n });\n }\n\n case 'create': {\n assertParam(name, 'name', 'create');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const created = await client.createFlow({\n name,\n content: content ?? {},\n projectId: resolvedProjectId,\n });\n const safeCreated = safeDetail(\n created as {\n id?: string;\n name?: string;\n config?: Record<string, unknown>;\n },\n );\n return flowCanvasResult({\n flowId: safeCreated.id,\n configName: safeCreated.name ?? 'default',\n platform: pickPlatform(safeCreated.config),\n flowConfig: safeCreated.config ?? {},\n suggestions: [\n {\n label: 'Validate this flow',\n prompt: `Validate flow ${safeCreated.id}`,\n autoSend: true,\n },\n {\n label: 'Deploy it',\n prompt: `Deploy flow ${safeCreated.id}`,\n },\n ],\n });\n }\n\n case 'update': {\n assertParam(flowId, 'flowId', 'update');\n const updated = await client.updateFlow({\n flowId,\n projectId,\n name,\n content,\n mergePatch: patch ?? true,\n });\n const safeUpdated = safeDetail(\n updated as {\n id?: string;\n name?: string;\n config?: Record<string, unknown>;\n },\n );\n return flowCanvasResult({\n flowId: safeUpdated.id,\n configName: safeUpdated.name ?? 'default',\n platform: pickPlatform(safeUpdated.config),\n flowConfig: safeUpdated.config ?? {},\n suggestions: [\n {\n label: 'Validate this flow',\n prompt: `Validate flow ${safeUpdated.id}`,\n autoSend: true,\n },\n {\n label: 'Deploy it',\n prompt: `Deploy flow ${safeUpdated.id}`,\n },\n ],\n });\n }\n\n case 'delete': {\n assertParam(flowId, 'flowId', 'delete');\n const deleted = await client.deleteFlow({ flowId, projectId });\n return mcpResult(deleted);\n }\n\n case 'duplicate': {\n assertParam(flowId, 'flowId', 'duplicate');\n const duplicated = await client.duplicateFlow({\n flowId,\n name,\n projectId,\n });\n return mcpResult(\n safeDetail(duplicated as { name?: string; config?: unknown }),\n );\n }\n\n case 'preview_list': {\n assertParam(flowId, 'flowId', 'preview_list');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const data = await client.listPreviews({\n projectId: resolvedProjectId,\n flowId,\n });\n return mcpResult(data);\n }\n\n case 'preview_get': {\n assertParam(flowId, 'flowId', 'preview_get');\n assertParam(previewId, 'previewId', 'preview_get');\n const data = await client.getPreview({\n projectId,\n flowId,\n previewId,\n });\n return mcpResult(data);\n }\n\n case 'preview_create': {\n assertParam(flowId, 'flowId', 'preview_create');\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId) {\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n }\n const preview = await client.createPreview({\n projectId: resolvedProjectId,\n flowId,\n flowName,\n flowSettingsId,\n ...(source ? { source } : {}),\n });\n const typedPreview = preview as {\n id: string;\n token: string;\n activationUrl: string;\n bundleUrl: string;\n createdBy: string;\n createdAt: string;\n [key: string]: unknown;\n };\n const enriched: Record<string, unknown> = {\n ...typedPreview,\n activationParam: typedPreview.activationUrl,\n };\n if (siteUrl) {\n const on = new URL(siteUrl);\n on.searchParams.set('elbPreview', typedPreview.token);\n enriched.activationUrl = on.toString();\n\n const off = new URL(siteUrl);\n off.searchParams.set('elbPreview', 'off');\n enriched.deactivationUrl = off.toString();\n } else {\n delete enriched.activationUrl;\n }\n return mcpResult(enriched, {\n next: siteUrl\n ? [\n 'Open activationUrl to activate preview mode; open deactivationUrl to exit.',\n ]\n : [\n 'Append activationParam to any URL on your site to activate preview mode.',\n ],\n });\n }\n\n case 'preview_delete': {\n assertParam(flowId, 'flowId', 'preview_delete');\n assertParam(previewId, 'previewId', 'preview_delete');\n const data = await client.deletePreview({\n projectId,\n flowId,\n previewId,\n });\n // The app responds 204 No Content; an older CLI maps that to null.\n // mcpResult requires a record for structuredContent, so synthesize a\n // confirmation when the body is empty.\n return mcpResult(\n data && typeof data === 'object'\n ? data\n : { deleted: true, previewId },\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: list, get, create, update, delete, duplicate, preview_list, preview_get, preview_create, preview_delete`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerFlowManageTool(server: McpServer, client: ToolClient) {\n const spec = createFlowManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","export type SuggestionTile = {\n label: string;\n description?: string;\n prompt: string;\n autoSend?: boolean;\n};\n\nexport interface FlowCanvasPayload {\n flowId?: string;\n configName: string;\n platform: 'web' | 'server';\n flowConfig: Record<string, unknown>;\n highlight?: { stepAddress: string; reason: string };\n suggestions?: SuggestionTile[];\n}\n\nexport interface FlowCanvasToolResult extends FlowCanvasPayload {\n kind: 'flow-canvas';\n}\n\n/**\n * Tool-result helper that marks a response as renderable as a FlowCanvas.\n * The chat UI inspects `structuredContent.kind === 'flow-canvas'` and mounts\n * a `FlowCanvasBubble` instead of the generic JSON fallback. The `content[0]`\n * text is the same JSON stringified — the LLM sees a self-describing object.\n */\nexport function flowCanvasResult(payload: FlowCanvasPayload) {\n const structured: FlowCanvasToolResult = { kind: 'flow-canvas', ...payload };\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(structured, null, 2),\n },\n ],\n structuredContent: structured as unknown as Record<string, unknown> & {\n kind: 'flow-canvas';\n },\n };\n}\n\nexport function isFlowCanvasResult(v: unknown): v is FlowCanvasToolResult {\n return (\n typeof v === 'object' &&\n v !== null &&\n (v as { kind?: unknown }).kind === 'flow-canvas'\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\nimport { redactDisplayNames } from '../user-data.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n resolveDeploymentSlug,\n type DeploymentSummaryForResolver,\n type ListDeploymentsForResolver,\n} from './_resolvers.js';\nimport {\n validateActionInput,\n assertParam,\n DEPLOY_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\n\nconst TITLE = 'Deploy Management';\nconst DESCRIPTION =\n 'Deploy walkerOS flows and manage deployments. ' +\n 'deploy waits for the deployment to reach a terminal status by default (wait=true), with a 12-minute budget; pass wait=false to return immediately with the deployment id. ' +\n 'A finished deployment carries its status and, on failure, an errorMessage with the user-facing reason; use the get action to re-read it. ' +\n 'list supports cursor and limit for pagination. ' +\n 'delete removes an active deployment. ' +\n 'For get and delete pass flowId (required) plus optional slug to disambiguate when a flow has multiple active deployments. ' +\n \"If a flow has >=2 active deployments and no slug is supplied, the tool returns a MULTIPLE_DEPLOYMENTS error with a details[] list showing each deployment's slug, type, status, and updatedAt.\";\n\nconst inputSchema = {\n action: z\n .enum(['deploy', 'list', 'get', 'delete'])\n .describe('Deployment action to perform'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID. Optional; falls back to the default project.'),\n flowId: z.string().optional().describe('Required for deploy, get, delete.'),\n slug: z\n .string()\n .optional()\n .describe(\n 'Deployment slug. Optional disambiguator for get/delete when the flow has multiple active deployments.',\n ),\n type: z\n .enum(['web', 'server'])\n .optional()\n .describe('Deployment type filter for list.'),\n status: z.string().optional().describe('Status filter for list.'),\n wait: z\n .boolean()\n .optional()\n .describe(\n 'Wait for the deployment to reach a terminal status (default true), with a 12-minute budget. Set false to return the deployment id immediately. Only used with deploy action.',\n ),\n flowName: z\n .string()\n .optional()\n .describe(\n 'Flow name for multi-settings flows. Only used with deploy action.',\n ),\n cursor: z\n .string()\n .optional()\n .describe(\n 'Pagination cursor from a previous list response. Only used with the list action.',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .optional()\n .describe('Max items per page (1-100). Only used with the list action.'),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nfunction listForResolver(\n client: ToolClient,\n projectId: string | undefined,\n): ListDeploymentsForResolver {\n return async (q) => {\n const resp = (await client.listDeployments({\n projectId: projectId || q.projectId || undefined,\n flowId: q.flowId,\n })) as { deployments?: DeploymentSummaryForResolver[] };\n return resp.deployments ?? [];\n };\n}\n\nexport function createDeployManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'deploy_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => deployManageHandlerBody(client, input),\n };\n}\n\nasync function deployManageHandlerBody(client: ToolClient, input: unknown) {\n const {\n action,\n projectId,\n flowId,\n slug,\n type,\n status,\n wait,\n flowName,\n cursor,\n limit,\n } = (input ?? {}) as {\n action?: 'deploy' | 'list' | 'get' | 'delete';\n projectId?: string;\n flowId?: string;\n slug?: string;\n type?: 'web' | 'server';\n status?: string;\n wait?: boolean;\n flowName?: string;\n cursor?: string;\n limit?: number;\n };\n const validationError = validateActionInput(\n 'deploy_manage',\n action ?? '',\n { flowId, projectId },\n DEPLOY_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n switch (action) {\n case 'deploy': {\n assertParam(flowId, 'flowId', 'deploy');\n const result = await client.deploy({\n flowId,\n wait: wait ?? true,\n flowName,\n });\n return mcpResult(redactDisplayNames(result), {\n next: [\n 'Use deploy_manage with action \"get\" to check deployment status',\n ],\n });\n }\n\n case 'list': {\n const data = await client.listDeployments({\n projectId,\n flowId,\n type,\n status,\n cursor,\n limit,\n });\n return mcpResult(redactDisplayNames(data));\n }\n\n case 'get': {\n assertParam(flowId, 'flowId', 'get');\n const resolvedSlug = await resolveDeploymentSlug({\n projectId: projectId ?? '',\n flowId,\n slug,\n list: listForResolver(client, projectId),\n });\n const data = await client.getDeploymentBySlug({\n slug: resolvedSlug,\n projectId,\n });\n return mcpResult(redactDisplayNames(data));\n }\n\n case 'delete': {\n assertParam(flowId, 'flowId', 'delete');\n const resolvedSlug = await resolveDeploymentSlug({\n projectId: projectId ?? '',\n flowId,\n slug,\n list: listForResolver(client, projectId),\n });\n const data = await client.deleteDeployment({\n slug: resolvedSlug,\n projectId,\n });\n return mcpResult(\n redactDisplayNames({\n deleted: true,\n ...(data as Record<string, unknown>),\n }),\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: deploy, list, get, delete`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerDeployTool(server: McpServer, client: ToolClient) {\n const spec = createDeployManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","/**\n * Internal helpers shared by deploy_manage actions. Not re-exported from the\n * tools barrel; leading underscore marks this as tool-module internal.\n *\n * All collaborators are passed in as arguments so unit tests can inject fakes\n * without relying on jest.mock. This keeps resolver tests local to the\n * resolver signature and avoids shared-mock drift.\n */\n\n/**\n * The subset of a deployment summary the resolver needs to decide 0 / 1 / many\n * and to surface a useful MULTIPLE_DEPLOYMENTS error. Kept structurally\n * compatible with the CLI's DeploymentSummaryForFlow.\n */\nexport interface DeploymentSummaryForResolver {\n slug: string;\n type: string;\n status: string;\n updatedAt: string;\n}\n\n/**\n * Dependency injected list function. Must return only non-deleted deployments\n * for the given project + flow. The production wiring calls\n * `listDeployments({ projectId, flowId })` from `@walkeros/cli`, which hits\n * the app API; the API excludes soft-deleted rows.\n */\nexport type ListDeploymentsForResolver = (q: {\n projectId: string;\n flowId: string;\n}) => Promise<DeploymentSummaryForResolver[]>;\n\n/**\n * Error thrown when a flow has 0 matching deployments, or when a caller passed\n * a slug that does not match any active deployment of the flow. The MCP layer\n * translates this into an mcpError with `code: 'NOT_FOUND'`.\n */\nexport class DeploymentNotFoundError extends Error {\n readonly code = 'NOT_FOUND';\n constructor(message: string) {\n super(message);\n this.name = 'DeploymentNotFoundError';\n }\n}\n\n/**\n * Error thrown when a flow has >= 2 active deployments and the caller did not\n * pass a slug. Carries a `details[]` list so the MCP layer can surface the\n * options to the user.\n */\nexport class MultipleDeploymentsError extends Error {\n readonly code = 'MULTIPLE_DEPLOYMENTS';\n readonly details: DeploymentSummaryForResolver[];\n constructor(message: string, details: DeploymentSummaryForResolver[]) {\n super(message);\n this.name = 'MultipleDeploymentsError';\n this.details = details;\n }\n}\n\n/**\n * Resolve a concrete deployment slug for a (projectId, flowId, slug?) tuple.\n *\n * Behavior:\n * - 0 matches: throws DeploymentNotFoundError.\n * - 1 match, no slug: returns the single slug.\n * - slug provided and matches: returns the slug.\n * - slug provided and does not match: throws DeploymentNotFoundError.\n * - >= 2 matches, no slug: throws MultipleDeploymentsError with details[].\n */\nexport async function resolveDeploymentSlug(args: {\n projectId: string;\n flowId: string;\n slug?: string;\n list: ListDeploymentsForResolver;\n}): Promise<string> {\n const matches = await args.list({\n projectId: args.projectId,\n flowId: args.flowId,\n });\n\n if (matches.length === 0) {\n throw new DeploymentNotFoundError(\n `No deployments found for flow ${args.flowId}`,\n );\n }\n\n if (args.slug !== undefined) {\n const hit = matches.find((m) => m.slug === args.slug);\n if (!hit) {\n throw new DeploymentNotFoundError(\n `No deployment with slug ${args.slug} in flow ${args.flowId}`,\n );\n }\n return hit.slug;\n }\n\n if (matches.length === 1) {\n return matches[0].slug;\n }\n\n throw new MultipleDeploymentsError(\n `Flow ${args.flowId} has ${matches.length} active deployments; pass slug to disambiguate`,\n matches.map((m) => ({\n slug: m.slug,\n type: m.type,\n status: m.status,\n updatedAt: m.updatedAt,\n })),\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResult, mcpError } from '@walkeros/core';\nimport { isAuthError, AUTH_HINT } from '../types.js';\n\nimport type { ToolClient } from '../tool-client.js';\nimport type { ToolSpec } from '../tool-spec.js';\nimport {\n validateActionInput,\n assertParam,\n SECRET_MANAGE_REQUIREMENTS,\n} from '../action-requirements.js';\nimport {\n NO_DEFAULT_PROJECT_ERROR,\n resolveDefaultProject,\n} from './project-context.js';\n\nconst TITLE = 'Secret Management';\nconst DESCRIPTION =\n 'Manage a flow’s secrets (the $env.<NAME> values its steps reference at deploy/run time). ' +\n 'Actions: list (metadata only), set (create), update (rotate value), delete. ' +\n 'Secrets are write-mostly: values are encrypted at rest and are NEVER returned, listed, or echoed. ' +\n 'Reference a secret from a flow step as $env.<NAME>.';\n\nconst inputSchema = {\n action: z\n .enum(['list', 'set', 'update', 'delete'])\n .describe('Secret management action to perform'),\n projectId: z\n .string()\n .optional()\n .describe(\n 'Project ID. Optional: falls back to the default project when omitted.',\n ),\n flowId: z\n .string()\n .describe(\n 'Flow ID (flow_...) or config ID (cfg_...). Required for list, set, update, and delete: secrets are flow-scoped.',\n ),\n name: z\n .string()\n .regex(\n /^[A-Z_][A-Z0-9_]*$/,\n 'Secret name must be uppercase letters, digits, and underscores, starting with a letter or underscore.',\n )\n .optional()\n .describe(\n 'Secret name (UPPER_SNAKE_CASE). Required for set. Referenced in flows as $env.<NAME>.',\n ),\n value: z\n .string()\n .min(1)\n .max(65536)\n .optional()\n .describe(\n 'Secret value (1-65536 chars). Required for set and update. Write-only: never returned or logged.',\n ),\n secretId: z\n .string()\n .optional()\n .describe(\n 'Secret ID (sec_...). Required for update and delete. Use action \"list\" to find it.',\n ),\n};\n\nconst annotations = {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n} as const;\n\nexport function createSecretManageToolSpec(client: ToolClient): ToolSpec {\n return {\n name: 'secret_manage',\n title: TITLE,\n description: DESCRIPTION,\n inputSchema,\n annotations,\n handler: (input) => secretManageHandlerBody(client, input),\n };\n}\n\nasync function secretManageHandlerBody(client: ToolClient, input: unknown) {\n const { action, projectId, flowId, name, value, secretId } = (input ??\n {}) as {\n action?: 'list' | 'set' | 'update' | 'delete';\n projectId?: string;\n flowId?: string;\n name?: string;\n value?: string;\n secretId?: string;\n };\n const validationError = validateActionInput(\n 'secret_manage',\n action ?? '',\n { flowId, name, value, secretId },\n SECRET_MANAGE_REQUIREMENTS,\n );\n if (validationError) return mcpError(new Error(validationError));\n try {\n const resolvedProjectId = resolveDefaultProject(client, projectId);\n if (!resolvedProjectId)\n return mcpError(new Error(NO_DEFAULT_PROJECT_ERROR));\n\n switch (action) {\n case 'list': {\n assertParam(flowId, 'flowId', 'list');\n const data = await client.listSecrets({\n projectId: resolvedProjectId,\n flowId,\n });\n return mcpResult(data as Record<string, unknown>, {\n next: [\n 'Reference a listed secret from a flow step as $env.<NAME>.',\n 'Use action \"set\" to add a secret or \"update\" to rotate one.',\n ],\n });\n }\n\n case 'set': {\n assertParam(flowId, 'flowId', 'set');\n assertParam(name, 'name', 'set');\n assertParam(value, 'value', 'set');\n const created = await client.createSecret({\n projectId: resolvedProjectId,\n flowId,\n name,\n value,\n });\n // Response is metadata only; value is never echoed back.\n return mcpResult(created as Record<string, unknown>, {\n next: [`Reference it in this flow as $env.${name}.`],\n });\n }\n\n case 'update': {\n assertParam(flowId, 'flowId', 'update');\n assertParam(secretId, 'secretId', 'update');\n assertParam(value, 'value', 'update');\n const updated = await client.updateSecret({\n projectId: resolvedProjectId,\n flowId,\n secretId,\n value,\n });\n return mcpResult(updated as Record<string, unknown>);\n }\n\n case 'delete': {\n assertParam(flowId, 'flowId', 'delete');\n assertParam(secretId, 'secretId', 'delete');\n const deleted = await client.deleteSecret({\n projectId: resolvedProjectId,\n flowId,\n secretId,\n });\n return mcpResult(\n deleted && typeof deleted === 'object'\n ? (deleted as Record<string, unknown>)\n : { deleted: true, secretId },\n );\n }\n\n default:\n throw new Error(\n `Unknown action: ${action}. Use one of: list, set, update, delete`,\n );\n }\n } catch (error) {\n return mcpError(error, isAuthError(error) ? AUTH_HINT : undefined);\n }\n}\n\nexport function registerSecretManageTool(\n server: McpServer,\n client: ToolClient,\n) {\n const spec = createSecretManageToolSpec(client);\n server.registerTool(\n spec.name,\n {\n title: spec.title,\n description: spec.description,\n inputSchema: spec.inputSchema,\n annotations: spec.annotations,\n },\n // SDK infers handler type from inputSchema shape; ToolSpec.handler is the\n // type-erased (input: unknown) => Promise<unknown> form by design.\n spec.handler as Parameters<typeof server.registerTool>[2],\n );\n}\n","import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackageSchema } from '@walkeros/core';\nimport { fetchCatalog, getPackageBaseUrl } from '../catalog.js';\n\nexport function registerPackageSchemaResources(server: McpServer) {\n const template = new ResourceTemplate('walkeros://schema/{packageName}', {\n list: async () => {\n const { entries } = await fetchCatalog({ baseUrl: getPackageBaseUrl() });\n return {\n resources: entries.map((pkg) => ({\n uri: `walkeros://schema/${encodeURIComponent(pkg.name)}`,\n name: pkg.name,\n description: `Schema and examples for ${pkg.name}`,\n mimeType: 'application/json' as const,\n })),\n };\n },\n });\n\n server.registerResource(\n 'package-schema',\n template,\n {\n title: 'walkerOS Package Schema',\n description:\n 'JSON Schema and configuration examples for walkerOS packages',\n mimeType: 'application/json',\n },\n async (uri, { packageName }) => {\n const info = await fetchPackageSchema(\n decodeURIComponent(packageName as string),\n );\n return {\n contents: [\n {\n uri: uri.toString(),\n mimeType: 'application/json' as const,\n text: JSON.stringify(info, null, 2),\n },\n ],\n };\n },\n );\n}\n","/**\n * Reference resources — pure schema and structural data only.\n *\n * Design principle: resources are loaded into context and should contain\n * only schemas, type definitions, and structural references. Behavioral\n * guidance, tutorials, and step-by-step instructions belong in prompts.\n * Vendor-specific examples belong in packages (fetched via package_get).\n */\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { schemas } from '@walkeros/core/dev';\nimport openapiSpec from '@walkeros/cli/openapi/spec.json';\nimport { fetchCatalog, getPackageBaseUrl } from '../catalog.js';\n\nexport function registerReferenceResources(server: McpServer) {\n // Flow Schema reference (generated from Zod)\n server.resource(\n 'flow-schema',\n 'walkeros://reference/flow-schema',\n {\n description:\n 'JSON Schema for Flow.Json — the complete flow configuration structure',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/flow-schema',\n text: JSON.stringify(schemas.configJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Event Model reference (generated from Zod)\n server.resource(\n 'event-model',\n 'walkeros://reference/event-model',\n {\n description:\n 'JSON Schema for walkerOS events: entity-action naming, data, context, globals, user, consent',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/event-model',\n text: JSON.stringify(schemas.eventJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Mapping reference (generated from Zod — composite of related schemas)\n server.resource(\n 'mapping',\n 'walkeros://reference/mapping',\n {\n description:\n 'JSON Schemas for walkerOS mapping: rules, valueConfig, rule, policy',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/mapping',\n text: JSON.stringify(\n {\n rules: schemas.rulesJsonSchema,\n valueConfig: schemas.valueConfigJsonSchema,\n rule: schemas.ruleJsonSchema,\n policy: schemas.policyJsonSchema,\n },\n null,\n 2,\n ),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Consent reference (generated from Zod)\n server.resource(\n 'consent',\n 'walkeros://reference/consent',\n {\n description:\n 'JSON Schema for walkerOS consent: destination-level, rule-level, and field-level consent gating',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/consent',\n text: JSON.stringify(schemas.consentJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Variables reference (hand-maintained — runtime interpolation patterns not captured in Zod schemas)\n server.resource(\n 'variables',\n 'walkeros://reference/variables',\n {\n description:\n 'walkerOS variable patterns: $var, $env, $contract, $code, $store, $secret substitution',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/variables',\n text: JSON.stringify(\n {\n separatorRule:\n '`.` for names and paths; `:` for literal values or raw-code payloads.',\n patterns: {\n '$var.name':\n 'Variable reference. Whole-string preserves native type (object, array, scalar). Inline interpolation requires a scalar. Reusable fragments (mapping templates, matcher lists, consent objects) live in the variables block and are referenced by name.',\n '$var.name.deep.path':\n 'Deep-path access into a structured variable. Walks nested keys/indices. Whole-string preserves type at the leaf; inline still requires a scalar leaf.',\n '$env.NAME':\n 'Environment variable. $env.GA_ID reads process.env.GA_ID.',\n '$env.NAME:default':\n 'Environment variable with fallback. $env.GA_ID:G-DEFAULT (the `:` is the literal default separator).',\n '$contract.name':\n 'Contract reference. Links to a named contract for validation.',\n '$contract.name.path':\n 'Nested contract access. $contract.ecommerce.product.',\n '$code:(expr)':\n 'Inline JavaScript. $code:(event) => event.data.price * 100 (the `:` carries the raw-code payload).',\n '$store.storeId':\n 'Store injection in env values. Wires runtime store access.',\n '$secret.NAME':\n 'Secret injection. Resolved server-side at deploy/runtime.',\n },\n cascade: {\n priority: [\n '1. Step-level variables (highest)',\n '2. Flow-level variables',\n '3. Config-level variables (lowest)',\n ],\n example: {\n variables: {\n apiUrl: 'https://x.io',\n mapping: { id: 'data.id' },\n },\n flows: {\n production: {\n destinations: {\n api: {\n config: {\n url: '$var.apiUrl',\n idPath: '$var.mapping.id',\n },\n },\n },\n },\n },\n },\n },\n },\n null,\n 2,\n ),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Contract reference (generated from Zod)\n server.resource(\n 'contract',\n 'walkeros://reference/contract',\n {\n description:\n 'JSON Schema for walkerOS contracts: event schema validation with entity-action keying',\n mimeType: 'application/json',\n },\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/contract',\n text: JSON.stringify(schemas.contractJsonSchema, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Examples reference (loaded from @walkeros/cli at runtime)\n server.resource(\n 'examples',\n 'walkeros://reference/examples',\n {\n description:\n 'Complete flow config example: web + server flows, mapping, contracts, step examples',\n mimeType: 'application/json',\n },\n async () => {\n let example: string;\n try {\n const { readFileSync } = await import('fs');\n const { createRequire } = await import('module');\n const require = createRequire(import.meta.url);\n const examplePath =\n require.resolve('@walkeros/cli/examples/flow-complete.json');\n example = readFileSync(examplePath, 'utf-8');\n } catch {\n example = JSON.stringify({ error: 'Example not found' });\n }\n return {\n contents: [\n {\n uri: 'walkeros://reference/examples',\n text: example,\n mimeType: 'application/json',\n },\n ],\n };\n },\n );\n\n // OpenAPI 3.1 specification for the walkerOS cloud HTTP API\n server.resource(\n 'openapi',\n 'walkeros://reference/openapi',\n {\n description: 'walkerOS cloud API — OpenAPI 3.1 specification',\n mimeType: 'application/json',\n },\n // The spec is embedded at build time (import above), so it is always\n // available with no runtime module resolution. This serves the client's\n // bundled contract baseline, not the live backend's spec.\n async () => ({\n contents: [\n {\n uri: 'walkeros://reference/openapi',\n text: JSON.stringify(openapiSpec, null, 2),\n mimeType: 'application/json',\n },\n ],\n }),\n );\n\n // Packages catalog resource\n server.resource(\n 'packages',\n 'walkeros://reference/packages',\n {\n description:\n 'Complete walkerOS package catalog — all sources, destinations, transformers, and stores',\n mimeType: 'application/json',\n },\n async () => {\n const { entries } = await fetchCatalog({ baseUrl: getPackageBaseUrl() });\n return {\n contents: [\n {\n uri: 'walkeros://reference/packages',\n text: JSON.stringify(entries, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerAddStepPrompt(server: McpServer) {\n server.registerPrompt(\n 'add-step',\n {\n description:\n 'Add a source, destination, transformer, or store step to a flow configuration. ' +\n 'Guides through package selection, config scaffolding, and wiring.',\n argsSchema: {\n stepType: z\n .string()\n .optional()\n .describe(\n 'Type of step to add: source, destination, transformer, or store',\n ),\n flowPath: z\n .string()\n .optional()\n .describe('Path to the flow.json file to modify'),\n },\n },\n async ({ stepType, flowPath }) => ({\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: [\n `Help me add a ${stepType || 'new'} step to my flow${flowPath ? ` at ${flowPath}` : ''}.`,\n '',\n 'Follow these steps:',\n `1. ${stepType ? '' : 'Ask what type of step (source, destination, transformer, store). Then '}Use package_search to browse available packages for the selected type and platform.`,\n '2. Use package_get to read the package\\'s config schema (schemas.config contains the full config shape: base fields like consent/require/logger + package-specific settings). Use section=\"hints\" for additional guidance.',\n '3. Use package_get with section=\"examples\" to see working configuration examples.',\n '4. Scaffold the step config using the package schemas — include required settings with placeholder values.',\n '5. Wire the step into the flow: add to packages section (with version if needed), connect via next/before chains if needed.',\n '6. For destinations: configure mapping using nested entity → action keys. Event \"product add\" maps to `{ \"product\": { \"add\": { name: \"AddToCart\" } } }`. Use the setup-mapping prompt for guidance.',\n '7. For destinations: if consent-gated loading is needed, add require: [\"consent\"] to config. ' +\n 'Note: require delays initialization until a \"walker consent\" event fires. ' +\n 'When simulating with flow_simulate, destinations with require will error \"not found\" — ' +\n 'remove require temporarily or test without it. ' +\n 'For per-event consent filtering, add consent: { marketing: true } to config.',\n '8. Use flow_validate to verify the result.',\n '9. For server sources: check if the package supports `ingest` configuration via package_get. Ingest extracts request metadata (IP, user-agent, headers) using mapping syntax. Transformers like fingerprint depend on ingest data.',\n '10. When adding a transformer that uses ingest fields, verify the source has `ingest` configured — otherwise ingest fields resolve to empty values.',\n '',\n 'Important:',\n '- Read the walkeros://reference/flow-schema resource to understand connection rules.',\n '- Sources connect to pre-collector transformers via `next`.',\n '- Destinations connect to post-collector transformers via `before`.',\n '- Routing supports string IDs, sequences (`[\"a\", \"b\"]`), or RouteConfig (`{ match?, next }` for gated single-target or `{ match?, one: [...] }` for first-match dispatch). Use `many` (instead of `one`) when every matching entry should run as an independent parallel flow — restricted to pre-collector positions. Omit `match` for always-match.',\n '- A transformer entry can be code-bearing (`code`), package-bearing (`package`), or a **pass-through step** (no `code`, no `package`). Pass-through synthesis is automatic at runtime. Three flavors of pass-through: `before`/`next`-only (named hop reusable across destinations), `cache`-only (dedup, rate-limit), or `mapping`-only (declarative event-to-event transform). A pass-through must declare at least one of `before`, `next`, `cache`, or `mapping`.',\n '- The `mapping` field on a transformer step uses the same `Mapping.Config` shape as destinations, but the semantic is event-to-event (mutates the event in place via `policy`, per-rule `policy`, `mapping[].name` for renames, `mapping[].ignore` to drop). Vendor-payload fields (`data`, `silent`) are no-ops at this position.',\n '- Closed schema: unknown top-level keys on a transformer step are errors (catches typos like `dedup` instead of `cache`). `code` + `package` together is a conflict.',\n '- Stores are passive — referenced via `$store.storeName` in env values.',\n '- Use variables ($var) for values that change between environments.',\n '- For required settings without defaults in the package schema, ask the user which value to use. Do not guess credentials, IDs, or environment-specific values.',\n '- If $meta.exports lists named exports, set the `code` field on the step to the chosen export name. If only one export exists, use it automatically.',\n ].join('\\n'),\n },\n },\n ],\n }),\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerSetupMappingPrompt(server: McpServer) {\n server.registerPrompt(\n 'setup-mapping',\n {\n description:\n 'Set up event mapping for any step in a flow. Teaches mapping syntax and uses package examples as templates.',\n argsSchema: {\n stepName: z\n .string()\n .optional()\n .describe('Step name in the flow (e.g., \"gtag\", \"meta\", \"express\")'),\n },\n },\n async ({ stepName }) => ({\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: [\n `Help me set up mapping${stepName ? ` for the \"${stepName}\" step` : ''}.`,\n '',\n 'Follow these steps:',\n '1. Read the walkeros://reference/mapping resource for syntax reference.',\n `2. ${stepName ? `Identify the package for \"${stepName}\" in the flow, then u` : 'U'}se package_get with section=\"examples\" to see the source output shape — mapping keys must match the actual events the source emits.`,\n '3. Ask whether this is source mapping (raw input → walkerOS events) or destination mapping (walkerOS events → vendor format).',\n '4. Ask which events to map (one at a time, not all at once).',\n '5. Generate one mapping rule using the package examples as templates. Validate it with flow_validate before moving to the next.',\n '6. Repeat for each event.',\n '',\n 'Mapping uses nested entity → action keys. Event \"product add\" maps to `{ \"product\": { \"add\": Rule } }`. Wildcards: `{ \"*\": { \"view\": Rule } }`.',\n '',\n 'Extract shared mapping shapes into variables, reference via $var.name (deep paths supported).',\n '',\n 'Policy and consent in mapping:',\n '- config.policy runs BEFORE mapping rules — use it to inject or redact fields on the event.',\n '- rule.policy runs after config.policy but before data transformation — use for event-specific pre-processing.',\n '- config.consent gates ALL events to this destination. rule.consent gates specific event types.',\n '- Individual value configs support consent: { marketing: true } for field-level gating.',\n ].join('\\n'),\n },\n },\n ],\n }),\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerManageContractPrompt(server: McpServer) {\n server.registerPrompt(\n 'manage-contract',\n {\n description:\n 'Create or update event contracts for a flow. Can generate contracts from existing mappings or scaffold mappings from contracts.',\n argsSchema: {\n direction: z\n .string()\n .optional()\n .describe(\n 'Direction: \"from-mappings\" (extract contract from existing mappings), ' +\n '\"from-scratch\" (create new contract), or \"to-mappings\" (scaffold mappings from contract)',\n ),\n },\n },\n async ({ direction }) => ({\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: [\n `Help me ${direction === 'to-mappings' ? 'scaffold mappings from a contract' : direction === 'from-mappings' ? 'generate a contract from existing mappings' : 'manage event contracts'}.`,\n '',\n 'Follow these steps:',\n '1. Read the walkeros://reference/contract resource to understand contract structure.',\n direction === 'from-mappings'\n ? '2. Read all destination mappings in the flow, extract referenced event fields, and generate a contract with those as required properties.'\n : direction === 'to-mappings'\n ? '2. Read the contract from the flow, then scaffold mapping stubs for each destination based on the contract fields.'\n : '2. Ask for entity-action names and required properties, or ask whether to generate from existing mappings.',\n '3. Use entity-action keying with wildcards (*.*, *.action, entity.*) for broad rules.',\n '4. Define JSON Schema for events, globals, context, custom, user, and consent.',\n '5. Use flow_validate to verify the contract.',\n '',\n 'Contracts and mappings are bidirectional:',\n '- **Contract → Mappings**: contract defines what events look like, mappings are scaffolded to match.',\n '- **Mappings → Contract**: existing mappings reveal which fields are used, contract formalizes them.',\n '',\n 'For server flows: if the contract references fields populated by ingest (e.g., user fingerprint hash), verify the source config.ingest extracts the needed request metadata.',\n '',\n 'Use $contract.name references to link contracts in the flow.',\n 'Contracts support extends for inheritance between event types.',\n ].join('\\n'),\n },\n },\n ],\n }),\n );\n}\n","export const SERVER_INSTRUCTIONS = `walkerOS is an open-source, privacy-first event data collection platform. Define event pipelines as code using JSON flow configurations.\n\n## Rules\n\n- **Never guess package names.** Always use \\`package_search\\` first to find exact names, then \\`package_get\\` for details.\n- **Never construct flow configs from memory.** Read \\`walkeros://reference/flow-schema\\` and use \\`package_get\\` for package-specific schemas.\n- **Always validate.** Run \\`flow_validate\\` after every config change. If validation fails, fix and re-validate.\n- **Simulate before deploying.** Use \\`flow_simulate\\` to test with mocked API calls before \\`flow_bundle\\` or \\`flow_push\\`.\n- **When a request fails,** call \\`diagnostics\\` to see which MCP/CLI versions, app URL, and backend you are on, plus whether the app is reachable.\n\n## Workflow\n\n1. \\`auth({ action: \"status\" })\\` — check if logged in, or \\`auth({ action: \"login\" })\\` to connect\n2. \\`project_manage({ action: \"list\" })\\` — see your projects\n3. \\`flow_manage({ action: \"list\" })\\` — see all flows across projects\n4. \\`flow_load({ platform: \"web\" })\\` or \\`flow_load({ source: \"./flow.json\" })\\` — create or load\n5. \\`package_search({ type: \"destination\", platform: \"web\" })\\` — discover packages\n6. \\`package_get({ package: \"...\" })\\` — read schemas, hints, examples\n7. Use the \\`add-step\\` prompt — guided step addition\n8. Use the \\`setup-mapping\\` prompt — event transformation config\n9. \\`flow_validate({ type: \"flow\", input: \"flow.json\" })\\` — verify\n10. \\`flow_simulate({ configPath: \"flow.json\", event: \"...\" })\\` — test\n11. \\`flow_manage({ action: \"update\", flowId: \"...\", content: {...} })\\` — save to cloud\n12. \\`deploy_manage({ action: \"deploy\", flowId: \"...\" })\\` — deploy\n\n## Architecture: Source → Collector → Destination(s)\n\nEvery component in a flow is a **step**: sources capture events, transformers process them, destinations deliver them, stores provide shared state. Steps connect via \\`next\\` (pre-collector) and \\`before\\` (post-collector) chains.\n\n## Flow Config Structure\n\n\\`\\`\\`json\n{\n \"version\": 4,\n \"flows\": {\n \"default\": {\n \"config\": { \"platform\": \"web\" },\n \"sources\": { \"<name>\": { \"package\": \"<npm-package>\", \"config\": {} } },\n \"destinations\": { \"<name>\": { \"package\": \"<npm-package>\", \"config\": { \"settings\": {} } } }\n }\n }\n}\n\\`\\`\\`\n\n- \\`version: 4\\` is required\n- Each flow declares its target via \\`config.platform\\` (\\`\"web\"\\` or \\`\"server\"\\`)\n- Destination settings go inside \\`config.settings\\`, not directly on the destination\n- Event format: \\`{ name: \"entity action\", data: {...}, entity: \"...\", action: \"...\" }\\`\n\n## Key Concepts\n\n- **Mapping** transforms events using data/map/loop/set/condition rules. Same syntax on sources and destinations. Mapping rules use NESTED entity → action keying: event name \"product add\" maps to \\`{ \"product\": { \"add\": Rule } }\\`. Wildcards: \\`{ \"*\": { \"view\": Rule } }\\`.\n- **Contracts** define event schemas using entity-action keying. Can generate FROM mappings or scaffold mappings FROM contracts.\n- **Variables** (\\$var, \\$env, \\$code, \\$store) enable DRY, environment-aware config. Whole-string \\`$var.name\\` references preserve native type (object/array/scalar); inline interpolation requires a scalar. Deep paths via \\`$var.name.deep.path\\`.\n- **Consent** gates destinations, mapping rules, and individual fields. Privacy-first by design.\n- **Routing** wires steps via \\`next\\` (pre-collector) and \\`before\\` (post-collector). A route is a string ID, a sequence (\\`[\"a\", \"b\"]\\`), or a RouteConfig (\\`{ match?, next }\\` or \\`{ match?, one: [...] }\\`). The \\`one\\` operator dispatches first-match against an ordered list of branches. Use \\`many\\` (instead of \\`one\\`) when every matching entry should run as an independent parallel flow — restricted to pre-collector positions. The optional \\`match\\` field is omitted to mean always-match (no wildcard literal).\n- **Pass-through steps** are transformer entries with no \\`code\\` and no \\`package\\`. The runtime synthesizes the push for them automatically. Three flavors share this shape: a \\`before\\` / \\`next\\`-only step (named hop reusable across destinations), a \\`cache\\`-only step (dedup, rate-limit), and a \\`mapping\\`-only step (declarative event-to-event transform). A pass-through must declare at least one of \\`before\\`, \\`next\\`, \\`cache\\`, or \\`mapping\\`.\n- **Mapping at the transformer position** uses the same \\`Mapping.Config\\` shape as destinations, but the semantic is event-to-event: \\`policy\\` and per-rule \\`policy\\`, \\`mapping[].name\\` (rename), \\`mapping[].ignore\\` (drop from chain), \\`consent\\`, and \\`include\\` apply. Vendor-payload fields (\\`data\\`, \\`silent\\`, \\`mapping[].data\\`) are no-ops at this position.\n- **Closed-schema rule on transformer entries:** known keys only. Operative keys are \\`code\\`, \\`package\\`, \\`before\\`, \\`next\\`, \\`cache\\`, \\`mapping\\`. Combined with structural keys (\\`config\\`, \\`env\\`, \\`validate\\`, \\`disabled\\`, \\`id\\`, etc.). Unknown top-level keys on a transformer step are errors (catches typos like \\`dedup: {}\\` instead of nested under \\`cache\\`). \\`code\\` + \\`package\\` together is a conflict.\n- **Cache** memoizes step output on a configured store. Set \\`cache.stop: true\\` to short-circuit the chain on HIT (sources default to stop-on-HIT). Set \\`cache.namespace\\` to prefix keys; omit it to write keys directly. \\`CacheRule.match\\` is optional, omit for always-match.\n\n## Simulation Tips\n\n- Destinations with \\`require: [\"consent\"]\\` stay **pending** until a \\`\"walker consent\"\\` event fires. Simulation will error \"not found\" for pending destinations, remove \\`require\\` from config when testing with \\`flow_simulate\\`.\n- Destinations with \\`consent: { marketing: true }\\` silently skip events that lack matching consent. Include \\`consent\\` in the event: \\`{ name: \"page view\", data: {...}, consent: { marketing: true } }\\`.\n- **Mapping** transforms event names and data at the destination level. Events without a matching mapping rule pass through unmodified.\n- **Policy** modifies the event before mapping runs, use it to inject computed fields or redact sensitive data.\n\n## Reference Resources\n\nRead these before constructing configs manually: \\`walkeros://reference/flow-schema\\`, \\`walkeros://reference/mapping\\`, \\`walkeros://reference/event-model\\`, \\`walkeros://reference/consent\\`, \\`walkeros://reference/variables\\`, \\`walkeros://reference/contract\\`, \\`walkeros://reference/examples\\`.`;\n","import { randomUUID } from 'crypto';\nimport { telemetry } from '@walkeros/cli';\n\n/**\n * Options for the MCP telemetry emitter wrapper.\n *\n * `clientInfo` mirrors the MCP SDK shape negotiated during initialize.\n * When the client doesn't send one, we record the client name as \"unknown\"\n * inside the per-event data so downstream analytics can still bucket the\n * event. The walkerOS source identifier is the package itself (`mcp`), not\n * the client.\n */\nexport interface McpEmitterOptions {\n clientInfo?: { name: string; version: string };\n packageVersion: string;\n}\n\n/**\n * MCP-specific event emitter.\n *\n * Wraps `@walkeros/cli`'s `telemetry.createEmitter` with:\n * - `source.type` fixed to `\"mcp\"`\n * - `source.platform` fixed to `\"server\"`\n * - per-emission `source.tool` for `cmd invoke` events\n * - a fresh session UUID per MCP server instance\n *\n * Surfaces the narrow set of events the MCP server needs to emit.\n */\nexport interface McpEmitter {\n emitStart(): Promise<void>;\n emitInvoke(\n tool: string,\n outcome: 'success' | 'error',\n timingMs: number,\n ): Promise<void>;\n emitError(kind: 'uncaught' | 'unhandledRejection' | 'startup'): Promise<void>;\n}\n\n/**\n * Build an MCP telemetry emitter.\n *\n * All consent, debug, and endpoint resolution is delegated to the CLI's\n * underlying `telemetry.createEmitter`. This wrapper only provides\n * MCP-specific field mapping and event shorthands.\n */\nexport async function createMcpEmitter(\n opts: McpEmitterOptions,\n): Promise<McpEmitter> {\n const clientName = opts.clientInfo?.name || 'unknown';\n const session = randomUUID();\n\n const emitter = await telemetry.createEmitter({\n source: {\n type: 'mcp',\n platform: 'server',\n },\n packageVersion: opts.packageVersion,\n session,\n });\n\n return {\n async emitStart() {\n const ci = telemetry.getCiInfo();\n await emitter.send('mcp start', {\n ...ci,\n client: clientName,\n });\n },\n async emitInvoke(tool, outcome, timingMs) {\n await emitter.send(\n 'cmd invoke',\n { outcome, client: clientName },\n timingMs,\n { tool },\n );\n },\n async emitError(kind) {\n await emitter.send('error throw', { kind });\n },\n };\n}\n","import {\n listProjects,\n getProject,\n createProject,\n updateProject,\n deleteProject,\n setDefaultProject,\n getDefaultProject,\n listAllFlows,\n listFlows,\n getFlow,\n createFlow,\n updateFlow,\n deleteFlow,\n duplicateFlow,\n listPreviews,\n getPreview,\n createPreview,\n deletePreview,\n listSecrets,\n createSecret,\n updateSecret,\n deleteSecret,\n deploy,\n listDeployments,\n getDeploymentBySlug,\n deleteDeployment,\n requestDeviceCode,\n pollForToken,\n whoami,\n resolveToken,\n resolveAppUrl,\n deleteConfig,\n feedback,\n getFeedbackPreference,\n setFeedbackPreference,\n} from '@walkeros/cli';\nimport type {\n DeviceCodeResult,\n PollResult,\n ListFlowsOptions,\n DeployOptions,\n ListDeploymentsOptions,\n ListPreviewsOptions,\n GetPreviewOptions,\n CreatePreviewOptions,\n DeletePreviewOptions,\n ListSecretsOptions,\n CreateSecretOptions,\n UpdateSecretOptions,\n DeleteSecretOptions,\n FeedbackOptions,\n} from '@walkeros/cli';\n\nimport type { ToolClient } from './tool-client.js';\n\n/**\n * Default ToolClient implementation backed by @walkeros/cli. Every method\n * delegates to the CLI's programmatic API, which in turn talks to the\n * walkerOS app over HTTPS via openapi-fetch. Token resolution and the\n * base URL come from the CLI's config file and environment\n * (WALKEROS_TOKEN, WALKEROS_APP_URL), so no constructor args are required.\n */\nexport class HttpToolClient implements ToolClient {\n async listProjects(options?: {\n cursor?: string;\n limit?: number;\n }): Promise<unknown> {\n return listProjects(options);\n }\n async getProject(options: { projectId?: string }): Promise<unknown> {\n return getProject(options);\n }\n async createProject(options: { name: string }): Promise<unknown> {\n return createProject(options);\n }\n async updateProject(options: {\n projectId?: string;\n name: string;\n }): Promise<unknown> {\n return updateProject(options);\n }\n async deleteProject(options: { projectId?: string }): Promise<unknown> {\n return deleteProject(options);\n }\n setDefaultProject(projectId: string): void {\n setDefaultProject(projectId);\n }\n getDefaultProject(): string | null {\n return getDefaultProject();\n }\n\n async listAllFlows(options?: {\n sort?: string;\n order?: 'asc' | 'desc';\n includeDeleted?: boolean;\n cursor?: string;\n limit?: number;\n }): Promise<unknown> {\n return listAllFlows(options as Parameters<typeof listAllFlows>[0]);\n }\n async listFlows(options: ListFlowsOptions): Promise<unknown> {\n return listFlows(options);\n }\n async getFlow(options: {\n flowId: string;\n projectId?: string;\n fields?: string[];\n }): Promise<unknown> {\n return getFlow(options);\n }\n async createFlow(options: {\n name: string;\n content: Record<string, unknown>;\n projectId?: string;\n }): Promise<unknown> {\n return createFlow(options);\n }\n async updateFlow(options: {\n flowId: string;\n projectId?: string;\n name?: string;\n content?: Record<string, unknown>;\n mergePatch?: boolean;\n }): Promise<unknown> {\n return updateFlow(options);\n }\n async deleteFlow(options: {\n flowId: string;\n projectId?: string;\n }): Promise<unknown> {\n return deleteFlow(options);\n }\n async duplicateFlow(options: {\n flowId: string;\n name?: string;\n projectId?: string;\n }): Promise<unknown> {\n return duplicateFlow(options);\n }\n\n async listPreviews(options: ListPreviewsOptions): Promise<unknown> {\n return listPreviews(options);\n }\n async getPreview(options: GetPreviewOptions): Promise<unknown> {\n return getPreview(options);\n }\n async createPreview(options: CreatePreviewOptions): Promise<unknown> {\n return createPreview(options);\n }\n async deletePreview(options: DeletePreviewOptions): Promise<unknown> {\n return deletePreview(options);\n }\n\n async listSecrets(options: ListSecretsOptions): Promise<unknown> {\n return listSecrets(options);\n }\n async createSecret(options: CreateSecretOptions): Promise<unknown> {\n return createSecret(options);\n }\n async updateSecret(options: UpdateSecretOptions): Promise<unknown> {\n return updateSecret(options);\n }\n async deleteSecret(options: DeleteSecretOptions): Promise<unknown> {\n return deleteSecret(options);\n }\n\n async deploy(options: DeployOptions): Promise<unknown> {\n return deploy(options);\n }\n async listDeployments(options: ListDeploymentsOptions): Promise<unknown> {\n return listDeployments(options);\n }\n async getDeploymentBySlug(options: {\n slug: string;\n projectId?: string;\n }): Promise<unknown> {\n return getDeploymentBySlug(options);\n }\n async deleteDeployment(options: {\n slug: string;\n projectId?: string;\n }): Promise<unknown> {\n return deleteDeployment(options);\n }\n\n async requestDeviceCode(): Promise<DeviceCodeResult> {\n return requestDeviceCode();\n }\n async pollForToken(\n deviceCode: string,\n options?: { timeoutMs?: number },\n ): Promise<PollResult> {\n return pollForToken(deviceCode, options);\n }\n async whoami(): Promise<unknown> {\n return whoami();\n }\n resolveToken(): { token: string; source: 'env' | 'config' } | null {\n return resolveToken();\n }\n deleteConfig(): boolean {\n return deleteConfig();\n }\n\n /**\n * Unauthenticated reachability probe of the app's PUBLIC `/api/health`\n * route. Uses a plain `fetch` (no `createApiClient`, which throws when no\n * token is set) so diagnostics works logged-out. Resolves\n * `{ reachable: false }` only on a real network/timeout failure.\n */\n async checkHealth(): Promise<{\n reachable: boolean;\n status?: string;\n version?: string;\n }> {\n try {\n const res = await fetch(`${resolveAppUrl()}/api/health`, {\n signal: AbortSignal.timeout(5000),\n });\n // A non-2xx status still means the app is reachable; only network or\n // timeout errors (the catch below) mark it unreachable.\n const body: unknown = await res.json().catch(() => undefined);\n const result: { reachable: boolean; status?: string; version?: string } =\n { reachable: true };\n if (body && typeof body === 'object') {\n const record = body as Record<string, unknown>;\n if (typeof record.status === 'string') result.status = record.status;\n if (typeof record.version === 'string') result.version = record.version;\n }\n return result;\n } catch {\n return { reachable: false };\n }\n }\n\n async submitFeedback(text: string, options?: FeedbackOptions): Promise<void> {\n await feedback(text, options);\n }\n getFeedbackPreference(): boolean | undefined {\n return getFeedbackPreference();\n }\n setFeedbackPreference(anonymous: boolean): void {\n setFeedbackPreference(anonymous);\n }\n}\n"],"mappings":"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","names":["path","schemas","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","schemas","annotations","mcpResult","mcpError","z","schemas","mcpResult","mcpError","bundle","TITLE","DESCRIPTION","inputSchema","schemas","z","annotations","mcpResult","mcpError","z","schemas","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","schemas","z","annotations","mcpError","mcpResult","z","loadJsonConfig","mcpResult","mcpError","cache","cache","TITLE","DESCRIPTION","inputSchema","z","annotations","loadJsonConfig","mcpResult","mcpError","z","fetchPackage","mcpResult","mcpError","z","mcpResult","fetchPackage","mcpError","z","loadJsonConfig","mcpResult","mcpError","API_ID_PREFIX","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","loadJsonConfig","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","annotations","mcpResult","TITLE","DESCRIPTION","inputSchema","annotations","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","annotations","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","data","safe","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","z","mcpResult","mcpError","TITLE","DESCRIPTION","inputSchema","z","annotations","mcpError","mcpResult","schemas","schemas","require","z","z","z","resolveAppUrl"]}
|